From f3e8e8a506ffec66d9f62c00e7b8e9c9d7e8e005 Mon Sep 17 00:00:00 2001 From: Thomas Date: Mon, 25 Jul 2022 15:17:48 +0200 Subject: [PATCH] Some fixes --- .../android/client/entities/api/Status.java | 9 +++++++++ .../timeline/FragmentMastodonTimeline.java | 14 ++++---------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/app/fedilab/android/client/entities/api/Status.java b/app/src/main/java/app/fedilab/android/client/entities/api/Status.java index 144eea3e..4ec31d27 100644 --- a/app/src/main/java/app/fedilab/android/client/entities/api/Status.java +++ b/app/src/main/java/app/fedilab/android/client/entities/api/Status.java @@ -19,6 +19,7 @@ import android.text.Spannable; import android.view.View; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import com.google.gson.annotations.SerializedName; @@ -92,6 +93,14 @@ public class Status implements Serializable, Cloneable { @SerializedName("pleroma") public Pleroma pleroma; + @Override + public boolean equals(@Nullable Object obj) { + boolean same = false; + if (obj instanceof Status) { + same = this.id.equals(((Status) obj).id); + } + return same; + } public Attachment art_attachment; 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 034dbbe3..f1aa8fd7 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 @@ -136,7 +136,7 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter. private PinnedTimeline pinnedTimeline; private String ident; private String instance, user_id; - private ArrayList idOfAddedStatuses; + private boolean canBeFederated; /** @@ -217,7 +217,6 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter. minified = getArguments().getBoolean(Helper.ARG_MINIFIED, false); statusReport = (Status) getArguments().getSerializable(Helper.ARG_STATUS_REPORT); } - idOfAddedStatuses = new ArrayList<>(); if (tagTimeline != null) { ident = "@T@" + tagTimeline.name; if (tagTimeline.isART) { @@ -310,9 +309,6 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter. statuses.statuses = mediaStatuses; } } - for (Status status : statuses.statuses) { - idOfAddedStatuses.add(status.id); - } flagLoading = statuses.pagination.max_id == null; binding.recyclerView.setVisibility(View.VISIBLE); if (statusAdapter != null && this.statuses != null) { @@ -489,11 +485,11 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter. * @return int >= 0 | STATUS_PRESENT = -1 | STATUS_AT_THE_BOTTOM = -2 */ private int insertStatus(Status statusReceived) { - if (idOfAddedStatuses.contains(statusReceived.id)) { - return STATUS_PRESENT; - } int position = 0; if (this.statuses != null) { + if (this.statuses.contains(statusReceived)) { + return STATUS_PRESENT; + } statusAdapter.notifyItemRangeChanged(0, this.statuses.size()); //We loop through messages already in the timeline for (Status statusAlreadyPresent : this.statuses) { @@ -501,7 +497,6 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter. //Pinned messages are ignored because their date can be older if (statusReceived.id.compareTo(statusAlreadyPresent.id) > 0 && !statusAlreadyPresent.pinned) { //We add the status to a list of id - thus we know it is already in the timeline - idOfAddedStatuses.add(statusReceived.id); this.statuses.add(position, statusReceived); statusAdapter.notifyItemInserted(position); break; @@ -511,7 +506,6 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter. //Statuses added at the bottom, we flag them by position = -2 for not dealing with them and fetch more if (position == this.statuses.size()) { //We add the status to a list of id - thus we know it is already in the timeline - idOfAddedStatuses.add(statusReceived.id); this.statuses.add(position, statusReceived); statusAdapter.notifyItemInserted(position); return STATUS_AT_THE_BOTTOM;