Deck-opslag keert gelukt terug en sluiten wist daarna nieuwer werk #2721

Closed
opened 2026-11-02 22:19:09 +00:00 by brenno · 0 comments
Owner

Wat er mis is

Wie tijdens een lopende lokale deck-opslag doorwerkt en daarna Opslaan en sluiten of afsluiten-met-opslaan kiest, verliest precies die tussentijdse bewerking. De eerste schrijfactie keert true terug. Het nieuwere deck blijft alleen in het geheugen. Sluiten wist de herstelkopie.

Bewijs

  • lib/state/deck_provider.dart _saveToPath: als de undo-stapel tijdens het schrijven groeide, keert de methode true terug en laat isDirty staan. Het commentaar zegt dat schoon melden het werk zou wissen; de terugkeerwaarde true doet dat alsnog via de aanroeper.
  • Een tweede opslag wordt alleen gepland als save() zélf nog een keer is aangeroepen (_saveQueued), niet door het typen.
  • lib/widgets/shell/shell_actions.dart sluit bij true. lib/widgets/app_shell.dart doet hetzelfde bij afsluiten en wist daarna de herstelkopieën.

test/save_hardening_test.dart bewijst de herhaling alleen zolang de test blijft pompen. Er is geen test die sluiten koppelt aan die true.

Voorstel

save() pas true laten teruggeven als het deck na afloop schoon op schijf staat. Opslaan en sluiten en afsluiten wachten tot isDirty false is, en wissen de herstelkopie pas daarna.

Regressietest: schrijfactie blokkeren, tussendoor een dia toevoegen, save() laten terugkeren, en asserten dat een aanroeper die bij true de herstelkopie wist het nieuwe deck nog niet kwijt is.

Het bestandsformaat verandert niet.

## Wat er mis is Wie tijdens een lopende lokale deck-opslag doorwerkt en daarna Opslaan en sluiten of afsluiten-met-opslaan kiest, verliest precies die tussentijdse bewerking. De eerste schrijfactie keert `true` terug. Het nieuwere deck blijft alleen in het geheugen. Sluiten wist de herstelkopie. ## Bewijs - `lib/state/deck_provider.dart` `_saveToPath`: als de undo-stapel tijdens het schrijven groeide, keert de methode `true` terug en laat `isDirty` staan. Het commentaar zegt dat schoon melden het werk zou wissen; de terugkeerwaarde `true` doet dat alsnog via de aanroeper. - Een tweede opslag wordt alleen gepland als `save()` zélf nog een keer is aangeroepen (`_saveQueued`), niet door het typen. - `lib/widgets/shell/shell_actions.dart` sluit bij `true`. `lib/widgets/app_shell.dart` doet hetzelfde bij afsluiten en wist daarna de herstelkopieën. `test/save_hardening_test.dart` bewijst de herhaling alleen zolang de test blijft pompen. Er is geen test die sluiten koppelt aan die `true`. ## Voorstel `save()` pas `true` laten teruggeven als het deck na afloop schoon op schijf staat. Opslaan en sluiten en afsluiten wachten tot `isDirty` false is, en wissen de herstelkopie pas daarna. Regressietest: schrijfactie blokkeren, tussendoor een dia toevoegen, `save()` laten terugkeren, en asserten dat een aanroeper die bij `true` de herstelkopie wist het nieuwe deck nog niet kwijt is. Het bestandsformaat verandert niet.
brenno 2026-11-03 00:46:41 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
LibreKAT/Ocideck#2721
No description provided.