import { Editor } from "novel"; import { DialogClose, DialogFooter, } from "../ui/dialog"; import { Input } from "../ui/input"; import { Markdown } from "tiptap-markdown"; import { useEffect, useRef, useState } from "react"; import { FilterSpaces } from "./FilterCombobox"; import { useMemory } from "@/contexts/MemoryContext"; import { Loader, Plus, Trash, X } from "lucide-react"; import { motion } from "framer-motion"; import { StoredContent } from "@/server/db/schema"; import { fetchContent } from "@/actions/db"; import { isArraysEqual } from "@/lib/utils"; import DeleteConfirmation from "./DeleteConfirmation"; export function NoteEdit({ memory, closeDialog, onDelete }: { memory: StoredContent, closeDialog: () => any, onDelete?: () => void }) { const { updateMemory, deleteMemory } = useMemory(); const [initialSpaces, setInitialSpaces] = useState([]) const [selectedSpacesId, setSelectedSpacesId] = useState([]); const inputRef = useRef(null); const [name, setName] = useState(memory.title ?? ""); const [content, setContent] = useState(memory.content); const [loading, setLoading] = useState(false); function check(): boolean { const data = { name: name.trim(), content, }; if (!data.name || data.name.length < 1) { if (!inputRef.current) { alert("Please enter a name for the note"); return false; } inputRef.current.value = ""; inputRef.current.placeholder = "Please enter a title for the note"; inputRef.current.dataset["error"] = "true"; setTimeout(() => { inputRef.current!.placeholder = "Title of the note"; inputRef.current!.dataset["error"] = "false"; }, 500); inputRef.current.focus(); return false; } return true; } useEffect(() => { fetchContent(memory.id).then((data) => { if (data?.spaces) { setInitialSpaces(data.spaces) setSelectedSpacesId(data.spaces) } }) }, []) return (
setName(e.target.value)} /> { if (!editor) return; setContent(editor.storage.markdown.getMarkdown()); }} extensions={[Markdown]} className="novel-editor bg-rgray-4 border-rgray-7 dark mt-5 max-h-[60vh] min-h-[40vh] w-[50vw] overflow-y-auto rounded-lg border [&>div>div]:p-5" /> { deleteMemory(memory.id) onDelete?.() }}> Cancel
); }