aboutsummaryrefslogtreecommitdiffstats
path: root/apps/mobile/app/dashboard/add-note.tsx
diff options
context:
space:
mode:
authorMohamedBassem <me@mbassem.com>2024-08-26 13:13:24 +0300
committerMohamedBassem <me@mbassem.com>2024-08-26 13:13:24 +0300
commit8410a6d3c125cf27daa4e3abeb4c4a4d228e2cfd (patch)
tree76c4b52283d6c096fc17fe3f554651dca5e19988 /apps/mobile/app/dashboard/add-note.tsx
parentd8cf7c17a2b0a437cf4a2f983f5ab48fba775a64 (diff)
downloadkarakeep-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.tsx114
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>
- );
-}