Fix issue #367 - Fix notification aggregation with pagination

This commit is contained in:
Thomas 2022-10-26 17:08:40 +02:00
parent 15921978d3
commit 9f68db32ec

View file

@ -485,6 +485,10 @@ public class FragmentMastodonNotification extends Fragment implements Notificati
binding.loadingNextElements.setVisibility(View.GONE); binding.loadingNextElements.setVisibility(View.GONE);
flagLoading = false; flagLoading = false;
if (notificationList != null && fetched_notifications != null && fetched_notifications.notifications != null && fetched_notifications.notifications.size() > 0) { if (notificationList != null && fetched_notifications != null && fetched_notifications.notifications != null && fetched_notifications.notifications.size() > 0) {
if (aggregateNotification) {
fetched_notifications.notifications = aggregateNotifications(fetched_notifications.notifications);
}
try { try {
if (notificationToUpdate != null) { if (notificationToUpdate != null) {
new Thread(() -> { new Thread(() -> {
@ -503,7 +507,6 @@ public class FragmentMastodonNotification extends Fragment implements Notificati
} }
} catch (Exception ignored) { } catch (Exception ignored) {
} }
flagLoading = fetched_notifications.pagination.max_id == null; flagLoading = fetched_notifications.pagination.max_id == null;
binding.noAction.setVisibility(View.GONE); binding.noAction.setVisibility(View.GONE);
//Update the timeline with new statuses //Update the timeline with new statuses
@ -514,6 +517,9 @@ public class FragmentMastodonNotification extends Fragment implements Notificati
if (direction == FragmentMastodonTimeline.DIRECTION.TOP && fetchingMissing) { if (direction == FragmentMastodonTimeline.DIRECTION.TOP && fetchingMissing) {
binding.recyclerView.scrollToPosition(getPosition(fetched_notifications.notifications.get(fetched_notifications.notifications.size() - 1)) + 1); binding.recyclerView.scrollToPosition(getPosition(fetched_notifications.notifications.get(fetched_notifications.notifications.size() - 1)) + 1);
} }
if (aggregateNotification && notificationList != null && notificationList.size() > 0) {
notificationAdapter.notifyItemRangeChanged(0, notificationList.size());
}
if (!fetchingMissing) { if (!fetchingMissing) {
if (fetched_notifications.pagination.max_id == null) { if (fetched_notifications.pagination.max_id == null) {
flagLoading = true; flagLoading = true;