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