Loading app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Status.java +5 −2 Original line number Diff line number Diff line Loading @@ -112,11 +112,14 @@ public class Status implements Serializable, Cloneable { @SerializedName("reactions") public List<Reaction> reactions; public boolean isFetchMore = false; public PositionFetchMore positionFetchMore = PositionFetchMore.BOTTOM; public Attachment art_attachment; public boolean isExpended = false; public boolean isTruncated = true; public transient boolean isFetchMore = false; public transient PositionFetchMore positionFetchMore = PositionFetchMore.BOTTOM; public boolean isChecked = false; //When forwarding tags public boolean tagAdded = false; Loading app/src/main/java/app/fedilab/android/mastodon/jobs/FetchHomeWorker.java +16 −3 Original line number Diff line number Diff line Loading @@ -173,6 +173,8 @@ public class FetchHomeWorker extends Worker { if (fetch_home) { int max_calls = 10; int status_per_page = 40; int insertValue = 0; StatusCache lastStatusCache = null; //Browse last 400 home messages boolean canContinue = true; int call = 0; Loading @@ -194,9 +196,10 @@ public class FetchHomeWorker extends Worker { statusCache.status = status; statusCache.type = Timeline.TimeLineEnum.HOME; statusCache.status_id = status.id; lastStatusCache = statusCache; try { int insertOrUpdate = statusCacheDAO.insertOrUpdate(statusCache, Timeline.TimeLineEnum.HOME.getValue()); if (insertOrUpdate == 1) { insertValue = statusCacheDAO.insertOrUpdate(statusCache, Timeline.TimeLineEnum.HOME.getValue()); if (insertValue == 1) { inserted++; } else { updated++; Loading Loading @@ -246,7 +249,17 @@ public class FetchHomeWorker extends Worker { } catch (DBException e) { throw new RuntimeException(e); } //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); } } } } Loading app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/TimelinesVM.java +2 −2 Original line number Diff line number Diff line Loading @@ -109,7 +109,7 @@ public class TimelinesVM extends AndroidViewModel { } private static void addFetchMore(List<Status> statusList, List<Status> timelineStatuses, TimelineParams timelineParams) throws DBException { if (statusList != null && statusList.size() > 0 && timelineStatuses != null && timelineStatuses.size() > 0) { if (statusList != null && statusList.size() > 1 && timelineStatuses != null && timelineStatuses.size() > 0) { sortDesc(statusList); if (timelineParams.direction == FragmentMastodonTimeline.DIRECTION.REFRESH || timelineParams.direction == FragmentMastodonTimeline.DIRECTION.SCROLL_TOP || timelineParams.direction == FragmentMastodonTimeline.DIRECTION.FETCH_NEW) { //When refreshing/scrolling to TOP, if last statuses fetched has a greater id from newest in cache, there is potential hole Loading @@ -132,7 +132,7 @@ public class TimelinesVM extends AndroidViewModel { } private static void addFetchMoreConversation(List<Conversation> conversationList, List<Conversation> timelineConversations, TimelineParams timelineParams) throws DBException { if (conversationList != null && conversationList.size() > 0 && timelineConversations != null && timelineConversations.size() > 0) { if (conversationList != null && conversationList.size() > 1 && timelineConversations != null && timelineConversations.size() > 0) { sortDescConv(conversationList); if (timelineParams.direction == FragmentMastodonTimeline.DIRECTION.REFRESH || timelineParams.direction == FragmentMastodonTimeline.DIRECTION.SCROLL_TOP || timelineParams.direction == FragmentMastodonTimeline.DIRECTION.FETCH_NEW) { //When refreshing/scrolling to TOP, if last statuses fetched has a greater id from newest in cache, there is potential hole Loading Loading
app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Status.java +5 −2 Original line number Diff line number Diff line Loading @@ -112,11 +112,14 @@ public class Status implements Serializable, Cloneable { @SerializedName("reactions") public List<Reaction> reactions; public boolean isFetchMore = false; public PositionFetchMore positionFetchMore = PositionFetchMore.BOTTOM; public Attachment art_attachment; public boolean isExpended = false; public boolean isTruncated = true; public transient boolean isFetchMore = false; public transient PositionFetchMore positionFetchMore = PositionFetchMore.BOTTOM; public boolean isChecked = false; //When forwarding tags public boolean tagAdded = false; Loading
app/src/main/java/app/fedilab/android/mastodon/jobs/FetchHomeWorker.java +16 −3 Original line number Diff line number Diff line Loading @@ -173,6 +173,8 @@ public class FetchHomeWorker extends Worker { if (fetch_home) { int max_calls = 10; int status_per_page = 40; int insertValue = 0; StatusCache lastStatusCache = null; //Browse last 400 home messages boolean canContinue = true; int call = 0; Loading @@ -194,9 +196,10 @@ public class FetchHomeWorker extends Worker { statusCache.status = status; statusCache.type = Timeline.TimeLineEnum.HOME; statusCache.status_id = status.id; lastStatusCache = statusCache; try { int insertOrUpdate = statusCacheDAO.insertOrUpdate(statusCache, Timeline.TimeLineEnum.HOME.getValue()); if (insertOrUpdate == 1) { insertValue = statusCacheDAO.insertOrUpdate(statusCache, Timeline.TimeLineEnum.HOME.getValue()); if (insertValue == 1) { inserted++; } else { updated++; Loading Loading @@ -246,7 +249,17 @@ public class FetchHomeWorker extends Worker { } catch (DBException e) { throw new RuntimeException(e); } //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); } } } } Loading
app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/TimelinesVM.java +2 −2 Original line number Diff line number Diff line Loading @@ -109,7 +109,7 @@ public class TimelinesVM extends AndroidViewModel { } private static void addFetchMore(List<Status> statusList, List<Status> timelineStatuses, TimelineParams timelineParams) throws DBException { if (statusList != null && statusList.size() > 0 && timelineStatuses != null && timelineStatuses.size() > 0) { if (statusList != null && statusList.size() > 1 && timelineStatuses != null && timelineStatuses.size() > 0) { sortDesc(statusList); if (timelineParams.direction == FragmentMastodonTimeline.DIRECTION.REFRESH || timelineParams.direction == FragmentMastodonTimeline.DIRECTION.SCROLL_TOP || timelineParams.direction == FragmentMastodonTimeline.DIRECTION.FETCH_NEW) { //When refreshing/scrolling to TOP, if last statuses fetched has a greater id from newest in cache, there is potential hole Loading @@ -132,7 +132,7 @@ public class TimelinesVM extends AndroidViewModel { } private static void addFetchMoreConversation(List<Conversation> conversationList, List<Conversation> timelineConversations, TimelineParams timelineParams) throws DBException { if (conversationList != null && conversationList.size() > 0 && timelineConversations != null && timelineConversations.size() > 0) { if (conversationList != null && conversationList.size() > 1 && timelineConversations != null && timelineConversations.size() > 0) { sortDescConv(conversationList); if (timelineParams.direction == FragmentMastodonTimeline.DIRECTION.REFRESH || timelineParams.direction == FragmentMastodonTimeline.DIRECTION.SCROLL_TOP || timelineParams.direction == FragmentMastodonTimeline.DIRECTION.FETCH_NEW) { //When refreshing/scrolling to TOP, if last statuses fetched has a greater id from newest in cache, there is potential hole Loading