fix: bestandskiezer-poort van 7 naar 0, plus een live webbug (#528) #565
No reviewers
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck!565
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/filepicker-poort-in-de-dialoog"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
filePickerPathBaselinevan 7 naar 0.De issue vroeg om elke regel apart te wegen en niet te batchen. Dat is gebeurd,
en het leverde drie verschillende uitkomsten op — plus één ontdekking die de
issue zelf verkeerd had.
De vier "gepoort bij de aanroeper"
open_presentation_dialog,slide_finder_dialog,import_slides_dialog,save_destination_dialog. Deze waren vandaag correct, en dát was het bezwaar:het bestand kon zijn eigen garantie niet bewijzen, dus verdwijnt die bij de
eerstvolgende nieuwe aanroeper. De poort staat nu in de methode zelf, zoals
#506 het bij de logokiezer deed.
image_service— geen baseline-regel maar een live bugDe issue vroeg terecht om éérst vast te stellen wat er op web gebeurt: "dead on
web, or a live blob:-URL leak". Het is geen van beide.
PlatformFile.pathgooit op web een kale String (file_picker 5.5.0,platform_file.dartregel 37). Geen null, geenblob:-URL. Wie in de webversieop "Bestand kiezen" drukte bij een video- of audiodia, kreeg dus een onafgevangen
fout — en geen van de vier aanroepers poortte.
Dat verschil is niet academisch: een
blob:-URL faalt stil en verkeerd, eenworp vliegt ongevangen omhoog. Twee plekken in
check_conventions.dartbeweerden het blob-verhaal — in de kop van de regel én in de foutmelding die een
ontwikkelaar te zien krijgt. Allebei gecorrigeerd, met de datum en de vindplaats
erbij.
De vier knoppen zijn nu verborgen op web (er is daar geen projectmap om in te
importeren; video via URL werkt er wél), en de dienst poort daarnaast defensief.
settings_dialogenfile_serviceZelfde patroon als de vier dialogen. Maar hier liep ik tegen de klassenratchet:
beide klassen stonden tegen hun plafond, dus tien regels commentaar erbij liet
make checkvallen.Dat bleek een aanwijzing in plaats van een obstakel. De poort hoorde niet zes
keer te staan maar één keer per bibliotheek, in een top-level functie buiten de
klasse:
_pickDirectoryGated,_pickPathGated,_pickBytes. Gedrag uit deklasse halen is precies wat die ratchet vraagt — netto
FileService2885 → 2879,vastgezet in de baseline.
De kiezers wonen in
file_service_import.darten niet in een eigenpart: eennieuw bestand met alleen kiezer-code haalt in tests nul dekking, en dan koop je
een groene klassenratchet af met een gele dekkingspoort.
Bewijs
Een test kan dit niet vangen —
kIsWebis onderflutter testaltijd false, endat is precies waarom deze poort statisch is. Het bewijs is dat de lijst leeg is
en dat
make check-conventionseen verouderde regel zelf meldt (dat deed hijonderweg ook, drie keer, en dat is hoe ik wist dat elke reparatie echt landde).
filePickerPathBaselineblijft als lege lijst staan, met de reden erbij: eennieuwe regel is geen boekhouding maar een besluit.
make checkgroen.Closes #528