From 8ddcbf6f17d36d0d59ff3ea8230a6596ba836d0d Mon Sep 17 00:00:00 2001 From: stom79 Date: Thu, 23 Aug 2018 16:10:57 +0200 Subject: [PATCH] Fix an issue for refreshing remote instances --- .../asynctasks/RetrieveMissingFeedsAsyncTask.java | 11 +++++++++++ .../main/java/fr/gouv/etalab/mastodon/client/API.java | 10 +++++++++- .../mastodon/fragments/DisplayStatusFragment.java | 5 ++++- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/asynctasks/RetrieveMissingFeedsAsyncTask.java b/app/src/main/java/fr/gouv/etalab/mastodon/asynctasks/RetrieveMissingFeedsAsyncTask.java index 4315a8856..b8fb4a9d9 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/asynctasks/RetrieveMissingFeedsAsyncTask.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/asynctasks/RetrieveMissingFeedsAsyncTask.java @@ -38,6 +38,7 @@ public class RetrieveMissingFeedsAsyncTask extends AsyncTask { private List statuses = new ArrayList<>(); private RetrieveFeedsAsyncTask.Type type; private WeakReference contextReference; + private String remoteInstance; public RetrieveMissingFeedsAsyncTask(Context context, String since_id, RetrieveFeedsAsyncTask.Type type, OnRetrieveMissingFeedsInterface onRetrieveMissingFeedsInterface){ this.contextReference = new WeakReference<>(context); @@ -46,6 +47,14 @@ public class RetrieveMissingFeedsAsyncTask extends AsyncTask { this.type = type; } + public RetrieveMissingFeedsAsyncTask(Context context, String remoteInstance, String since_id, RetrieveFeedsAsyncTask.Type type, OnRetrieveMissingFeedsInterface onRetrieveMissingFeedsInterface){ + this.contextReference = new WeakReference<>(context); + this.since_id = since_id; + this.listener = onRetrieveMissingFeedsInterface; + this.type = type; + this.remoteInstance = remoteInstance; + } + @Override protected Void doInBackground(Void... params) { @@ -58,6 +67,8 @@ public class RetrieveMissingFeedsAsyncTask extends AsyncTask { apiResponse = api.getPublicTimelineSinceId(true, since_id); else if( type == RetrieveFeedsAsyncTask.Type.PUBLIC) apiResponse = api.getPublicTimelineSinceId(false, since_id); + else if (type == RetrieveFeedsAsyncTask.Type.REMOTE_INSTANCE) + apiResponse = api.getInstanceTimelineSinceId(remoteInstance, since_id); if (apiResponse != null) { tempStatus = apiResponse.getStatuses(); if( tempStatus != null) diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/client/API.java b/app/src/main/java/fr/gouv/etalab/mastodon/client/API.java index 6bbbcf3b4..d7ca53868 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/client/API.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/client/API.java @@ -562,7 +562,15 @@ public class API { return getPublicTimeline(local, null, null, since_id, tootPerPage); } - + /** + * Retrieves instance timeline since an Id value *synchronously* + * @param instanceName String instance name + * @param since_id String id since + * @return APIResponse + */ + public APIResponse getInstanceTimelineSinceId(String instanceName, String since_id) { + return getPublicTimeline(true, null, null, since_id, tootPerPage); + } /** * Retrieves public timeline for the account *synchronously* diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayStatusFragment.java b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayStatusFragment.java index c8589e80e..d96d675d9 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayStatusFragment.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayStatusFragment.java @@ -476,7 +476,10 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn * @param sinceId String */ public void retrieveMissingToots(String sinceId){ - asyncTask = new RetrieveMissingFeedsAsyncTask(context, sinceId, type, DisplayStatusFragment.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); + if (type != RetrieveFeedsAsyncTask.Type.REMOTE_INSTANCE) + asyncTask = new RetrieveMissingFeedsAsyncTask(context, sinceId, type, DisplayStatusFragment.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); + else + asyncTask = new RetrieveMissingFeedsAsyncTask(context, remoteInstance, sinceId, type, DisplayStatusFragment.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } /**