| 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, | |
| } | |
| } | |