Fix issue when refreshing notifications + fix an issue with cache and DM

This commit is contained in:
Thomas 2022-12-04 18:25:10 +01:00
parent 468f825dc0
commit 65156e0a84
2 changed files with 19 additions and 10 deletions

View File

@ -140,7 +140,7 @@ public class FragmentMastodonConversation extends Fragment implements Conversati
timelineParams.fetchingMissing = fetchingMissing; timelineParams.fetchingMissing = fetchingMissing;
if (useCache) { if (useCache && direction != FragmentMastodonTimeline.DIRECTION.SCROLL_TOP && direction != FragmentMastodonTimeline.DIRECTION.FETCH_NEW) {
getCachedConversations(direction, fetchingMissing, timelineParams); getCachedConversations(direction, fetchingMissing, timelineParams);
} else { } else {
getLiveConversations(direction, fetchingMissing, timelineParams, conversationToUpdate); getLiveConversations(direction, fetchingMissing, timelineParams, conversationToUpdate);
@ -150,7 +150,7 @@ public class FragmentMastodonConversation extends Fragment implements Conversati
private void getCachedConversations(FragmentMastodonTimeline.DIRECTION direction, boolean fetchingMissing, TimelinesVM.TimelineParams timelineParams) { private void getCachedConversations(FragmentMastodonTimeline.DIRECTION direction, boolean fetchingMissing, TimelinesVM.TimelineParams timelineParams) {
if (direction == null) { if (direction == null) {
timelinesVM.getConversations(conversationList, timelineParams) timelinesVM.getConversationsCache(conversationList, timelineParams)
.observe(getViewLifecycleOwner(), conversationsCached -> { .observe(getViewLifecycleOwner(), conversationsCached -> {
if (conversationsCached == null || conversationsCached.conversations == null || conversationsCached.conversations.size() == 0) { if (conversationsCached == null || conversationsCached.conversations == null || conversationsCached.conversations.size() == 0) {
getLiveConversations(null, fetchingMissing, timelineParams, null); getLiveConversations(null, fetchingMissing, timelineParams, null);
@ -179,13 +179,18 @@ public class FragmentMastodonConversation extends Fragment implements Conversati
} }
}); });
} else if (direction == FragmentMastodonTimeline.DIRECTION.REFRESH) { } else if (direction == FragmentMastodonTimeline.DIRECTION.REFRESH) {
timelinesVM.getConversations(conversationList, timelineParams) timelinesVM.getConversationsCache(conversationList, timelineParams)
.observe(getViewLifecycleOwner(), notificationsRefresh -> { .observe(getViewLifecycleOwner(), notificationsRefresh -> {
if (notificationsRefresh == null || notificationsRefresh.conversations == null || notificationsRefresh.conversations.size() == 0) {
getLiveConversations(direction, fetchingMissing, timelineParams, null);
} else {
if (conversationAdapter != null) { if (conversationAdapter != null) {
dealWithPagination(notificationsRefresh, FragmentMastodonTimeline.DIRECTION.REFRESH, true, null); dealWithPagination(notificationsRefresh, FragmentMastodonTimeline.DIRECTION.REFRESH, true, null);
} else { } else {
initializeConversationCommonView(notificationsRefresh); initializeConversationCommonView(notificationsRefresh);
} }
}
}); });
} }
} }

View File

@ -387,7 +387,7 @@ public class FragmentMastodonNotification extends Fragment implements Notificati
} }
timelineParams.excludeType = getExcludeType(); timelineParams.excludeType = getExcludeType();
timelineParams.fetchingMissing = fetchingMissing; timelineParams.fetchingMissing = fetchingMissing;
if (useCache) { if (useCache && direction != FragmentMastodonTimeline.DIRECTION.SCROLL_TOP && direction != FragmentMastodonTimeline.DIRECTION.FETCH_NEW) {
getCachedNotifications(direction, fetchingMissing, timelineParams); getCachedNotifications(direction, fetchingMissing, timelineParams);
} else { } else {
getLiveNotifications(direction, fetchingMissing, timelineParams, notificationToUpdate); getLiveNotifications(direction, fetchingMissing, timelineParams, notificationToUpdate);
@ -430,11 +430,15 @@ public class FragmentMastodonNotification extends Fragment implements Notificati
} else if (direction == FragmentMastodonTimeline.DIRECTION.REFRESH) { } else if (direction == FragmentMastodonTimeline.DIRECTION.REFRESH) {
notificationsVM.getNotifications(notificationList, timelineParams) notificationsVM.getNotifications(notificationList, timelineParams)
.observe(getViewLifecycleOwner(), notificationsRefresh -> { .observe(getViewLifecycleOwner(), notificationsRefresh -> {
if (notificationsRefresh == null || notificationsRefresh.notifications == null || notificationsRefresh.notifications.size() == 0) {
getLiveNotifications(direction, fetchingMissing, timelineParams, null);
} else {
if (notificationAdapter != null) { if (notificationAdapter != null) {
dealWithPagination(notificationsRefresh, FragmentMastodonTimeline.DIRECTION.REFRESH, true, null); dealWithPagination(notificationsRefresh, FragmentMastodonTimeline.DIRECTION.REFRESH, true, null);
} else { } else {
initializeNotificationView(notificationsRefresh); initializeNotificationView(notificationsRefresh);
} }
}
}); });
} }
} }