Loading app/src/main/java/app/fedilab/android/mastodon/client/endpoints/MastodonTimelinesService.java +1 −1 Original line number Diff line number Diff line Loading @@ -231,7 +231,7 @@ public interface MastodonTimelinesService { Call<List<MisskeyNote>> getMisskey(@Body MisskeyNote.MisskeyParams params); @GET("api/v3/post/list") @GET("api/v3/post/list?sort=New") Call<LemmyPost.LemmyPosts> getLemmyMain(@Query("limit") Integer limit, @Query("page") String page); Loading app/src/main/java/app/fedilab/android/mastodon/ui/fragment/timeline/FragmentMastodonTimeline.java +10 −3 Original line number Diff line number Diff line Loading @@ -215,7 +215,7 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter. SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(requireActivity()); rememberPosition = sharedpreferences.getBoolean(getString(R.string.SET_REMEMBER_POSITION), true); //Inner marker are only for pinned timelines and main timelines, they have isViewInitialized set to false if (max_id == null && !isViewInitialized && rememberPosition) { if (max_id == null && !isViewInitialized && rememberPosition && 1 == 2) { max_id = sharedpreferences.getString(getString(R.string.SET_INNER_MARKER) + BaseMainActivity.currentUserID + BaseMainActivity.currentInstance + slug, null); } //Only fragment in main view pager should not have the view initialized Loading Loading @@ -358,7 +358,7 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter. SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(requireActivity()); rememberPosition = sharedpreferences.getBoolean(getString(R.string.SET_REMEMBER_POSITION), true); //Inner marker are only for pinned timelines and main timelines, they have isViewInitialized set to false if (max_id == null && !isViewInitialized && rememberPosition) { if (max_id == null && !isViewInitialized && rememberPosition && 1 == 2) { max_id = sharedpreferences.getString(getString(R.string.SET_INNER_MARKER) + BaseMainActivity.currentUserID + BaseMainActivity.currentInstance + slug, null); } if (search != null) { Loading Loading @@ -535,6 +535,9 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter. } else if (max_id == null || Helper.compareTo(fetched_statuses.pagination.max_id, max_id) < 0 || timelineType.getValue().startsWith("TREND_")) { max_id = fetched_statuses.pagination.max_id; } if (pinnedTimeline != null && pinnedTimeline.remoteInstance != null && pinnedTimeline.remoteInstance.type == RemoteInstance.InstanceType.LEMMY) { max_id = fetched_statuses.pagination.max_id; } if (min_id == null || (fetched_statuses.pagination.min_id != null && Helper.compareTo(fetched_statuses.pagination.min_id, min_id) > 0)) { min_id = fetched_statuses.pagination.min_id; } Loading Loading @@ -577,7 +580,7 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter. route(DIRECTION.REFRESH, true); }); } if (statuses == null || statuses.statuses == null || statuses.statuses.size() == 0) { if (initialStatus == null && (statuses == null || statuses.statuses == null || statuses.statuses.size() == 0)) { binding.noAction.setVisibility(View.VISIBLE); return; } else if (timelineType == Timeline.TimeLineEnum.ART) { Loading Loading @@ -623,6 +626,10 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter. if (max_id == null || (statuses.pagination.max_id != null && Helper.compareTo(statuses.pagination.max_id, max_id) < 0) || timelineType.getValue().startsWith("TREND_")) { max_id = statuses.pagination.max_id; } //For Lemmy pagination if (pinnedTimeline != null && pinnedTimeline.remoteInstance != null && pinnedTimeline.remoteInstance.type == RemoteInstance.InstanceType.LEMMY) { max_id = statuses.pagination.max_id; } if (min_id == null || (statuses.pagination.min_id != null && Helper.compareTo(statuses.pagination.min_id, min_id) > 0)) { min_id = statuses.pagination.min_id; } Loading app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/TimelinesVM.java +12 −16 Original line number Diff line number Diff line Loading @@ -350,14 +350,17 @@ public class TimelinesVM extends AndroidViewModel { Integer limit) { MastodonTimelinesService mastodonTimelinesService = initInstanceOnly(instance); statusesMutableLiveData = new MutableLiveData<>(); if (page == null) { page = "1"; } String finalPage = page; new Thread(() -> { Call<LemmyPost.LemmyPosts> lemmyPostsCall = null; Call<LemmyPost.LemmyComments> lemmyCommentsCall = null; if (post_id == null) { lemmyPostsCall = mastodonTimelinesService.getLemmyMain(limit, page); lemmyPostsCall = mastodonTimelinesService.getLemmyMain(limit, finalPage); } else { lemmyCommentsCall = mastodonTimelinesService.getLemmyThread(post_id, limit, page); lemmyCommentsCall = mastodonTimelinesService.getLemmyThread(post_id, limit, finalPage); } Statuses statuses = new Statuses(); if (lemmyPostsCall != null) { Loading @@ -374,16 +377,9 @@ public class TimelinesVM extends AndroidViewModel { } statuses.statuses = TimelineHelper.filterStatus(getApplication(), statusList, Timeline.TimeLineEnum.PUBLIC); statuses.pagination = new Pagination(); if (page == null) { statuses.pagination.min_id = "0"; statuses.pagination.max_id = "1"; } else { int pageInt = Integer.parseInt(page); statuses.pagination.min_id = page; int pageInt = Integer.parseInt(finalPage); statuses.pagination.min_id = finalPage; statuses.pagination.max_id = String.valueOf((pageInt + 1)); } } } catch (Exception e) { Loading @@ -403,12 +399,12 @@ public class TimelinesVM extends AndroidViewModel { } statuses.statuses = TimelineHelper.filterStatus(getApplication(), statusList, Timeline.TimeLineEnum.PUBLIC); statuses.pagination = new Pagination(); if (page == null) { if (finalPage == null) { statuses.pagination.min_id = "0"; statuses.pagination.max_id = "1"; } else { int pageInt = Integer.parseInt(page); statuses.pagination.min_id = page; int pageInt = Integer.parseInt(finalPage); statuses.pagination.min_id = finalPage; statuses.pagination.max_id = String.valueOf((pageInt + 1)); } } Loading Loading
app/src/main/java/app/fedilab/android/mastodon/client/endpoints/MastodonTimelinesService.java +1 −1 Original line number Diff line number Diff line Loading @@ -231,7 +231,7 @@ public interface MastodonTimelinesService { Call<List<MisskeyNote>> getMisskey(@Body MisskeyNote.MisskeyParams params); @GET("api/v3/post/list") @GET("api/v3/post/list?sort=New") Call<LemmyPost.LemmyPosts> getLemmyMain(@Query("limit") Integer limit, @Query("page") String page); Loading
app/src/main/java/app/fedilab/android/mastodon/ui/fragment/timeline/FragmentMastodonTimeline.java +10 −3 Original line number Diff line number Diff line Loading @@ -215,7 +215,7 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter. SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(requireActivity()); rememberPosition = sharedpreferences.getBoolean(getString(R.string.SET_REMEMBER_POSITION), true); //Inner marker are only for pinned timelines and main timelines, they have isViewInitialized set to false if (max_id == null && !isViewInitialized && rememberPosition) { if (max_id == null && !isViewInitialized && rememberPosition && 1 == 2) { max_id = sharedpreferences.getString(getString(R.string.SET_INNER_MARKER) + BaseMainActivity.currentUserID + BaseMainActivity.currentInstance + slug, null); } //Only fragment in main view pager should not have the view initialized Loading Loading @@ -358,7 +358,7 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter. SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(requireActivity()); rememberPosition = sharedpreferences.getBoolean(getString(R.string.SET_REMEMBER_POSITION), true); //Inner marker are only for pinned timelines and main timelines, they have isViewInitialized set to false if (max_id == null && !isViewInitialized && rememberPosition) { if (max_id == null && !isViewInitialized && rememberPosition && 1 == 2) { max_id = sharedpreferences.getString(getString(R.string.SET_INNER_MARKER) + BaseMainActivity.currentUserID + BaseMainActivity.currentInstance + slug, null); } if (search != null) { Loading Loading @@ -535,6 +535,9 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter. } else if (max_id == null || Helper.compareTo(fetched_statuses.pagination.max_id, max_id) < 0 || timelineType.getValue().startsWith("TREND_")) { max_id = fetched_statuses.pagination.max_id; } if (pinnedTimeline != null && pinnedTimeline.remoteInstance != null && pinnedTimeline.remoteInstance.type == RemoteInstance.InstanceType.LEMMY) { max_id = fetched_statuses.pagination.max_id; } if (min_id == null || (fetched_statuses.pagination.min_id != null && Helper.compareTo(fetched_statuses.pagination.min_id, min_id) > 0)) { min_id = fetched_statuses.pagination.min_id; } Loading Loading @@ -577,7 +580,7 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter. route(DIRECTION.REFRESH, true); }); } if (statuses == null || statuses.statuses == null || statuses.statuses.size() == 0) { if (initialStatus == null && (statuses == null || statuses.statuses == null || statuses.statuses.size() == 0)) { binding.noAction.setVisibility(View.VISIBLE); return; } else if (timelineType == Timeline.TimeLineEnum.ART) { Loading Loading @@ -623,6 +626,10 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter. if (max_id == null || (statuses.pagination.max_id != null && Helper.compareTo(statuses.pagination.max_id, max_id) < 0) || timelineType.getValue().startsWith("TREND_")) { max_id = statuses.pagination.max_id; } //For Lemmy pagination if (pinnedTimeline != null && pinnedTimeline.remoteInstance != null && pinnedTimeline.remoteInstance.type == RemoteInstance.InstanceType.LEMMY) { max_id = statuses.pagination.max_id; } if (min_id == null || (statuses.pagination.min_id != null && Helper.compareTo(statuses.pagination.min_id, min_id) > 0)) { min_id = statuses.pagination.min_id; } Loading
app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/TimelinesVM.java +12 −16 Original line number Diff line number Diff line Loading @@ -350,14 +350,17 @@ public class TimelinesVM extends AndroidViewModel { Integer limit) { MastodonTimelinesService mastodonTimelinesService = initInstanceOnly(instance); statusesMutableLiveData = new MutableLiveData<>(); if (page == null) { page = "1"; } String finalPage = page; new Thread(() -> { Call<LemmyPost.LemmyPosts> lemmyPostsCall = null; Call<LemmyPost.LemmyComments> lemmyCommentsCall = null; if (post_id == null) { lemmyPostsCall = mastodonTimelinesService.getLemmyMain(limit, page); lemmyPostsCall = mastodonTimelinesService.getLemmyMain(limit, finalPage); } else { lemmyCommentsCall = mastodonTimelinesService.getLemmyThread(post_id, limit, page); lemmyCommentsCall = mastodonTimelinesService.getLemmyThread(post_id, limit, finalPage); } Statuses statuses = new Statuses(); if (lemmyPostsCall != null) { Loading @@ -374,16 +377,9 @@ public class TimelinesVM extends AndroidViewModel { } statuses.statuses = TimelineHelper.filterStatus(getApplication(), statusList, Timeline.TimeLineEnum.PUBLIC); statuses.pagination = new Pagination(); if (page == null) { statuses.pagination.min_id = "0"; statuses.pagination.max_id = "1"; } else { int pageInt = Integer.parseInt(page); statuses.pagination.min_id = page; int pageInt = Integer.parseInt(finalPage); statuses.pagination.min_id = finalPage; statuses.pagination.max_id = String.valueOf((pageInt + 1)); } } } catch (Exception e) { Loading @@ -403,12 +399,12 @@ public class TimelinesVM extends AndroidViewModel { } statuses.statuses = TimelineHelper.filterStatus(getApplication(), statusList, Timeline.TimeLineEnum.PUBLIC); statuses.pagination = new Pagination(); if (page == null) { if (finalPage == null) { statuses.pagination.min_id = "0"; statuses.pagination.max_id = "1"; } else { int pageInt = Integer.parseInt(page); statuses.pagination.min_id = page; int pageInt = Integer.parseInt(finalPage); statuses.pagination.min_id = finalPage; statuses.pagination.max_id = String.valueOf((pageInt + 1)); } } Loading