diff options
author | Eric Bailey <git@esb.lol> | 2024-05-16 15:52:53 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-16 15:52:53 -0500 |
commit | 449f16b7c581ce751d6ccdcebb28a7cd77ca9c81 (patch) | |
tree | 947d098652604f700ac492bdeec667db77273592 /src/state/queries/messages | |
parent | 5e5716c0a85e31e75982ad71615c237d86875820 (diff) | |
download | voidsky-449f16b7c581ce751d6ccdcebb28a7cd77ca9c81.tar.zst |
Reset leave chat optimistic update if fails (#4058)
Diffstat (limited to 'src/state/queries/messages')
-rw-r--r-- | src/state/queries/messages/leave-conversation.ts | 18 |
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) }, |