Commit 4ae8011e authored by Thomas's avatar Thomas
Browse files

Auto fetch messages

parent d61dbb03
Loading
Loading
Loading
Loading
+38 −18
Original line number Diff line number Diff line
@@ -2141,7 +2141,6 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
                holder.binding.fetchMoreContainerTop.setVisibility(View.GONE);
                status.isFetchMore = false;
                int position = holder.getBindingAdapterPosition();
                adapter.notifyItemChanged(position);
                String statusIdMin = null, statusIdMax;
                if (position < statusList.size() - 1) {
                    if (status.positionFetchMore == Status.PositionFetchMore.TOP) {
@@ -2614,6 +2613,8 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
                holder.bindingFilteredHide.dividerCard.setVisibility(View.GONE);
            }
            if (status.isFetchMore && fetchMoreCallBack != null) {
                boolean autofetch = sharedpreferences.getBoolean(context.getString(R.string.SET_AUTO_FETCH_MISSING_MESSAGES), false);
                if (!autofetch) {
                    holder.bindingFilteredHide.layoutFetchMore.fetchMoreContainer.setVisibility(View.VISIBLE);
                    holder.bindingFilteredHide.layoutFetchMore.fetchMoreMin.setOnClickListener(v -> {
                        status.isFetchMore = false;
@@ -2631,6 +2632,7 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
                    holder.bindingFilteredHide.layoutFetchMore.fetchMoreMax.setOnClickListener(v -> {
                        //We hide the button
                        status.isFetchMore = false;
                        notifyItemChanged(holder.getBindingAdapterPosition());
                        String fromId;
                        if (status.positionFetchMore == Status.PositionFetchMore.TOP) {
                            fromId = statusList.get(holder.getBindingAdapterPosition()).id;
@@ -2638,8 +2640,26 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
                            fromId = statusList.get(holder.getBindingAdapterPosition() - 1).id;
                        }
                        fetchMoreCallBack.onClickMaxId(fromId, status);
                    notifyItemChanged(holder.getBindingAdapterPosition());

                    });
                } else {
                    status.isFetchMore = false;
                    String minId = null, maxId;
                    if (holder.getBindingAdapterPosition() < statusList.size() - 1) {
                        if (status.positionFetchMore == Status.PositionFetchMore.TOP) {
                            minId = statusList.get(holder.getBindingAdapterPosition() + 1).id;
                        } else {
                            minId = status.id;
                        }
                    }
                    if (status.positionFetchMore == Status.PositionFetchMore.TOP) {
                        maxId = statusList.get(holder.getBindingAdapterPosition()).id;
                    } else {
                        maxId = statusList.get(holder.getBindingAdapterPosition() - 1).id;
                    }
                    fetchMoreCallBack.autoFetch(minId, maxId, status);
                }

            } else {
                holder.bindingFilteredHide.layoutFetchMore.fetchMoreContainer.setVisibility(View.GONE);
            }
+2 −3
Original line number Diff line number Diff line
@@ -507,8 +507,7 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter.
                update.onUpdate(0, timelineType, slug);
            }
            SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(requireActivity());
            boolean autofetch = sharedpreferences.getBoolean(getString(R.string.SET_AUTO_FETCH_MISSING_MESSAGES), false);
            if (direction == DIRECTION.TOP && fetchingMissing && !autofetch) {
            if (direction == DIRECTION.TOP && fetchingMissing) {
                int position = getAbsolutePosition(fetched_statuses.statuses.get(fetched_statuses.statuses.size() - 1));
                if (position != -1) {
                    binding.recyclerView.scrollToPosition(position + 1);
@@ -657,7 +656,7 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter.
            binding.recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
                @Override
                public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
                    scrollingUp = dy > 0;
                    scrollingUp = dy < 0;
                    if (requireActivity() instanceof BaseMainActivity) {
                        if (dy < 0 && !((BaseMainActivity) requireActivity()).getFloatingVisibility())
                            ((BaseMainActivity) requireActivity()).manageFloatingButton(true);