Some improvements
This commit is contained in:
parent
8b816b5a70
commit
8f641fba77
|
@ -565,7 +565,11 @@ public class API {
|
|||
Status status = new Status();
|
||||
try {
|
||||
status.setId(resobj.get("id").toString());
|
||||
status.setUri(resobj.get("uri").toString());
|
||||
if( resobj.has("uri")) {
|
||||
status.setUri(resobj.get("uri").toString());
|
||||
}else {
|
||||
status.setUri(resobj.get("id").toString());
|
||||
}
|
||||
status.setCreated_at(Helper.mstStringToDate(context, resobj.get("created_at").toString()));
|
||||
status.setIn_reply_to_id(resobj.get("in_reply_to_id").toString());
|
||||
status.setIn_reply_to_account_id(resobj.get("in_reply_to_account_id").toString());
|
||||
|
|
|
@ -187,6 +187,7 @@ public class HttpsConnection {
|
|||
httpsURLConnection.setRequestProperty("Content-Type", "application/json");
|
||||
httpsURLConnection.setRequestProperty("Accept", "application/json");
|
||||
httpsURLConnection.setUseCaches(true);
|
||||
httpsURLConnection.setDefaultUseCaches(true);
|
||||
httpsURLConnection.setSSLSocketFactory(new TLSSocketFactory(this.instance));
|
||||
if (token != null && !token.startsWith("Basic "))
|
||||
httpsURLConnection.setRequestProperty("Authorization", "Bearer " + token);
|
||||
|
@ -287,6 +288,7 @@ public class HttpsConnection {
|
|||
httpsURLConnection.setRequestProperty("User-Agent", USER_AGENT);
|
||||
httpsURLConnection.setSSLSocketFactory(new TLSSocketFactory(this.instance));
|
||||
httpsURLConnection.setRequestMethod("GET");
|
||||
httpsURLConnection.setDefaultUseCaches(true);
|
||||
httpsURLConnection.setUseCaches(true);
|
||||
String response;
|
||||
if (httpsURLConnection.getResponseCode() >= 200 && httpsURLConnection.getResponseCode() < 400) {
|
||||
|
|
|
@ -35,6 +35,7 @@ import android.widget.TextView;
|
|||
import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
@ -42,7 +43,14 @@ import androidx.recyclerview.widget.RecyclerView;
|
|||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
||||
|
||||
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.bumptech.glide.ListPreloader;
|
||||
import com.bumptech.glide.RequestBuilder;
|
||||
import com.bumptech.glide.integration.recyclerview.RecyclerViewPreloader;
|
||||
import com.bumptech.glide.util.FixedPreloadSizeProvider;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
@ -58,6 +66,7 @@ import app.fedilab.android.asynctasks.RetrievePeertubeSearchAsyncTask;
|
|||
import app.fedilab.android.asynctasks.UpdateAccountInfoAsyncTask;
|
||||
import app.fedilab.android.client.APIResponse;
|
||||
import app.fedilab.android.client.Entities.Account;
|
||||
import app.fedilab.android.client.Entities.Attachment;
|
||||
import app.fedilab.android.client.Entities.Conversation;
|
||||
import app.fedilab.android.client.Entities.Peertube;
|
||||
import app.fedilab.android.client.Entities.RemoteInstance;
|
||||
|
@ -194,6 +203,13 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn
|
|||
c1, c2, c1
|
||||
);
|
||||
lv_status = rootView.findViewById(R.id.lv_status);
|
||||
ListPreloader.PreloadSizeProvider sizeProvider =
|
||||
new FixedPreloadSizeProvider(640, 480);
|
||||
ListPreloader.PreloadModelProvider modelProvider = new MyPreloadModelProvider();
|
||||
RecyclerViewPreloader<ContactsContract.CommonDataKinds.Photo> preloader =
|
||||
new RecyclerViewPreloader<>(
|
||||
Glide.with(context), modelProvider, sizeProvider, 20 );
|
||||
lv_status.addOnScrollListener(preloader);
|
||||
|
||||
mainLoader = rootView.findViewById(R.id.loader);
|
||||
nextElementLoader = rootView.findViewById(R.id.loading_next_status);
|
||||
|
@ -1231,4 +1247,34 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private class MyPreloadModelProvider implements ListPreloader.PreloadModelProvider<String> {
|
||||
@Override
|
||||
@NonNull
|
||||
public List<String> getPreloadItems(int position) {
|
||||
if( statuses == null || statuses.size() == 0){
|
||||
return Collections.emptyList();
|
||||
}
|
||||
Status status = statuses.get(position);
|
||||
if (status.getMedia_attachments() == null || status.getMedia_attachments().size() ==0) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
List<String> preloaded_urls = new ArrayList<>();
|
||||
for(Attachment attachment: status.getMedia_attachments()) {
|
||||
preloaded_urls.add(attachment.getPreview_url());
|
||||
}
|
||||
return preloaded_urls;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public RequestBuilder<?> getPreloadRequestBuilder(@NonNull String url) {
|
||||
return Glide.with(context)
|
||||
.load(url)
|
||||
.override(640, 480);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue