diff options
| author | MohamedBassem <me@mbassem.com> | 2024-02-16 20:33:00 +0000 |
|---|---|---|
| committer | MohamedBassem <me@mbassem.com> | 2024-02-16 20:33:00 +0000 |
| commit | 6febe13b3f4ad4eff3f205ece445b3577255bf41 (patch) | |
| tree | 776e5dd7337ce21eaf6f4b7efc71cd587c21bf9d /packages/web/app/dashboard/bookmarks/components | |
| parent | e4f4270790936db81364bab057d3cdb4bbdaa31e (diff) | |
| download | karakeep-6febe13b3f4ad4eff3f205ece445b3577255bf41.tar.zst | |
Migrating to react query for client side queries
Diffstat (limited to 'packages/web/app/dashboard/bookmarks/components')
| -rw-r--r-- | packages/web/app/dashboard/bookmarks/components/AddLink.tsx | 26 | ||||
| -rw-r--r-- | packages/web/app/dashboard/bookmarks/components/BookmarkOptions.tsx | 92 |
2 files changed, 59 insertions, 59 deletions
diff --git a/packages/web/app/dashboard/bookmarks/components/AddLink.tsx b/packages/web/app/dashboard/bookmarks/components/AddLink.tsx index e8ecec35..34f043e7 100644 --- a/packages/web/app/dashboard/bookmarks/components/AddLink.tsx +++ b/packages/web/app/dashboard/bookmarks/components/AddLink.tsx @@ -17,21 +17,19 @@ const formSchema = z.object({ export default function AddLink() { const router = useRouter(); + const bookmarkLinkMutator = api.bookmarks.bookmarkLink.useMutation({ + onSuccess: () => { + router.refresh(); + }, + onError: () => { + toast({ description: "Something went wrong", variant: "destructive" }); + }, + }); const form = useForm<z.infer<typeof formSchema>>({ resolver: zodResolver(formSchema), }); - async function onSubmit(value: z.infer<typeof formSchema>) { - try { - await api.bookmarks.bookmarkLink.mutate({ url: value.url, type: "link" }); - } catch (e) { - toast({ description: "Something went wrong", variant: "destructive" }); - return; - } - router.refresh(); - } - const onError: SubmitErrorHandler<z.infer<typeof formSchema>> = (errors) => { toast({ description: Object.values(errors) @@ -43,7 +41,13 @@ export default function AddLink() { return ( <Form {...form}> - <form onSubmit={form.handleSubmit(onSubmit, onError)}> + <form + onSubmit={form.handleSubmit( + (value) => + bookmarkLinkMutator.mutate({ url: value.url, type: "link" }), + onError, + )} + > <div className="container flex w-full items-center space-x-2 py-4"> <FormField control={form.control} diff --git a/packages/web/app/dashboard/bookmarks/components/BookmarkOptions.tsx b/packages/web/app/dashboard/bookmarks/components/BookmarkOptions.tsx index 4123dc36..1360f966 100644 --- a/packages/web/app/dashboard/bookmarks/components/BookmarkOptions.tsx +++ b/packages/web/app/dashboard/bookmarks/components/BookmarkOptions.tsx @@ -18,61 +18,45 @@ export default function BookmarkOptions({ bookmark }: { bookmark: ZBookmark }) { const router = useRouter(); const linkId = bookmark.id; - const unbookmarkLink = async () => { - try { - await api.bookmarks.deleteBookmark.mutate({ - bookmarkId: linkId, - }); - + const onError = () => { + toast({ + variant: "destructive", + title: "Something went wrong", + description: "There was a problem with your request.", + }); + }; + const onSettled = () => { + router.refresh(); + }; + const deleteBookmarkMutator = api.bookmarks.deleteBookmark.useMutation({ + onSuccess: () => { toast({ description: "The bookmark has been deleted!", }); - } catch (e) { - toast({ - variant: "destructive", - title: "Something went wrong", - description: "There was a problem with your request.", - }); - } - - router.refresh(); - }; + }, + onError, + onSettled, + }); - const updateBookmark = async (req: ZUpdateBookmarksRequest) => { - try { - await api.bookmarks.updateBookmark.mutate(req); + const updateBookmarkMutator = api.bookmarks.updateBookmark.useMutation({ + onSuccess: () => { toast({ description: "The bookmark has been updated!", }); - } catch (e) { - toast({ - variant: "destructive", - title: "Something went wrong", - description: "There was a problem with your request.", - }); - } + }, + onError, + onSettled, + }); - router.refresh(); - }; - - const crawlBookmark = async () => { - try { - await api.bookmarks.recrawlBookmark.mutate({ - bookmarkId: linkId, - }); + const crawlBookmarkMutator = api.bookmarks.recrawlBookmark.useMutation({ + onSuccess: () => { toast({ description: "Re-fetch has been enqueued!", }); - } catch (e) { - toast({ - variant: "destructive", - title: "Something went wrong", - description: "There was a problem with your request.", - }); - } - - router.refresh(); - }; + }, + onError, + onSettled, + }); return ( <DropdownMenu> @@ -84,7 +68,7 @@ export default function BookmarkOptions({ bookmark }: { bookmark: ZBookmark }) { <DropdownMenuContent className="w-fit"> <DropdownMenuItem onClick={() => - updateBookmark({ + updateBookmarkMutator.mutate({ bookmarkId: linkId, favourited: !bookmark.favourited, }) @@ -95,17 +79,29 @@ export default function BookmarkOptions({ bookmark }: { bookmark: ZBookmark }) { </DropdownMenuItem> <DropdownMenuItem onClick={() => - updateBookmark({ bookmarkId: linkId, archived: !bookmark.archived }) + updateBookmarkMutator.mutate({ + bookmarkId: linkId, + archived: !bookmark.archived, + }) } > <Archive className="mr-2 size-4" /> <span>{bookmark.archived ? "Un-archive" : "Archive"}</span> </DropdownMenuItem> - <DropdownMenuItem onClick={crawlBookmark}> + <DropdownMenuItem + onClick={() => + crawlBookmarkMutator.mutate({ bookmarkId: bookmark.id }) + } + > <RotateCw className="mr-2 size-4" /> <span>Refresh</span> </DropdownMenuItem> - <DropdownMenuItem className="text-destructive" onClick={unbookmarkLink}> + <DropdownMenuItem + className="text-destructive" + onClick={() => + deleteBookmarkMutator.mutate({ bookmarkId: bookmark.id }) + } + > <Trash2 className="mr-2 size-4" /> <span>Delete</span> </DropdownMenuItem> |
