diff --git a/app/src/main/java/com/keylesspalace/tusky/fragment/NotificationsFragment.java b/app/src/main/java/com/keylesspalace/tusky/fragment/NotificationsFragment.java index 4bd6db9fd..1471403ba 100644 --- a/app/src/main/java/com/keylesspalace/tusky/fragment/NotificationsFragment.java +++ b/app/src/main/java/com/keylesspalace/tusky/fragment/NotificationsFragment.java @@ -40,7 +40,6 @@ import com.keylesspalace.tusky.adapter.NotificationsAdapter; import com.keylesspalace.tusky.R; import com.keylesspalace.tusky.entity.Notification; import com.keylesspalace.tusky.entity.Status; -import com.keylesspalace.tusky.interfaces.AdapterItemRemover; import com.keylesspalace.tusky.interfaces.StatusActionListener; import com.keylesspalace.tusky.receiver.TimelineReceiver; import com.keylesspalace.tusky.util.HttpHeaderLink; @@ -51,8 +50,8 @@ import com.keylesspalace.tusky.view.EndlessOnScrollListener; import com.keylesspalace.tusky.viewdata.NotificationViewData; import com.keylesspalace.tusky.viewdata.StatusViewData; -import java.util.HashSet; import java.util.Iterator; +import java.util.LinkedHashSet; import java.util.List; import retrofit2.Call; @@ -440,8 +439,8 @@ public class NotificationsFragment extends SFragment implements topId = uptoId; } if (notifications.isEmpty()) { - // This construction removes duplicates. - notifications.addAll(new HashSet<>(newNotifications)); + // This construction removes duplicates while preserving order. + notifications.addAll(new LinkedHashSet<>(newNotifications)); } else { int index = notifications.indexOf(newNotifications.get(newNotifications.size() - 1)); for (int i = 0; i < index; i++) { diff --git a/app/src/main/java/com/keylesspalace/tusky/fragment/TimelineFragment.java b/app/src/main/java/com/keylesspalace/tusky/fragment/TimelineFragment.java index 6aa44560c..b1415da7b 100644 --- a/app/src/main/java/com/keylesspalace/tusky/fragment/TimelineFragment.java +++ b/app/src/main/java/com/keylesspalace/tusky/fragment/TimelineFragment.java @@ -43,14 +43,15 @@ import com.keylesspalace.tusky.interfaces.StatusActionListener; import com.keylesspalace.tusky.network.MastodonApi; import com.keylesspalace.tusky.receiver.TimelineReceiver; import com.keylesspalace.tusky.util.HttpHeaderLink; +import com.keylesspalace.tusky.util.ListUtils; import com.keylesspalace.tusky.util.PairedList; import com.keylesspalace.tusky.util.ThemeUtils; import com.keylesspalace.tusky.util.ViewDataUtils; import com.keylesspalace.tusky.view.EndlessOnScrollListener; import com.keylesspalace.tusky.viewdata.StatusViewData; -import java.util.HashSet; import java.util.Iterator; +import java.util.LinkedHashSet; import java.util.List; import java.util.Locale; @@ -589,7 +590,7 @@ public class TimelineFragment extends SFragment implements private void updateStatuses(List newStatuses, @Nullable String fromId, @Nullable String toId) { - if (newStatuses == null || newStatuses.isEmpty()) { + if (ListUtils.isEmpty(newStatuses)) { return; } if (fromId != null) { @@ -599,8 +600,8 @@ public class TimelineFragment extends SFragment implements upToId = toId; } if (statuses.isEmpty()) { - // This construction removes duplicates. - statuses.addAll(new HashSet<>(newStatuses)); + // This construction removes duplicates while preserving order. + statuses.addAll(new LinkedHashSet<>(newStatuses)); } else { Status lastOfNew = newStatuses.get(newStatuses.size() - 1); int index = statuses.indexOf(lastOfNew);