aboutsummaryrefslogtreecommitdiffstats
path: root/packages/shared-react/hooks/highlights.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/shared-react/hooks/highlights.ts')
-rw-r--r--packages/shared-react/hooks/highlights.ts46
1 files changed, 46 insertions, 0 deletions
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<typeof api.highlights.create.useMutation>
+) {
+ 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<typeof api.highlights.update.useMutation>
+) {
+ 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<typeof api.highlights.delete.useMutation>
+) {
+ 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);
+ },
+ });
+}