diff options
| author | MohamedBassem <me@mbassem.com> | 2024-08-26 13:13:24 +0300 |
|---|---|---|
| committer | MohamedBassem <me@mbassem.com> | 2024-08-26 13:13:24 +0300 |
| commit | 8410a6d3c125cf27daa4e3abeb4c4a4d228e2cfd (patch) | |
| tree | 76c4b52283d6c096fc17fe3f554651dca5e19988 /apps/mobile/app/dashboard/add-note.tsx | |
| parent | d8cf7c17a2b0a437cf4a2f983f5ab48fba775a64 (diff) | |
| download | karakeep-8410a6d3c125cf27daa4e3abeb4c4a4d228e2cfd.tar.zst | |
ui(mobile): Change the add/edit note editor dialogs to be bottom sheets
Diffstat (limited to 'apps/mobile/app/dashboard/add-note.tsx')
| -rw-r--r-- | apps/mobile/app/dashboard/add-note.tsx | 114 |
1 files changed, 0 insertions, 114 deletions
diff --git a/apps/mobile/app/dashboard/add-note.tsx b/apps/mobile/app/dashboard/add-note.tsx deleted file mode 100644 index 8aa31936..00000000 --- a/apps/mobile/app/dashboard/add-note.tsx +++ /dev/null @@ -1,114 +0,0 @@ -import { useEffect, useState } from "react"; -import { Text, View } from "react-native"; -import { Stack, useLocalSearchParams, useRouter } from "expo-router"; -import { Button } from "@/components/ui/Button"; -import { Input } from "@/components/ui/Input"; -import { api } from "@/lib/trpc"; - -import { - useCreateBookmark, - useUpdateBookmarkText, -} from "@hoarder/shared-react/hooks/bookmarks"; -import { BookmarkTypes } from "@hoarder/shared/types/bookmarks"; - -export default function AddNote() { - const { bookmarkId } = useLocalSearchParams(); - if (bookmarkId && typeof bookmarkId !== "string") { - throw new Error("Unexpected param type"); - } - - const isEditing = !!bookmarkId; - - const [text, setText] = useState(""); - const [error, setError] = useState<string | undefined>(); - const router = useRouter(); - - const { data: bookmark } = api.bookmarks.getBookmark.useQuery( - { bookmarkId: bookmarkId! }, - { - enabled: !!bookmarkId, - }, - ); - - useEffect(() => { - if (bookmark) { - if (bookmark.content.type !== BookmarkTypes.TEXT) { - throw new Error("Wrong content type rendered"); - } - setText(bookmark.content.text); - } - }, [bookmark]); - - const onSuccess = () => { - if (router.canGoBack()) { - router.replace("./"); - } else { - router.replace("dashboard"); - } - }; - - const { mutate: createBookmark } = useCreateBookmark({ - onSuccess, - onError: (e) => { - let message; - if (e.data?.zodError) { - const zodError = e.data.zodError; - message = JSON.stringify(zodError); - } else { - message = `Something went wrong: ${e.message}`; - } - setError(message); - }, - }); - - const { mutate: updateBookmark } = useUpdateBookmarkText({ - onSuccess, - onError: (e) => { - let message; - if (e.data?.zodError) { - const zodError = e.data.zodError; - message = JSON.stringify(zodError); - } else { - message = `Something went wrong: ${e.message}`; - } - setError(message); - }, - }); - - const mutate = (text: string) => { - if (isEditing) { - updateBookmark({ - bookmarkId, - text, - }); - } else { - createBookmark({ type: BookmarkTypes.TEXT, text }); - } - }; - - return ( - <View className="flex gap-2 p-4"> - <Stack.Screen - options={{ - title: isEditing ? "Edit Note" : "Add Note", - }} - /> - {error && ( - <Text className="w-full text-center text-red-500">{error}</Text> - )} - <Input - value={text} - onChangeText={setText} - multiline - numberOfLines={8} - placeholder="What's on your mind?" - autoFocus - textAlignVertical="top" - /> - <Button - onPress={() => mutate(text)} - label={isEditing ? "Save" : "Add Note"} - /> - </View> - ); -} |
