diff options
| author | MohamedBassem <me@mbassem.com> | 2024-04-07 18:30:00 +0100 |
|---|---|---|
| committer | MohamedBassem <me@mbassem.com> | 2024-04-07 19:00:00 +0100 |
| commit | 79d61be7e15dc5d23fb687a5f71e0097088a99ac (patch) | |
| tree | da72f19cdb74ef4ed2a75bcfddd13bdfb874f205 /apps/web/components/dashboard/preview/NoteEditor.tsx | |
| parent | 44918316007ed3153dc802a4b11db3ea09024a8b (diff) | |
| download | karakeep-79d61be7e15dc5d23fb687a5f71e0097088a99ac.tar.zst | |
feature: Extract hook logic into separate package and add a new action bar in bookmark preview
Diffstat (limited to 'apps/web/components/dashboard/preview/NoteEditor.tsx')
| -rw-r--r-- | apps/web/components/dashboard/preview/NoteEditor.tsx | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/apps/web/components/dashboard/preview/NoteEditor.tsx b/apps/web/components/dashboard/preview/NoteEditor.tsx new file mode 100644 index 00000000..6011e89d --- /dev/null +++ b/apps/web/components/dashboard/preview/NoteEditor.tsx @@ -0,0 +1,42 @@ +import { Textarea } from "@/components/ui/textarea"; +import { toast } from "@/components/ui/use-toast"; +import { useClientConfig } from "@/lib/clientConfig"; + +import type { ZBookmark } from "@hoarder/trpc/types/bookmarks"; +import { useUpdateBookmark } from "@hoarder/shared-react/hooks/bookmarks"; + +export function NoteEditor({ bookmark }: { bookmark: ZBookmark }) { + const demoMode = !!useClientConfig().demoMode; + + const updateBookmarkMutator = useUpdateBookmark({ + onSuccess: () => { + toast({ + description: "The bookmark has been updated!", + }); + }, + onError: () => { + toast({ + description: "Something went wrong while saving the note", + variant: "destructive", + }); + }, + }); + + return ( + <Textarea + className="h-44 w-full overflow-auto rounded bg-background p-2 text-sm text-gray-400 dark:text-gray-300" + defaultValue={bookmark.note ?? ""} + disabled={demoMode} + placeholder="Write some notes ..." + onBlur={(e) => { + if (e.currentTarget.value == bookmark.note) { + return; + } + updateBookmarkMutator.mutate({ + bookmarkId: bookmark.id, + note: e.currentTarget.value, + }); + }} + /> + ); +} |
