From a639758f5f2d679589112418a64ba007a47c5213 Mon Sep 17 00:00:00 2001 From: Eric Bailey Date: Mon, 25 Aug 2025 17:44:48 -0500 Subject: [PATCH] Use truncateAndInvalidate strategy --- .../queries/bookmarks/useBookmarkMutation.ts | 4 ++-- .../queries/bookmarks/useBookmarksQuery.ts | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/state/queries/bookmarks/useBookmarkMutation.ts b/src/state/queries/bookmarks/useBookmarkMutation.ts index 374405102a..4ebe19949f 100644 --- a/src/state/queries/bookmarks/useBookmarkMutation.ts +++ b/src/state/queries/bookmarks/useBookmarkMutation.ts @@ -3,7 +3,7 @@ import {useMutation, useQueryClient} from '@tanstack/react-query' import {isNetworkError} from '#/lib/strings/errors' import {logger} from '#/logger' import {updatePostShadow} from '#/state/cache/post-shadow' -import {bookmarksQueryKeyRoot} from '#/state/queries/bookmarks/useBookmarksQuery' +import {truncateAndInvalidate as invalidateBookmarksQuery} from '#/state/queries/bookmarks/useBookmarksQuery' import {useAgent} from '#/state/session' type MutationArgs = @@ -30,7 +30,7 @@ export function useBookmarkMutation() { } }, onSuccess() { - qc.invalidateQueries({queryKey: [bookmarksQueryKeyRoot]}) + invalidateBookmarksQuery(qc) }, onError(e, args) { if (args.action === 'create') { diff --git a/src/state/queries/bookmarks/useBookmarksQuery.ts b/src/state/queries/bookmarks/useBookmarksQuery.ts index ff53a48b02..07a65926c4 100644 --- a/src/state/queries/bookmarks/useBookmarksQuery.ts +++ b/src/state/queries/bookmarks/useBookmarksQuery.ts @@ -1,6 +1,7 @@ import {type AppBskyBookmarkGetBookmarks} from '@atproto/api' import { type InfiniteData, + type QueryClient, type QueryKey, useInfiniteQuery, } from '@tanstack/react-query' @@ -31,3 +32,19 @@ export function useBookmarksQuery() { getNextPageParam: lastPage => lastPage.cursor, }) } + +export async function truncateAndInvalidate(qc: QueryClient) { + qc.setQueriesData>( + {queryKey: [bookmarksQueryKeyRoot]}, + data => { + if (data) { + return { + pageParams: data.pageParams.slice(0, 1), + pages: data.pages.slice(0, 1), + } + } + return data + }, + ) + return qc.invalidateQueries({queryKey: [bookmarksQueryKeyRoot]}) +}