Commit 51660b4f authored by Thomas's avatar Thomas
Browse files

- Fix #837 fix search pagination for statuses & accounts tab

parent b5ab93d4
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -448,7 +448,7 @@ public class FragmentMastodonAccount extends Fragment {
        }
        binding.loadingNextElements.setVisibility(View.GONE);
        if (accounts != null && fetched_accounts != null && fetched_accounts.accounts != null) {
            flagLoading = fetched_accounts.pagination.max_id == null;
            flagLoading = search == null && fetched_accounts.pagination.max_id == null;
            int startId = 0;
            //There are some statuses present in the timeline
            if (accounts.size() > 0) {
+29 −27
Original line number Diff line number Diff line
@@ -566,7 +566,7 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter.
        binding.loadingNextElements.setVisibility(View.GONE);
        flagLoading = false;
        if (timelineStatuses != null && fetched_statuses != null && fetched_statuses.statuses != null && !fetched_statuses.statuses.isEmpty()) {
            flagLoading = fetched_statuses.pagination.max_id == null;
            flagLoading = search == null && fetched_statuses.pagination.max_id == null;
            binding.noAction.setVisibility(View.GONE);


@@ -629,6 +629,9 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter.
                }
            }
            if (!fetchingMissing) {
                if (search != null) {
                    offset += MastodonHelper.SEARCH_PER_CALL;
                } else {
                    if (fetched_statuses.pagination.max_id == null) {
                        flagLoading = true;
                    } else if (max_id == null || Helper.compareTo(fetched_statuses.pagination.max_id, max_id) < 0 || timelineType.getValue().startsWith("TREND_")) {
@@ -641,8 +644,6 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter.
                        min_id = fetched_statuses.pagination.min_id;
                    }
                }
            if (search != null) {
                offset += MastodonHelper.SEARCH_PER_CALL;
            }
        } else if (direction == DIRECTION.BOTTOM) {
            flagLoading = true;
@@ -704,7 +705,7 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter.
                statuses.statuses = mediaStatuses;
            }
        }
        flagLoading = statuses.pagination.max_id == null;
        flagLoading = search == null && statuses.pagination.max_id == null;
        binding.recyclerView.setVisibility(View.VISIBLE);
        if (statusAdapter != null && timelineStatuses != null) {
            int size = timelineStatuses.size();
@@ -725,6 +726,9 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter.
            statuses.statuses = new ArrayList<>();
        }
        timelineStatuses.addAll(statuses.statuses);
        if (search != null) {
            offset += MastodonHelper.SEARCH_PER_CALL;
        } else {
            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;
            }
@@ -735,8 +739,6 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter.
            if (min_id == null || (statuses.pagination.min_id != null && Helper.compareTo(statuses.pagination.min_id, min_id) > 0)) {
                min_id = statuses.pagination.min_id;
            }
        if (search != null) {
            offset += MastodonHelper.SEARCH_PER_CALL;
        }
        statusAdapter = new StatusAdapter(timelineStatuses, timelineType, minified, canBeFederated, checkRemotely);
        statusAdapter.fetchMoreCallBack = this;
@@ -1382,7 +1384,7 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter.
            } else {
                SearchVM searchVM = new ViewModelProvider(FragmentMastodonTimeline.this).get(viewModelKey, SearchVM.class);
                if (direction == null) {
                    searchVM.search(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, search.trim(), null, null, false, true, false, 0, null, null, MastodonHelper.SEARCH_PER_CALL)
                    searchVM.search(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, search.trim(), null, "statuses", false, true, false, 0, null, null, MastodonHelper.SEARCH_PER_CALL)
                            .observe(getViewLifecycleOwner(), results -> {
                                if (results != null) {
                                    Statuses statuses = new Statuses();
@@ -1394,7 +1396,7 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter.
                                }
                            });
                } else if (direction == DIRECTION.BOTTOM) {
                    searchVM.search(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, search.trim(), null, null, false, true, false, offset, null, null, MastodonHelper.SEARCH_PER_CALL)
                    searchVM.search(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, search.trim(), null, "statuses", false, true, false, offset, null, null, MastodonHelper.SEARCH_PER_CALL)
                            .observe(getViewLifecycleOwner(), results -> {
                                if (results != null) {
                                    Statuses statuses = new Statuses();