diff options
Diffstat (limited to '')
| -rw-r--r-- | packages/shared-react/hooks/users.ts | 14 | ||||
| -rw-r--r-- | packages/shared/types/users.ts | 13 |
2 files changed, 27 insertions, 0 deletions
diff --git a/packages/shared-react/hooks/users.ts b/packages/shared-react/hooks/users.ts new file mode 100644 index 00000000..e896f8e4 --- /dev/null +++ b/packages/shared-react/hooks/users.ts @@ -0,0 +1,14 @@ +import { api } from "../trpc"; + +export function useUpdateUserSettings( + ...opts: Parameters<typeof api.users.updateSettings.useMutation> +) { + const apiUtils = api.useUtils(); + return api.users.updateSettings.useMutation({ + ...opts[0], + onSuccess: (res, req, meta) => { + apiUtils.users.settings.invalidate(); + return opts[0]?.onSuccess?.(res, req, meta); + }, + }); +} diff --git a/packages/shared/types/users.ts b/packages/shared/types/users.ts index 86c5a9ee..62b77e56 100644 --- a/packages/shared/types/users.ts +++ b/packages/shared/types/users.ts @@ -39,3 +39,16 @@ export const zUserStatsResponseSchema = z.object({ numLists: z.number(), numHighlights: z.number(), }); + +export const zUserSettingsSchema = z.object({ + bookmarkClickAction: z.enum([ + "open_original_link", + "expand_bookmark_preview", + ]), +}); + +export type ZUserSettings = z.infer<typeof zUserSettingsSchema>; + +export const zUpdateUserSettingsSchema = zUserSettingsSchema.partial().pick({ + bookmarkClickAction: true, +}); |
