diff --git a/packages/web/src/javascripts/Components/NoteView/NoteView.tsx b/packages/web/src/javascripts/Components/NoteView/NoteView.tsx index 8d771f123..78b4ba7b9 100644 --- a/packages/web/src/javascripts/Components/NoteView/NoteView.tsx +++ b/packages/web/src/javascripts/Components/NoteView/NoteView.tsx @@ -231,16 +231,8 @@ class NoteView extends AbstractComponent { } } - setPlainEditorRef = (ref: PlainEditorInterface | undefined) => { + setPlainEditorRef = (ref: PlainEditorInterface | null) => { this.plainEditorRef = ref || undefined - - if (!this.plainEditorRef) { - return - } - - if (this.controller.isTemplateNote && this.controller.templateNoteOptions?.autofocusBehavior === 'editor') { - this.plainEditorRef.focus() - } } override componentDidUpdate(_prevProps: NoteViewProps, prevState: State): void { @@ -956,7 +948,7 @@ class NoteView extends AbstractComponent { this.setPlainEditorRef(ref || undefined)} + ref={this.setPlainEditorRef} controller={this.controller} locked={this.state.noteLocked} onFocus={this.onPlainFocus} diff --git a/packages/web/src/javascripts/Components/NoteView/PlainEditor/PlainEditor.tsx b/packages/web/src/javascripts/Components/NoteView/PlainEditor/PlainEditor.tsx index 76781f70f..d6ec82d55 100644 --- a/packages/web/src/javascripts/Components/NoteView/PlainEditor/PlainEditor.tsx +++ b/packages/web/src/javascripts/Components/NoteView/PlainEditor/PlainEditor.tsx @@ -132,9 +132,15 @@ export const PlainEditor = forwardRef( useEffect(() => { if (controller.isTemplateNote && controller.templateNoteOptions?.autofocusBehavior === 'editor') { - setTimeout(() => { - focusEditor() - }) + focusEditor() + } + }, [controller, focusEditor]) + + useEffect(() => { + const shouldFocus = controller.isTemplateNote && controller.templateNoteOptions?.autofocusBehavior === 'editor' + + if (shouldFocus) { + focusEditor() } }, [controller, focusEditor]) @@ -155,6 +161,10 @@ export const PlainEditor = forwardRef( }, [reloadPreferences, application]) useEffect(() => { + if (previousSpellcheck === undefined) { + return + } + if (spellcheck !== previousSpellcheck) { setTextareaUnloading(true) setTimeout(() => {