aboutsummaryrefslogtreecommitdiffstats
path: root/apps/web/components/dashboard/bookmarks/UpdatableBookmarksGrid.tsx
diff options
context:
space:
mode:
authorMohamedBassem <me@mbassem.com>2024-03-20 18:26:59 +0000
committerMohamedBassem <me@mbassem.com>2024-03-20 18:26:59 +0000
commit03faa429f9342b4b5aa15d870b4e86ee5bf41650 (patch)
treede5e49d664fa50adb8c8b625a93dddcef12d57a5 /apps/web/components/dashboard/bookmarks/UpdatableBookmarksGrid.tsx
parent20d1a90e65d08c16f30d8d9adac005dda7f4dad1 (diff)
downloadkarakeep-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.tsx41
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}
+ />
+ );
+}