From 49dc06e1a3e47892dc93b6c3c9dcc3c7d892430e Mon Sep 17 00:00:00 2001 From: MohamedBassem Date: Mon, 26 Aug 2024 17:07:10 +0300 Subject: ui(mobile): Merge the editors for notes and links --- .../components/bookmarks/NewBookmarkModal.tsx | 38 +++++++++++++++------- 1 file changed, 27 insertions(+), 11 deletions(-) (limited to 'apps/mobile/components/bookmarks/NewBookmarkModal.tsx') diff --git a/apps/mobile/components/bookmarks/NewBookmarkModal.tsx b/apps/mobile/components/bookmarks/NewBookmarkModal.tsx index 6915c663..218c54b8 100644 --- a/apps/mobile/components/bookmarks/NewBookmarkModal.tsx +++ b/apps/mobile/components/bookmarks/NewBookmarkModal.tsx @@ -14,6 +14,7 @@ import { BookmarkTypes } from "@hoarder/shared/types/bookmarks"; import { Button } from "../ui/Button"; import { Input } from "../ui/Input"; import PageTitle from "../ui/PageTitle"; +import { useToast } from "../ui/Toast"; const NoteEditorModal = React.forwardRef< BottomSheetModal, @@ -23,14 +24,18 @@ const NoteEditorModal = React.forwardRef< const [text, setText] = useState(""); const [error, setError] = useState(); - - const onSuccess = () => { - setText(""); - dismiss(); - }; + const { toast } = useToast(); const { mutate: createBookmark } = useCreateBookmark({ - onSuccess, + onSuccess: (resp) => { + if (resp.alreadyExists) { + toast({ + message: "Bookmark already exists", + }); + } + setText(""); + dismiss(); + }, onError: (e) => { let message; if (e.data?.zodError) { @@ -43,6 +48,19 @@ const NoteEditorModal = React.forwardRef< }, }); + const onSubmit = () => { + const data = text.trim(); + try { + const url = new URL(data); + if (url.protocol != "http:" && url.protocol != "https:") { + throw new Error(`Unsupported URL protocol: ${url.protocol}`); + } + createBookmark({ type: BookmarkTypes.LINK, url: data }); + } catch (e: unknown) { + createBookmark({ type: BookmarkTypes.TEXT, text: data }); + } + }; + return ( - + {error && ( {error} @@ -66,12 +84,10 @@ const NoteEditorModal = React.forwardRef< multiline placeholder="What's on your mind?" autoFocus + autoCapitalize={"none"} textAlignVertical="top" /> -