diff options
| author | MohamedBassem <me@mbassem.com> | 2024-02-20 14:05:53 +0000 |
|---|---|---|
| committer | MohamedBassem <me@mbassem.com> | 2024-02-20 14:05:53 +0000 |
| commit | 7c04276bacf6e9ecc0cce4a2ece7a25dc8e5deaa (patch) | |
| tree | 22064a23a42b37e6b42f4c3cc3f1ff5da3fccdb7 /packages/web/app/dashboard/bookmarks/components | |
| parent | fb5b114ec4d42668aeb4fa0dce30125f1cac04e7 (diff) | |
| download | karakeep-7c04276bacf6e9ecc0cce4a2ece7a25dc8e5deaa.tar.zst | |
ui: hydrate the react query cache in the client side components
Diffstat (limited to 'packages/web/app/dashboard/bookmarks/components')
4 files changed, 23 insertions, 13 deletions
diff --git a/packages/web/app/dashboard/bookmarks/components/AddLink.tsx b/packages/web/app/dashboard/bookmarks/components/AddLink.tsx index 6498b313..7663543f 100644 --- a/packages/web/app/dashboard/bookmarks/components/AddLink.tsx +++ b/packages/web/app/dashboard/bookmarks/components/AddLink.tsx @@ -3,7 +3,6 @@ import { Form, FormControl, FormField, FormItem } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; import { Plus } from "lucide-react"; -import { useRouter } from "next/navigation"; import { useForm, SubmitErrorHandler } from "react-hook-form"; import { z } from "zod"; import { zodResolver } from "@hookform/resolvers/zod"; @@ -17,14 +16,14 @@ const formSchema = z.object({ }); export default function AddLink() { - const router = useRouter(); const { setLoading } = useLoadingCard(); + const invalidateBookmarksCache = api.useUtils().bookmarks.invalidate; const bookmarkLinkMutator = api.bookmarks.bookmarkLink.useMutation({ onMutate: () => { setLoading(true); }, onSuccess: () => { - router.refresh(); + invalidateBookmarksCache(); }, onError: () => { toast({ description: "Something went wrong", variant: "destructive" }); diff --git a/packages/web/app/dashboard/bookmarks/components/BookmarkOptions.tsx b/packages/web/app/dashboard/bookmarks/components/BookmarkOptions.tsx index 1360f966..a72478c1 100644 --- a/packages/web/app/dashboard/bookmarks/components/BookmarkOptions.tsx +++ b/packages/web/app/dashboard/bookmarks/components/BookmarkOptions.tsx @@ -2,8 +2,7 @@ import { useToast } from "@/components/ui/use-toast"; import { api } from "@/lib/trpc"; -import { ZBookmark, ZUpdateBookmarksRequest } from "@/lib/types/api/bookmarks"; -import { useRouter } from "next/navigation"; +import { ZBookmark } from "@/lib/types/api/bookmarks"; import { Button } from "@/components/ui/button"; import { DropdownMenu, @@ -15,9 +14,10 @@ import { Archive, MoreHorizontal, RotateCw, Star, Trash2 } from "lucide-react"; export default function BookmarkOptions({ bookmark }: { bookmark: ZBookmark }) { const { toast } = useToast(); - const router = useRouter(); const linkId = bookmark.id; + const invalidateBookmarksCache = api.useUtils().bookmarks.invalidate; + const onError = () => { toast({ variant: "destructive", @@ -26,7 +26,7 @@ export default function BookmarkOptions({ bookmark }: { bookmark: ZBookmark }) { }); }; const onSettled = () => { - router.refresh(); + invalidateBookmarksCache(); }; const deleteBookmarkMutator = api.bookmarks.deleteBookmark.useMutation({ onSuccess: () => { diff --git a/packages/web/app/dashboard/bookmarks/components/Bookmarks.tsx b/packages/web/app/dashboard/bookmarks/components/Bookmarks.tsx index 0afb42bd..44495f1f 100644 --- a/packages/web/app/dashboard/bookmarks/components/Bookmarks.tsx +++ b/packages/web/app/dashboard/bookmarks/components/Bookmarks.tsx @@ -14,10 +14,12 @@ export default async function Bookmarks({ redirect("/"); } - const bookmarks = await api.bookmarks.getBookmarks({ + const query = { favourited, archived, - }); + }; + + const bookmarks = await api.bookmarks.getBookmarks(query); // TODO: This needs to be polished return ( @@ -27,7 +29,7 @@ export default async function Bookmarks({ {bookmarks.bookmarks.length == 0 ? ( "No bookmarks" ) : ( - <BookmarksGrid bookmarks={bookmarks.bookmarks} /> + <BookmarksGrid query={query} bookmarks={bookmarks.bookmarks} /> )} </div> </> diff --git a/packages/web/app/dashboard/bookmarks/components/BookmarksGrid.tsx b/packages/web/app/dashboard/bookmarks/components/BookmarksGrid.tsx index 1963a980..c1c8f3e0 100644 --- a/packages/web/app/dashboard/bookmarks/components/BookmarksGrid.tsx +++ b/packages/web/app/dashboard/bookmarks/components/BookmarksGrid.tsx @@ -3,7 +3,8 @@ import { useLoadingCard } from "@/lib/hooks/use-loading-card"; import BookmarkCardSkeleton from "./BookmarkCardSkeleton"; import LinkCard from "./LinkCard"; -import { ZBookmark } from "@/lib/types/api/bookmarks"; +import { ZBookmark, ZGetBookmarksRequest } from "@/lib/types/api/bookmarks"; +import { api } from "@/lib/trpc"; function renderBookmark(bookmark: ZBookmark) { switch (bookmark.content.type) { @@ -12,16 +13,24 @@ function renderBookmark(bookmark: ZBookmark) { } } +export const dynamic = "force-dynamic"; + export default function BookmarksGrid({ - bookmarks, + query, + bookmarks: initialBookmarks, }: { + query: ZGetBookmarksRequest; bookmarks: ZBookmark[]; }) { + const { data } = api.bookmarks.getBookmarks.useQuery(query, { + initialData: { bookmarks: initialBookmarks }, + staleTime: Infinity, + }); const { loading } = useLoadingCard(); return ( <div className="container grid grid-cols-1 gap-4 sm:grid-cols-1 md:grid-cols-2 lg:grid-cols-3"> {loading && <BookmarkCardSkeleton />} - {bookmarks.map((b) => renderBookmark(b))} + {data.bookmarks.map((b) => renderBookmark(b))} </div> ); } |
