diff options
| author | MohamedBassem <me@mbassem.com> | 2024-03-20 18:26:59 +0000 |
|---|---|---|
| committer | MohamedBassem <me@mbassem.com> | 2024-03-20 18:26:59 +0000 |
| commit | 03faa429f9342b4b5aa15d870b4e86ee5bf41650 (patch) | |
| tree | de5e49d664fa50adb8c8b625a93dddcef12d57a5 /apps/web/components/dashboard/bookmarks/UpdatableBookmarksGrid.tsx | |
| parent | 20d1a90e65d08c16f30d8d9adac005dda7f4dad1 (diff) | |
| download | karakeep-03faa429f9342b4b5aa15d870b4e86ee5bf41650.tar.zst | |
fix(web): Greatly improve the search feeling by removing the flicker
Diffstat (limited to '')
| -rw-r--r-- | apps/web/components/dashboard/bookmarks/UpdatableBookmarksGrid.tsx | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/apps/web/components/dashboard/bookmarks/UpdatableBookmarksGrid.tsx b/apps/web/components/dashboard/bookmarks/UpdatableBookmarksGrid.tsx new file mode 100644 index 00000000..a344320e --- /dev/null +++ b/apps/web/components/dashboard/bookmarks/UpdatableBookmarksGrid.tsx @@ -0,0 +1,41 @@ +"use client"; + +import { api } from "@/lib/trpc"; + +import type { + ZGetBookmarksRequest, + ZGetBookmarksResponse, +} from "@hoarder/trpc/types/bookmarks"; + +import BookmarksGrid from "./BookmarksGrid"; + +export default function UpdatableBookmarksGrid({ + query, + bookmarks: initialBookmarks, + showEditorCard = false, +}: { + query: ZGetBookmarksRequest; + bookmarks: ZGetBookmarksResponse; + showEditorCard?: boolean; + itemsPerPage?: number; +}) { + const { data, fetchNextPage, hasNextPage, isFetchingNextPage } = + api.bookmarks.getBookmarks.useInfiniteQuery(query, { + initialData: () => ({ + pages: [initialBookmarks], + pageParams: [query.cursor], + }), + initialCursor: null, + getNextPageParam: (lastPage) => lastPage.nextCursor, + }); + + return ( + <BookmarksGrid + bookmarks={data!.pages.flatMap((b) => b.bookmarks)} + hasNextPage={hasNextPage} + fetchNextPage={() => fetchNextPage()} + isFetchingNextPage={isFetchingNextPage} + showEditorCard={showEditorCard} + /> + ); +} |
