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