diff --git a/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonConversation.java b/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonConversation.java
index 2262edd1..ded9e0af 100644
--- a/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonConversation.java
+++ b/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonConversation.java
@@ -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);
+                            }
                         }
+
                     });
         }
     }
diff --git a/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonNotification.java b/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonNotification.java
index 3a07d55e..0bef27f8 100644
--- a/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonNotification.java
+++ b/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonNotification.java
@@ -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);
+                            }
                         }
                     });
         }