about summary refs log tree commit diff
path: root/src/state/queries/messages
diff options
context:
space:
mode:
Diffstat (limited to 'src/state/queries/messages')
-rw-r--r--src/state/queries/messages/leave-conversation.ts18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/state/queries/messages/leave-conversation.ts b/src/state/queries/messages/leave-conversation.ts
index d7d47b274..9f45de544 100644
--- a/src/state/queries/messages/leave-conversation.ts
+++ b/src/state/queries/messages/leave-conversation.ts
@@ -31,6 +31,7 @@ export function useLeaveConvo(
       return data
     },
     onMutate: () => {
+      let prevPages: ChatBskyConvoListConvos.OutputSchema[] = []
       queryClient.setQueryData(
         CONVO_LIST_KEY,
         (old?: {
@@ -38,6 +39,7 @@ export function useLeaveConvo(
           pages: Array<ChatBskyConvoListConvos.OutputSchema>
         }) => {
           if (!old) return old
+          prevPages = old.pages
           return {
             ...old,
             pages: old.pages.map(page => {
@@ -49,13 +51,27 @@ export function useLeaveConvo(
           }
         },
       )
+      return {prevPages}
     },
     onSuccess: data => {
       queryClient.invalidateQueries({queryKey: CONVO_LIST_KEY})
       onSuccess?.(data)
     },
-    onError: error => {
+    onError: (error, _, context) => {
       logger.error(error)
+      queryClient.setQueryData(
+        CONVO_LIST_KEY,
+        (old?: {
+          pageParams: Array<string | undefined>
+          pages: Array<ChatBskyConvoListConvos.OutputSchema>
+        }) => {
+          if (!old) return old
+          return {
+            ...old,
+            pages: context?.prevPages || old.pages,
+          }
+        },
+      )
       queryClient.invalidateQueries({queryKey: CONVO_LIST_KEY})
       onError?.(error)
     },