Closed havremunken closed 5 years ago
Foreslår at modulene kan lagre/hente data via setvalue/getvalue på string 'key' og objekt 'value'. Objektet JSON-serialiseres og lagres, tilsvarende hentes som json og deserialiseres. Tror vi sparer en del brydderi om rammeverket leser inn all config ved oppstart og har det klart direkte ved spørring, så man slipper async/await-type ting i koden som bruker lagret config. Angående nøkler, så foreslår jeg bare et enkelt navne-scheme som "rbkweb.<module>.<setting>" e.l.
Ser det sannsynligvis er "chrome.storage.*" APIet som gjelder her, men mulig vi bør abstrahere/wrappe det om Firefox extension bruk ikke har støtte for det APIet.
Holder på med en wrapper samt en fluent config builder som extmods kan bruke for å fortelle omgivelsene om hvilke settings de har (sånn at vi kan bygge gui osv).
Tanke akkurat nå: Ut av builderen får vi info om hva som er default oppsett, inkludert om en extmod er enabled som default.
Videre tanke: ExtMod-config blir kun sanket og skrevet hvis den avviker fra default.
Dermed: En ExtMod kan fint være "experimental" og av som default, før vi finner ut at den er stabil, og endrer den til på som default. Da vil den begynne å funke også for brukere som ikke har gjort noe aktivt for det.
Bygger litt videre på dette før jeg pusher noe. Tenker litt mer også. :)
Det grunnleggende er på plass, så jeg lukker dermed denne. Vi kommer garantert til å måtte jobbe litt videre med dette, men et utgangspunkt er det ihvertfall.
Jeg innbiller meg at dette blir mest ryddig om vi har en tanke bak hvordan forskjellige deler av utvidelsen lagrer og leser sin config. Jeg har foreløpig ikke satt meg inn i extension APIene, men det finnes sannsynligvis en beste måte å gjøre dette på mot Chrome. Hvis vi lager en enkel standard for hvordan dette skal gjøre vil enhver modul være et eksempel til etterfølgelse for andre som ønsker å bidra med noe også.