diff options
Diffstat (limited to 'app/src/main/java/app/fedilab/android/mastodon/jobs/FetchHomeWorker.java')
-rw-r--r-- | app/src/main/java/app/fedilab/android/mastodon/jobs/FetchHomeWorker.java | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/app/src/main/java/app/fedilab/android/mastodon/jobs/FetchHomeWorker.java b/app/src/main/java/app/fedilab/android/mastodon/jobs/FetchHomeWorker.java index 5b2e899a6..422f1e99e 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/jobs/FetchHomeWorker.java +++ b/app/src/main/java/app/fedilab/android/mastodon/jobs/FetchHomeWorker.java @@ -169,6 +169,8 @@ public class FetchHomeWorker extends Worker { int call = 0; String max_id = null; MastodonTimelinesService mastodonTimelinesService = init(account.instance); + int insertValue = 0; + StatusCache lastStatusCache = null; while (canContinue && call < max_calls) { Call<List<Status>> homeCall = mastodonTimelinesService.getHome(account.token, max_id, null, null, status_per_page, null); if (homeCall != null) { @@ -184,12 +186,14 @@ public class FetchHomeWorker extends Worker { statusCache.status = status; statusCache.type = Timeline.TimeLineEnum.HOME; statusCache.status_id = status.id; + lastStatusCache = statusCache; try { - statusCacheDAO.insertOrUpdate(statusCache, Timeline.TimeLineEnum.HOME.getValue()); + insertValue = statusCacheDAO.insertOrUpdate(statusCache, Timeline.TimeLineEnum.HOME.getValue()); } catch (DBException e) { e.printStackTrace(); } } + Pagination pagination = MastodonHelper.getPagination(homeResponse.headers()); if (pagination.max_id != null) { max_id = pagination.max_id; @@ -211,6 +215,17 @@ public class FetchHomeWorker extends Worker { } call++; } + //insertValue is for last status and equals zero if updated or 1 if inserted + if (lastStatusCache != null && insertValue == 1) { //Last inserted message was not in cache. + StatusCache statusCacheDAO = new StatusCache(getApplicationContext()); + lastStatusCache.status.isFetchMore = true; + lastStatusCache.status.positionFetchMore = Status.PositionFetchMore.TOP; + try { + statusCacheDAO.updateIfExists(lastStatusCache); + } catch (DBException e) { + throw new RuntimeException(e); + } + } } } |