diff --git a/ui/persist.js b/ui/persist.js new file mode 100644 index 0000000..fb76013 --- /dev/null +++ b/ui/persist.js @@ -0,0 +1,71 @@ +"use strict"; + +const URL_STORAGE_QUOTA = "https://developer.mozilla.org/de/docs/Web/API/Storage_API/Storage_quotas_and_eviction_criteria"; + +export default class Persist { + #safari = navigator.vendor === "Apple Computer, Inc."; + /** @type {?boolean} */ + #persisted = null; + + async oninit() { + this.#persisted = await navigator.storage.persisted(); + } + + view() { + if (this.#persisted !== false) + return null; + + return m("li.item.-text._alternate._apply", [ + this.#safari + ? m.fragment([ + m("p", m("strong", "Obacht, Safari-Nutza!")), + m("p", [ + "Da Safari löscht manchmal von sich aus deine Spiel-Datn, wennst", + "füa sein Gschmack z'lang nimma de Seitn aufgmacht hast. ", + m("a", { href: URL_STORAGE_QUOTA }, "Mea Infos…"), + ]), + m("p", [ + "Is natürlich eha bled, aba als Webseitn-Entwickla kann ma da ", + "leida praktisch gar nix machn. Es gibt zwar a Option um des ", + "Löschn aus z'schaltn, aba bei dea kann da Safari oanfach „na“ ", + "sagn, wenn ea will.", + ]), + m("p", [ + "Dea Knopf direkt unta dem Text machat genau des. Kannst probian ", + "wennst willst. Falls es geht verschwindet de Meldung. Falls nit ", + "gregst an Fehla anzoagt. Dann bleibt da leida nur mehr n Browser ", + "z'wechsln oda mit eventuellem Datnverlust z'lebn.", + ]), + ]) + : m("p", [ + "Ganz seltn, wenn dei Festplattn fast voi is, dann kann's sein, ", + "dass dei Browser die Spiel-Datn löscht. Wennst des vahindand ", + "willst, druck den Knopf direkt unta dem Text. ", + m("a", { href: URL_STORAGE_QUOTA }, "Mea Infos…"), + ]), + m("p", m( + "button.wb-button._positioned", + { onclick: () => this.#onpersist() }, + "Datn persistieren", + )), + ]); + } + + #onpersist() { + try { + navigator.storage.persist().then(p => { + this.#persisted = p; + m.redraw(); + + if (!p) + window.alert( + this.#safari + ? "Safari hat leida na gsagt." + : "Dei Browser hat leida na gsagt." + ); + }); + } catch (error) { + console.error("failed to attempt to persist: ", error); + } + } +} diff --git a/ui/safari-persist.js b/ui/safari-persist.js deleted file mode 100644 index bdf9345..0000000 --- a/ui/safari-persist.js +++ /dev/null @@ -1,65 +0,0 @@ -"use strict"; - -export default class SafariPersist { - #safari = navigator.vendor === "Apple Computer, Inc."; - /** @type {?boolean} */ - #persisted = null; - - oninit() { - if (this.#safari) { - try { - navigator.storage.persisted() - .then(p => { - this.#persisted = p; - m.redraw(); - }); - } catch (error) { - console.error("failed to determine persistence state: ", error); - } - } - } - - view() { - if (!this.#safari || this.#persisted !== false) - return null; - - return m("li.item.-text._alternate._apply", [ - m("p", m("strong", "Obacht, Safari-Nutza!")), - m("p", [ - "S'isch leida so, dass da Safari manchmoi oanfach von sich aus ", - "entscheidet Datn z'löschn, de in iam gspeichat sen. Des berifft ", - "a die Datn vom Watterblock.", - ]), - m("p", [ - "Is natürlich eha bled, aba als Webseitn-Entwickla kann ma da leida ", - "praktisch gar nix machn. Es gibt zwar a Option um des Löschn aus ", - "z'schaltn, aba bei dea kann Safari oanfach „na“ sagn, wenn es will.", - ]), - m("p", [ - "Dea Knopf direkt unta dem Text machat genau des. Kannst probian ", - "wennst willst. Falls es geht verschwindet de Meldung. Falls nit ", - "gregst an Fehla anzoagt. Dann bleibt da leida nur mehr Browser ", - "wechsln oda mit eventuellem Datnverlust z'lebn.", - ]), - m("p", m( - "button.wb-button._positioned", - { onclick: () => this.#onpersist() }, - "Datn persistieren", - )), - ]); - } - - #onpersist() { - try { - navigator.storage.persist().then(p => { - this.#persisted = p; - m.redraw(); - - if (!p) - window.alert("Safari hat leida na gsagt."); - }); - } catch (error) { - console.error("failed to attempt to persist: ", error); - } - } -} diff --git a/ui/session_list.js b/ui/session_list.js index 0f650b7..dde282b 100644 --- a/ui/session_list.js +++ b/ui/session_list.js @@ -1,6 +1,6 @@ "use strict"; -import SafariPersist from "./safari-persist.js"; +import Persist from "./persist.js"; import Session from "/models/session.js"; export default class SessionList { @@ -8,7 +8,7 @@ export default class SessionList { view({attrs: { models, onSelect, onDelete } }) { return m("section.wb-session-list", [ m("ol", [ - m(SafariPersist), + m(Persist), models.length === 0 ? m("li.item.-text._alternate._apply", "Du hast no koane Sätz…") : null,