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

View File

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