From 1ba5994b7a17a1dc777aa947a0d0f29054d4ad5b Mon Sep 17 00:00:00 2001 From: Carsten Koch Date: Wed, 22 May 2024 18:58:39 +0200 Subject: [PATCH 1/3] fix: notes editor UI represents the correct save state --- .../ui-elements/notes-writer/NotesWriter.tsx | 37 ++++++++++++++++++- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/components/ui-elements/notes-writer/NotesWriter.tsx b/components/ui-elements/notes-writer/NotesWriter.tsx index 11faa1e4c..68a6762d4 100644 --- a/components/ui-elements/notes-writer/NotesWriter.tsx +++ b/components/ui-elements/notes-writer/NotesWriter.tsx @@ -4,7 +4,6 @@ import Link from "@tiptap/extension-link"; import Placeholder from "@tiptap/extension-placeholder"; import { EditorContent, useEditor } from "@tiptap/react"; import StarterKit from "@tiptap/starter-kit"; -import { isEqual } from "lodash"; import { FC, useEffect } from "react"; import styles from "./NotesWriter.module.css"; @@ -19,6 +18,40 @@ type TransformNotesVersionType = { notesJson?: any; }; +type GenericObject = { [key: string]: any }; + +const compareNotes = (obj1: GenericObject, obj2: GenericObject): boolean => { + for (const key in obj1) { + const val1 = obj1[key]; + if (!(key in obj2) && !!val1) return false; + else { + const val2 = obj2[key]; + if ( + typeof val1 === "object" && + val1 !== null && + typeof val2 === "object" && + val2 !== null + ) { + if (!compareNotes(val1, val2)) return false; + } else { + if (val1 !== val2) return false; + } + } + } + for (const key in obj2) if (!(key in obj1) && !!obj2[key]) return false; + return true; +}; + +const isUpToDate = ( + notes: EditorJsonContent | string | undefined, + editorJson: EditorJsonContent | undefined +) => { + if (!notes) return false; + if (!editorJson) return false; + if (typeof notes === "string") return false; + return compareNotes(notes, editorJson); +}; + export const transformNotesVersion = ({ version, notes, @@ -88,7 +121,7 @@ const NotesWriter: FC = ({ editorProps: { attributes: { class: `${styles.editor} ${ - isEqual(notes, editor.getJSON()) ? "" : styles.unsaved + isUpToDate(notes, editor.getJSON()) ? "" : styles.unsaved }`, }, }, From 46f37c9a579f09259b0b4b334887f51cba374bf5 Mon Sep 17 00:00:00 2001 From: Carsten Koch Date: Wed, 22 May 2024 18:58:49 +0200 Subject: [PATCH 2/3] fix: clean up --- helpers/functional.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/helpers/functional.ts b/helpers/functional.ts index a4547cb88..454b59045 100644 --- a/helpers/functional.ts +++ b/helpers/functional.ts @@ -21,10 +21,10 @@ export const toLocaleDateString = (date?: Date) => year: "numeric", }); export const toISODateString = (date: Date) => { - var year = date.getFullYear(); + const year = date.getFullYear(); // Months are zero-based, so we add 1 to get the correct month - var month = (date.getMonth() + 1).toString().padStart(2, "0"); - var day = date.getDate().toString().padStart(2, "0"); + const month = (date.getMonth() + 1).toString().padStart(2, "0"); + const day = date.getDate().toString().padStart(2, "0"); return year + "-" + month + "-" + day; }; From 232d33347c5f30931d697685881c6dbe6b3902d3 Mon Sep 17 00:00:00 2001 From: Carsten Koch Date: Wed, 22 May 2024 19:03:03 +0200 Subject: [PATCH 3/3] docs: release description --- docs/releases/next.md | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/docs/releases/next.md b/docs/releases/next.md index e4a0256d1..22f07065e 100644 --- a/docs/releases/next.md +++ b/docs/releases/next.md @@ -1,9 +1,3 @@ -# Inbox Workflow optimieren und Editieren verlässlicher machen (Version :VERSION) +# UI Optimierung für Notizen Editor (Version :VERSION) -## Inbox Workflow optimiert - -Die UI ist optimiert. Der aktuelle Kontext wird berücksichtigt oder kann angepasst werden. - -## Editieren zuverlässiger - -Beim Speichern in der Datenbank gingen immer wieder die letzte Eingaben verloren. Der Prozess ist nun entkoppelt und der Editor wird nicht mehr aktualisiert, wenn die gespeicherten Einträge an die Komponente übergeben werden. Der Editor vergleicht ständig, was ihm als gespeichert übergeben wird mit dem, was er gerade für einen Inhalt hat und somit weiß der Anwender ständig, ob seine letzten Daten gespeichert sind oder nicht. +Der Notizen Editor hat nicht korrekt angezeigt, ob eine Notiz in der Datenbank gespeichert ist. Das ist nun behoben.