From 86d74e3f32dd5bccc8df195b55391e206df9a1c4 Mon Sep 17 00:00:00 2001 From: Mohamed Bassem Date: Fri, 27 Dec 2024 16:09:29 +0000 Subject: feat: Implement highlights support for links. Fixes #620 --- packages/shared-react/hooks/highlights.ts | 46 +++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 packages/shared-react/hooks/highlights.ts (limited to 'packages/shared-react/hooks/highlights.ts') diff --git a/packages/shared-react/hooks/highlights.ts b/packages/shared-react/hooks/highlights.ts new file mode 100644 index 00000000..299ed697 --- /dev/null +++ b/packages/shared-react/hooks/highlights.ts @@ -0,0 +1,46 @@ +import { api } from "../trpc"; + +export function useCreateHighlight( + ...opts: Parameters +) { + const apiUtils = api.useUtils(); + return api.highlights.create.useMutation({ + ...opts[0], + onSuccess: (res, req, meta) => { + apiUtils.highlights.getForBookmark.invalidate({ + bookmarkId: req.bookmarkId, + }); + return opts[0]?.onSuccess?.(res, req, meta); + }, + }); +} + +export function useUpdateHighlight( + ...opts: Parameters +) { + const apiUtils = api.useUtils(); + return api.highlights.update.useMutation({ + ...opts[0], + onSuccess: (res, req, meta) => { + apiUtils.highlights.getForBookmark.invalidate({ + bookmarkId: res.bookmarkId, + }); + return opts[0]?.onSuccess?.(res, req, meta); + }, + }); +} + +export function useDeleteHighlight( + ...opts: Parameters +) { + const apiUtils = api.useUtils(); + return api.highlights.delete.useMutation({ + ...opts[0], + onSuccess: (res, req, meta) => { + apiUtils.highlights.getForBookmark.invalidate({ + bookmarkId: res.bookmarkId, + }); + return opts[0]?.onSuccess?.(res, req, meta); + }, + }); +} -- cgit v1.2.3-70-g09d2