From 527df561ef5b2002ff58a1e08afe6edead63d778 Mon Sep 17 00:00:00 2001 From: Erik Michelson Date: Thu, 7 Jan 2021 17:38:06 +0100 Subject: [PATCH] Fix yaml metadata and document title not resetting on deletion (#915) --- .../basic-markdown-renderer.tsx | 12 ++++++--- .../full-markdown-renderer.tsx | 27 ++++++++++++++----- .../hooks/use-extract-first-headline.ts | 2 ++ .../FullMarkdownItConfigurator.tsx | 4 +-- src/redux/document-content/methods.ts | 3 ++- 5 files changed, 36 insertions(+), 12 deletions(-) diff --git a/src/components/markdown-renderer/basic-markdown-renderer.tsx b/src/components/markdown-renderer/basic-markdown-renderer.tsx index fa03032a2..4e4ed36f2 100644 --- a/src/components/markdown-renderer/basic-markdown-renderer.tsx +++ b/src/components/markdown-renderer/basic-markdown-renderer.tsx @@ -23,6 +23,7 @@ export interface BasicMarkdownRendererProps { markdownIt: MarkdownIt, documentReference?: RefObject onBeforeRendering?: () => void + onPostRendering?: () => void } export const BasicMarkdownRenderer: React.FC = ({ @@ -32,7 +33,8 @@ export const BasicMarkdownRenderer: React.FC { const maxLength = useSelector((state: ApplicationState) => state.config.maxDocumentLength) @@ -50,8 +52,12 @@ export const BasicMarkdownRenderer: React.FC diff --git a/src/components/markdown-renderer/full-markdown-renderer.tsx b/src/components/markdown-renderer/full-markdown-renderer.tsx index c47ff5819..dc407d72c 100644 --- a/src/components/markdown-renderer/full-markdown-renderer.tsx +++ b/src/components/markdown-renderer/full-markdown-renderer.tsx @@ -44,7 +44,8 @@ export const FullMarkdownRenderer: React.FC() const firstHeadingRef = useRef() @@ -60,7 +61,7 @@ export const FullMarkdownRenderer: React.FC { return (new FullMarkdownItConfigurator( !!onMetaDataChange, - error => setYamlError(error), + errorState => hasNewYamlError.current = errorState, rawMeta => { rawMetaRef.current = rawMeta }, @@ -74,21 +75,35 @@ export const FullMarkdownRenderer: React.FC { + hasNewYamlError.current = false rawMetaRef.current = undefined }, []) + const checkYamlErrorState = useCallback(() => { + if (hasNewYamlError.current !== showYamlError) { + setShowYamlError(hasNewYamlError.current) + } + }, [setShowYamlError, showYamlError]) + return (
- + - +
) } diff --git a/src/components/markdown-renderer/hooks/use-extract-first-headline.ts b/src/components/markdown-renderer/hooks/use-extract-first-headline.ts index 2e1644645..828e384fd 100644 --- a/src/components/markdown-renderer/hooks/use-extract-first-headline.ts +++ b/src/components/markdown-renderer/hooks/use-extract-first-headline.ts @@ -24,6 +24,8 @@ export const useExtractFirstHeadline = (documentElement: React.RefObject void, + private passYamlErrorState: (error: boolean) => void, private onRawMeta: (rawMeta: RawYAMLMetadata) => void, private onToc: (toc: TocAst) => void, private onLineMarkers: (lineMarkers: LineMarkers[]) => void @@ -45,7 +45,7 @@ export class FullMarkdownItConfigurator extends BasicMarkdownItConfigurator { !this.useFrontmatter ? undefined : { - onYamlError: (error: boolean) => this.onYamlError(error), + onYamlError: (hasError: boolean) => this.passYamlErrorState(hasError), onRawMeta: (rawMeta: RawYAMLMetadata) => this.onRawMeta(rawMeta) }) }, diff --git a/src/redux/document-content/methods.ts b/src/redux/document-content/methods.ts index 7398a384d..2c6ac1f70 100644 --- a/src/redux/document-content/methods.ts +++ b/src/redux/document-content/methods.ts @@ -6,6 +6,7 @@ import { store } from '..' import { YAMLMetaData } from '../../components/editor/yaml-metadata/yaml-metadata' +import { initialState } from './reducers' import { DocumentContentActionType, SetDocumentContentAction, @@ -31,7 +32,7 @@ export const setNoteId = (noteId: string): void => { export const setDocumentMetadata = (metadata: YAMLMetaData | undefined): void => { if (!metadata) { - return + metadata = initialState.metadata } const action: SetDocumentMetadataAction = { type: DocumentContentActionType.SET_DOCUMENT_METADATA,