import { useCallback } from 'react' import type { EditorState } from 'lexical' import { WorkflowHistoryEvent, useNodeDataUpdate, useWorkflowHistory } from '../hooks' import type { NoteTheme } from './types' export const useNote = (id: string) => { const { handleNodeDataUpdateWithSyncDraft } = useNodeDataUpdate() const { saveStateToHistory } = useWorkflowHistory() const handleThemeChange = useCallback((theme: NoteTheme) => { handleNodeDataUpdateWithSyncDraft({ id, data: { theme } }) saveStateToHistory(WorkflowHistoryEvent.NoteChange) }, [handleNodeDataUpdateWithSyncDraft, id, saveStateToHistory]) const handleEditorChange = useCallback((editorState: EditorState) => { if (!editorState?.isEmpty()) handleNodeDataUpdateWithSyncDraft({ id, data: { text: JSON.stringify(editorState) } }) else handleNodeDataUpdateWithSyncDraft({ id, data: { text: '' } }) }, [handleNodeDataUpdateWithSyncDraft, id]) const handleShowAuthorChange = useCallback((showAuthor: boolean) => { handleNodeDataUpdateWithSyncDraft({ id, data: { showAuthor } }) saveStateToHistory(WorkflowHistoryEvent.NoteChange) }, [handleNodeDataUpdateWithSyncDraft, id, saveStateToHistory]) return { handleThemeChange, handleEditorChange, handleShowAuthorChange, } }