diff options
| author | Danilo M. <danix@danix.xyz> | 2026-10-16 21:08:04 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-10-16 21:08:04 +0200 |
| commit | cf99dde4805f1792d6a56156b6a0338aa684005c (patch) | |
| tree | c3c04b8e0457b855d50d2e0ca41ffe417630ed3a /desktop/modules/notes/NotesPage.qml | |
| parent | d423ec2646d444523fd44c92864988445cf072d2 (diff) | |
| download | quickshell-cf99dde4805f1792d6a56156b6a0338aa684005c.tar.gz quickshell-cf99dde4805f1792d6a56156b6a0338aa684005c.zip | |
notes: an empty note body gets a file, and the second click writes
Reported from use: a note created with only a title then saved left a db.json
entry with no file beside it, and reopening it said the file was missing.
Cause: FileView.setText("") on a path that view has not loaded creates no
file at all and reports no error. The index write (always non-empty JSON)
was fine, so only the body was lost, which is why it looked like a missing
file rather than a failed save. Bodies are now written by a Process running
cat > <file> with the text on stdin: verified against empty and non-empty
payloads, consecutive writes on one Process, and a store with no db.json at
all. The exit code is the real outcome, so a refused write reports it.
Second report in the same flow: the editor stays editable after the first
click, so typing more and then pressing Commit & push dropped the edit, the
push carrying only what the first click wrote. The second click now writes
the current title and body before it commits and pushes.
Diffstat (limited to 'desktop/modules/notes/NotesPage.qml')
| -rw-r--r-- | desktop/modules/notes/NotesPage.qml | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/desktop/modules/notes/NotesPage.qml b/desktop/modules/notes/NotesPage.qml index 585fcfb..1a82254 100644 --- a/desktop/modules/notes/NotesPage.qml +++ b/desktop/modules/notes/NotesPage.qml @@ -19,9 +19,11 @@ import "Notes.js" as Notes // // Save is two clicks and each click does one thing. The first writes the note // and, when that has finished, arms the button as "Commit & push?"; the second -// commits and pushes and returns to the list. Arming the second click only -// after the write completes is what stops a quick second click from committing -// a note the first click has not written yet. +// writes whatever the editor holds now, then commits and pushes, then returns +// to the list. The second click writes as well because the editor stays +// editable in between: pushing without writing would throw away an edit made +// after the first click. Arming only after the first write completes is what +// stops a quick second click from committing a note that is not written yet. // // Nothing is remembered between visits: leaving the editor with text that was // not saved drops it, which is the clipboard page's own rule. @@ -78,12 +80,19 @@ Item { // The note is already on disk and only the push is owed, so this click // pushes rather than writing a second note. if (page.awaiting !== "") { - const id = page.awaiting === "create" ? page.owner.lastCreatedId : page.editing.id; + // The editor stays editable after the first click, so whatever was + // typed since is written before it is pushed: the push alone would + // leave that edit behind. + const kind = page.awaiting; + const id = kind === "create" ? page.owner.lastCreatedId : page.editing.id; page.busy = true; - page.owner.commitPush(page.awaiting, id, (ok, msg) => { - page.busy = false; - if (!ok) { page.owner.lastError = msg; return; } - page.toList(); + page.owner.update(id, titleField.text, bodyEdit.text, (ok, msg) => { + if (!ok) { page.busy = false; page.owner.lastError = msg; return; } + page.owner.commitPush(kind, id, (ok2, msg2) => { + page.busy = false; + if (!ok2) { page.owner.lastError = msg2; return; } + page.toList(); + }); }); return; } |
