Web-opslaan markeert het deck schoon na het aanbieden van een download, niet na bevestigde ontvangst #1954

Closed
opened 2026-09-03 10:14:40 +00:00 by brenno · 0 comments
Owner

Het probleem

In de browserversie is opslaan een download. Zodra OciDeck de browser een bestand heeft aangeboden, wordt het tabblad schoon gemarkeerd en verdwijnt wat er van herstel zou zijn. De browser kan die download blokkeren (popup-blokkade, automatische-downloadbeleid, quota). De gebruiker ziet "opgeslagen", sluit de tab, en heeft niets.

Dat is dezelfde klasse als #1902 (webexport meldde succes terwijl de download niet startte). #1902 is gesloten voor het exportpad. Het opslaan-pad (_saveAsDownload / downloadDeckAsFile) heeft de les niet overgenomen.

Versterkend: een deck met mem:-afbeeldingen waarschuwt één keer dat een los .md die media niet meeneemt. Na "Doorgaan" telt de kale-markdown-download als volledige opslag. Later Cmd+S waarschuwt niet opnieuw (het tabblad is schoon tot de volgende wijziging). Tab sluiten of herladen: beeld weg.

Hoe het nu werkt

lib/state/deck_provider.dart, _saveAsDownload:

final name = _file.downloadDeckAsFile(deck);
if (name == null) {
  state = state.copyWith(error: 'Opslaan als download mislukt.');
  return false;
}
state = state.copyWith(isDirty: false, downloadName: name);

downloadBytesToBrowser geeft false bij een uitzondering; "anchor geklikt" is true. Dat is niet "bestand ontvangen".

download_delivery_test.dart dekt de geweigerde sink voor export (ExportResult.failed(downloadNotStarted)). Het deck-save-pad deelt die uitkomst niet.

De mem:-waarschuwing zit in saveDeckWithDestination (_confirmWebAssetLoss).

Denkrichting (niet uitgewerkt)

  1. Dezelfde deliverAsDownload-uitkomst als export: als de sink weigert, niet schoon markeren, zelfde soort melding als #1902.
  2. Bij mem:-assets: na een kale .md-download het tabblad vuil houden totdat er een .ocideck de deur uit is, of de waarschuwing bij élke save herhalen zolang er geheugenmedia in het deck zitten.

Geen formaatwijziging. De webversie heeft bewust geen crashherstel (KNOWN_LIMITATIONS / USER_GUIDE); des te meer mag "schoon" niet liegen.

Raakvlakken

  • lib/state/deck_provider.dart (_saveAsDownload)
  • lib/utils/file_download_web.dart
  • lib/widgets/shell/shell_actions_connections.dart (_confirmWebAssetLoss)
  • gesloten #1902 (export, niet save)
## Het probleem In de browserversie is opslaan een download. Zodra OciDeck de browser een bestand heeft *aangeboden*, wordt het tabblad schoon gemarkeerd en verdwijnt wat er van herstel zou zijn. De browser kan die download blokkeren (popup-blokkade, automatische-downloadbeleid, quota). De gebruiker ziet "opgeslagen", sluit de tab, en heeft niets. Dat is dezelfde klasse als #1902 (web*export* meldde succes terwijl de download niet startte). #1902 is gesloten voor het exportpad. Het *opslaan*-pad (`_saveAsDownload` / `downloadDeckAsFile`) heeft de les niet overgenomen. Versterkend: een deck met `mem:`-afbeeldingen waarschuwt één keer dat een los `.md` die media niet meeneemt. Na "Doorgaan" telt de kale-markdown-download als volledige opslag. Later Cmd+S waarschuwt niet opnieuw (het tabblad is schoon tot de volgende wijziging). Tab sluiten of herladen: beeld weg. ## Hoe het nu werkt `lib/state/deck_provider.dart`, `_saveAsDownload`: ```dart final name = _file.downloadDeckAsFile(deck); if (name == null) { state = state.copyWith(error: 'Opslaan als download mislukt.'); return false; } state = state.copyWith(isDirty: false, downloadName: name); ``` `downloadBytesToBrowser` geeft `false` bij een uitzondering; "anchor geklikt" is `true`. Dat is niet "bestand ontvangen". `download_delivery_test.dart` dekt de geweigerde sink voor export (`ExportResult.failed(downloadNotStarted)`). Het deck-save-pad deelt die uitkomst niet. De mem:-waarschuwing zit in `saveDeckWithDestination` (`_confirmWebAssetLoss`). ## Denkrichting (niet uitgewerkt) 1. Dezelfde `deliverAsDownload`-uitkomst als export: als de sink weigert, niet schoon markeren, zelfde soort melding als #1902. 2. Bij `mem:`-assets: na een kale `.md`-download het tabblad vuil *houden* totdat er een `.ocideck` de deur uit is, of de waarschuwing bij élke save herhalen zolang er geheugenmedia in het deck zitten. Geen formaatwijziging. De webversie heeft bewust geen crashherstel (KNOWN_LIMITATIONS / USER_GUIDE); des te meer mag "schoon" niet liegen. ## Raakvlakken - `lib/state/deck_provider.dart` (`_saveAsDownload`) - `lib/utils/file_download_web.dart` - `lib/widgets/shell/shell_actions_connections.dart` (`_confirmWebAssetLoss`) - gesloten #1902 (export, niet save)
brenno 2026-09-03 16:05:39 +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#1954
No description provided.