From 62b0caec113ac9bb82849d1b65689b4101686508 Mon Sep 17 00:00:00 2001 From: Thomas Date: Thu, 29 Sep 2022 11:34:30 +0200 Subject: [PATCH] Some fixes --- .../android/client/entities/app/StatusCache.java | 1 + .../fragment/timeline/FragmentMastodonTimeline.java | 12 +++++++++--- .../android/viewmodel/mastodon/TimelinesVM.java | 1 - 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/app/fedilab/android/client/entities/app/StatusCache.java b/app/src/main/java/app/fedilab/android/client/entities/app/StatusCache.java index 60b832781..28a39c2b6 100644 --- a/app/src/main/java/app/fedilab/android/client/entities/app/StatusCache.java +++ b/app/src/main/java/app/fedilab/android/client/entities/app/StatusCache.java @@ -327,6 +327,7 @@ public class StatusCache { selection += "AND " + Sqlite.COL_STATUS_ID + " > '" + since_id + "' "; limit = null; } + try { Cursor c = db.query(Sqlite.TABLE_STATUS_CACHE, null, selection, null, null, null, Sqlite.COL_STATUS_ID + order, limit); return createStatusReply(cursorToListOfStatuses(c)); diff --git a/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonTimeline.java b/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonTimeline.java index 892427bcf..9d9c71f2e 100644 --- a/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonTimeline.java +++ b/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonTimeline.java @@ -404,6 +404,9 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter. } //Update the timeline with new statuses updateStatusListWith(fetched_statuses.statuses); + if (direction == DIRECTION.TOP && fetchingMissing) { + binding.recyclerView.scrollToPosition(getPosition(fetched_statuses.statuses.get(fetched_statuses.statuses.size() - 1)) + 1); + } if (!fetchingMissing) { if (fetched_statuses.pagination.max_id == null) { flagLoading = true; @@ -427,7 +430,8 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter. * * @param statusListReceived - List Statuses received */ - private void updateStatusListWith(List statusListReceived) { + private int updateStatusListWith(List statusListReceived) { + int inserted = 0; if (statusListReceived != null && statusListReceived.size() > 0) { for (Status statusReceived : statusListReceived) { int position = 0; @@ -443,6 +447,7 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter. if (!timelineStatuses.contains(statusReceived) && !statusReceived.pinned && timelineType != Timeline.TimeLineEnum.ACCOUNT_TIMELINE) { timelineStatuses.add(position, statusReceived); statusAdapter.notifyItemInserted(position); + inserted++; } break; } @@ -457,6 +462,7 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter. } } } + return inserted; } @Override @@ -604,10 +610,10 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter. }); } else if (direction == DIRECTION.REFRESH || direction == DIRECTION.SCROLL_TOP) { - timelinesVM.getTimelineCache(timelineStatuses, timelineParams) + timelinesVM.getTimeline(timelineStatuses, timelineParams) .observe(getViewLifecycleOwner(), statusesRefresh -> { if (statusesRefresh == null || statusesRefresh.statuses == null || statusesRefresh.statuses.size() == 0) { - getLiveStatus(direction, fetchingMissing, timelineParams); + getCachedStatus(direction, fetchingMissing, timelineParams); } else { if (statusAdapter != null) { dealWithPagination(statusesRefresh, direction, true); diff --git a/app/src/main/java/app/fedilab/android/viewmodel/mastodon/TimelinesVM.java b/app/src/main/java/app/fedilab/android/viewmodel/mastodon/TimelinesVM.java index aa16ad7f4..338f26615 100644 --- a/app/src/main/java/app/fedilab/android/viewmodel/mastodon/TimelinesVM.java +++ b/app/src/main/java/app/fedilab/android/viewmodel/mastodon/TimelinesVM.java @@ -395,7 +395,6 @@ public class TimelinesVM extends AndroidViewModel { List statusList = timelineResponse.body(); statuses.statuses = TimelineHelper.filterStatus(getApplication().getApplicationContext(), statusList, timelineParams.type); statuses.pagination = MastodonHelper.getPagination(timelineResponse.headers()); - if (statusList != null && statusList.size() > 0) { for (Status status : statuses.statuses) { StatusCache statusCacheDAO = new StatusCache(getApplication().getApplicationContext());