Avoid useless calls
This commit is contained in:
parent
bb4963b617
commit
dd9784efa7
|
@ -16,11 +16,9 @@ package fr.gouv.etalab.mastodon.asynctasks;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
import android.os.SystemClock;
|
|
||||||
|
|
||||||
import java.lang.ref.WeakReference;
|
import java.lang.ref.WeakReference;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import fr.gouv.etalab.mastodon.client.API;
|
import fr.gouv.etalab.mastodon.client.API;
|
||||||
import fr.gouv.etalab.mastodon.client.APIResponse;
|
import fr.gouv.etalab.mastodon.client.APIResponse;
|
||||||
import fr.gouv.etalab.mastodon.interfaces.OnRetrieveRepliesInterface;
|
import fr.gouv.etalab.mastodon.interfaces.OnRetrieveRepliesInterface;
|
||||||
|
@ -35,12 +33,12 @@ public class RetrieveRepliesAsyncTask extends AsyncTask<Void, Void, Void> {
|
||||||
|
|
||||||
private APIResponse apiResponse;
|
private APIResponse apiResponse;
|
||||||
private OnRetrieveRepliesInterface listener;
|
private OnRetrieveRepliesInterface listener;
|
||||||
private List<fr.gouv.etalab.mastodon.client.Entities.Status> statuses;
|
private fr.gouv.etalab.mastodon.client.Entities.Status status;
|
||||||
private WeakReference<Context> contextReference;
|
private WeakReference<Context> contextReference;
|
||||||
|
|
||||||
public RetrieveRepliesAsyncTask(Context context, List<fr.gouv.etalab.mastodon.client.Entities.Status> statuses, OnRetrieveRepliesInterface onRetrieveRepliesInterface){
|
public RetrieveRepliesAsyncTask(Context context, fr.gouv.etalab.mastodon.client.Entities.Status status, OnRetrieveRepliesInterface onRetrieveRepliesInterface){
|
||||||
this.contextReference = new WeakReference<>(context);
|
this.contextReference = new WeakReference<>(context);
|
||||||
this.statuses = statuses;
|
this.status = status;
|
||||||
this.listener = onRetrieveRepliesInterface;
|
this.listener = onRetrieveRepliesInterface;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,12 +46,11 @@ public class RetrieveRepliesAsyncTask extends AsyncTask<Void, Void, Void> {
|
||||||
protected Void doInBackground(Void... params) {
|
protected Void doInBackground(Void... params) {
|
||||||
|
|
||||||
API api = new API(this.contextReference.get());
|
API api = new API(this.contextReference.get());
|
||||||
for (fr.gouv.etalab.mastodon.client.Entities.Status status : statuses) {
|
|
||||||
fr.gouv.etalab.mastodon.client.Entities.Context statusContext = api.getStatusContext((status.getReblog() != null) ? status.getReblog().getId() : status.getId());
|
fr.gouv.etalab.mastodon.client.Entities.Context statusContext = api.getStatusContext((status.getReblog() != null) ? status.getReblog().getId() : status.getId());
|
||||||
SystemClock.sleep(25);
|
|
||||||
status.setReplies(statusContext.getDescendants());
|
status.setReplies(statusContext.getDescendants());
|
||||||
}
|
|
||||||
apiResponse = new APIResponse();
|
apiResponse = new APIResponse();
|
||||||
|
List<fr.gouv.etalab.mastodon.client.Entities.Status> statuses = new ArrayList<>();
|
||||||
|
statuses.add(status);
|
||||||
apiResponse.setStatuses(statuses);
|
apiResponse.setStatuses(statuses);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -86,6 +86,7 @@ import fr.gouv.etalab.mastodon.activities.ShowConversationActivity;
|
||||||
import fr.gouv.etalab.mastodon.activities.TootActivity;
|
import fr.gouv.etalab.mastodon.activities.TootActivity;
|
||||||
import fr.gouv.etalab.mastodon.asynctasks.PostActionAsyncTask;
|
import fr.gouv.etalab.mastodon.asynctasks.PostActionAsyncTask;
|
||||||
import fr.gouv.etalab.mastodon.asynctasks.RetrieveFeedsAsyncTask;
|
import fr.gouv.etalab.mastodon.asynctasks.RetrieveFeedsAsyncTask;
|
||||||
|
import fr.gouv.etalab.mastodon.asynctasks.RetrieveRepliesAsyncTask;
|
||||||
import fr.gouv.etalab.mastodon.client.API;
|
import fr.gouv.etalab.mastodon.client.API;
|
||||||
import fr.gouv.etalab.mastodon.client.APIResponse;
|
import fr.gouv.etalab.mastodon.client.APIResponse;
|
||||||
import fr.gouv.etalab.mastodon.client.Entities.Attachment;
|
import fr.gouv.etalab.mastodon.client.Entities.Attachment;
|
||||||
|
@ -97,6 +98,7 @@ import fr.gouv.etalab.mastodon.helper.Helper;
|
||||||
import fr.gouv.etalab.mastodon.interfaces.OnPostActionInterface;
|
import fr.gouv.etalab.mastodon.interfaces.OnPostActionInterface;
|
||||||
import fr.gouv.etalab.mastodon.interfaces.OnRetrieveEmojiInterface;
|
import fr.gouv.etalab.mastodon.interfaces.OnRetrieveEmojiInterface;
|
||||||
import fr.gouv.etalab.mastodon.interfaces.OnRetrieveFeedsInterface;
|
import fr.gouv.etalab.mastodon.interfaces.OnRetrieveFeedsInterface;
|
||||||
|
import fr.gouv.etalab.mastodon.interfaces.OnRetrieveRepliesInterface;
|
||||||
import fr.gouv.etalab.mastodon.interfaces.OnTranslatedInterface;
|
import fr.gouv.etalab.mastodon.interfaces.OnTranslatedInterface;
|
||||||
import fr.gouv.etalab.mastodon.translation.GoogleTranslateQuery;
|
import fr.gouv.etalab.mastodon.translation.GoogleTranslateQuery;
|
||||||
import fr.gouv.etalab.mastodon.translation.YandexQuery;
|
import fr.gouv.etalab.mastodon.translation.YandexQuery;
|
||||||
|
@ -111,7 +113,7 @@ import static fr.gouv.etalab.mastodon.helper.Helper.changeDrawableColor;
|
||||||
* Created by Thomas on 24/04/2017.
|
* Created by Thomas on 24/04/2017.
|
||||||
* Adapter for Status
|
* Adapter for Status
|
||||||
*/
|
*/
|
||||||
public class StatusListAdapter extends RecyclerView.Adapter implements OnPostActionInterface, OnTranslatedInterface, OnRetrieveFeedsInterface, OnRetrieveEmojiInterface {
|
public class StatusListAdapter extends RecyclerView.Adapter implements OnPostActionInterface, OnTranslatedInterface, OnRetrieveFeedsInterface, OnRetrieveEmojiInterface, OnRetrieveRepliesInterface {
|
||||||
|
|
||||||
private Context context;
|
private Context context;
|
||||||
private List<Status> statuses;
|
private List<Status> statuses;
|
||||||
|
@ -167,6 +169,24 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
|
||||||
return statuses.size();
|
return statuses.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onRetrieveReplies(APIResponse apiResponse) {
|
||||||
|
if( apiResponse.getError() != null || apiResponse.getStatuses() == null || apiResponse.getStatuses().size() == 0){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
List<Status> modifiedStatus = apiResponse.getStatuses();
|
||||||
|
for(Status stmp: modifiedStatus){
|
||||||
|
for(Status status: statuses){
|
||||||
|
if( status.getId().equals(stmp.getId()))
|
||||||
|
if( stmp.getReplies() != null )
|
||||||
|
status.setReplies(stmp.getReplies());
|
||||||
|
else
|
||||||
|
status.setReplies(new ArrayList<Status>());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
statusListAdapter.notifyDataSetChanged();
|
||||||
|
}
|
||||||
|
|
||||||
private class ViewHolderEmpty extends RecyclerView.ViewHolder{
|
private class ViewHolderEmpty extends RecyclerView.ViewHolder{
|
||||||
ViewHolderEmpty(View itemView) {
|
ViewHolderEmpty(View itemView) {
|
||||||
super(itemView);
|
super(itemView);
|
||||||
|
@ -317,8 +337,16 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
|
||||||
DisplayImageOptions options = new DisplayImageOptions.Builder().displayer(new RoundedBitmapDisplayer(10)).cacheInMemory(false)
|
DisplayImageOptions options = new DisplayImageOptions.Builder().displayer(new RoundedBitmapDisplayer(10)).cacheInMemory(false)
|
||||||
.cacheOnDisk(true).resetViewBeforeLoading(true).build();
|
.cacheOnDisk(true).resetViewBeforeLoading(true).build();
|
||||||
|
|
||||||
|
|
||||||
final SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
|
final SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
|
||||||
|
//Retrieves replies
|
||||||
|
if( type == RetrieveFeedsAsyncTask.Type.HOME ) {
|
||||||
|
boolean showPreview = sharedpreferences.getBoolean(Helper.SET_PREVIEW_REPLIES, false);
|
||||||
|
//Retrieves attached replies to a toot
|
||||||
|
if (showPreview && status.getReplies() == null) {
|
||||||
|
new RetrieveRepliesAsyncTask(context, status, StatusListAdapter.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
final String userId = sharedpreferences.getString(Helper.PREF_KEY_ID, null);
|
final String userId = sharedpreferences.getString(Helper.PREF_KEY_ID, null);
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,6 @@ import android.support.v4.view.ViewCompat;
|
||||||
import android.support.v4.widget.SwipeRefreshLayout;
|
import android.support.v4.widget.SwipeRefreshLayout;
|
||||||
import android.support.v7.widget.LinearLayoutManager;
|
import android.support.v7.widget.LinearLayoutManager;
|
||||||
import android.support.v7.widget.RecyclerView;
|
import android.support.v7.widget.RecyclerView;
|
||||||
import android.util.Log;
|
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
@ -35,12 +34,10 @@ import java.util.List;
|
||||||
|
|
||||||
import fr.gouv.etalab.mastodon.activities.MainActivity;
|
import fr.gouv.etalab.mastodon.activities.MainActivity;
|
||||||
import fr.gouv.etalab.mastodon.asynctasks.RetrieveMissingFeedsAsyncTask;
|
import fr.gouv.etalab.mastodon.asynctasks.RetrieveMissingFeedsAsyncTask;
|
||||||
import fr.gouv.etalab.mastodon.asynctasks.RetrieveRepliesAsyncTask;
|
|
||||||
import fr.gouv.etalab.mastodon.client.APIResponse;
|
import fr.gouv.etalab.mastodon.client.APIResponse;
|
||||||
import fr.gouv.etalab.mastodon.drawers.StatusListAdapter;
|
import fr.gouv.etalab.mastodon.drawers.StatusListAdapter;
|
||||||
import fr.gouv.etalab.mastodon.helper.Helper;
|
import fr.gouv.etalab.mastodon.helper.Helper;
|
||||||
import fr.gouv.etalab.mastodon.interfaces.OnRetrieveMissingFeedsInterface;
|
import fr.gouv.etalab.mastodon.interfaces.OnRetrieveMissingFeedsInterface;
|
||||||
import fr.gouv.etalab.mastodon.interfaces.OnRetrieveRepliesInterface;
|
|
||||||
import fr.gouv.etalab.mastodon.services.StreamingFederatedTimelineService;
|
import fr.gouv.etalab.mastodon.services.StreamingFederatedTimelineService;
|
||||||
import fr.gouv.etalab.mastodon.services.StreamingLocalTimelineService;
|
import fr.gouv.etalab.mastodon.services.StreamingLocalTimelineService;
|
||||||
import mastodon.etalab.gouv.fr.mastodon.R;
|
import mastodon.etalab.gouv.fr.mastodon.R;
|
||||||
|
@ -53,7 +50,7 @@ import fr.gouv.etalab.mastodon.interfaces.OnRetrieveFeedsInterface;
|
||||||
* Created by Thomas on 24/04/2017.
|
* Created by Thomas on 24/04/2017.
|
||||||
* Fragment to display content related to status
|
* Fragment to display content related to status
|
||||||
*/
|
*/
|
||||||
public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsInterface, OnRetrieveRepliesInterface, OnRetrieveMissingFeedsInterface {
|
public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsInterface, OnRetrieveMissingFeedsInterface {
|
||||||
|
|
||||||
|
|
||||||
private boolean flag_loading;
|
private boolean flag_loading;
|
||||||
|
@ -291,14 +288,7 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn
|
||||||
swipeRefreshLayout.setRefreshing(false);
|
swipeRefreshLayout.setRefreshing(false);
|
||||||
firstLoad = false;
|
firstLoad = false;
|
||||||
|
|
||||||
//Retrieves replies
|
|
||||||
if(statuses != null && statuses.size() > 0 && type == RetrieveFeedsAsyncTask.Type.HOME ) {
|
|
||||||
boolean showPreview = sharedpreferences.getBoolean(Helper.SET_PREVIEW_REPLIES, false);
|
|
||||||
//Retrieves attached replies to a toot
|
|
||||||
if (showPreview) {
|
|
||||||
new RetrieveRepliesAsyncTask(context, statuses, DisplayStatusFragment.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -491,24 +481,6 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onRetrieveReplies(APIResponse apiResponse) {
|
|
||||||
if( apiResponse.getError() != null || apiResponse.getStatuses() == null || apiResponse.getStatuses().size() == 0){
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
List<Status> modifiedStatus = apiResponse.getStatuses();
|
|
||||||
for(Status stmp: modifiedStatus){
|
|
||||||
for(Status status: statuses){
|
|
||||||
if( status.getId().equals(stmp.getId()))
|
|
||||||
if( stmp.getReplies() != null )
|
|
||||||
status.setReplies(stmp.getReplies());
|
|
||||||
else
|
|
||||||
status.setReplies(new ArrayList<Status>());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
statusListAdapter.notifyDataSetChanged();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRetrieveMissingFeeds(List<Status> statuses) {
|
public void onRetrieveMissingFeeds(List<Status> statuses) {
|
||||||
if( statuses != null && statuses.size() > 0) {
|
if( statuses != null && statuses.size() > 0) {
|
||||||
|
|
Loading…
Reference in New Issue