allow persisting in every browser
This commit is contained in:
parent
11bda1d8a4
commit
5064e3856f
71
ui/persist.js
Normal file
71
ui/persist.js
Normal file
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user