Storage-Info hinzugefügt
This commit is contained in:
parent
068f72c447
commit
0954be7cd8
@ -1 +1 @@
|
|||||||
<div class="max-height fill-me"><div class="row max-width grow flex-center"><div class="columns small-centered small-12 smedium-11 medium-9 large-7"><div class="row setting-row hidden" id=install-button><span class="columns small-6" data-translation=install></span> <span class="columns small-6 text-right" data-translation=">"></span></div><div class="row setting-row" id=theme-chooser><span class="columns small-6" data-translation=theme></span> <span class="columns small-6 text-right"><div id=theme-name></div></span></div><label class="switch row setting-row"><span class="columns small-6" data-translation=sound></span> <span class="columns small-6 text-right"><input type=checkbox class=setting id=play-sound name=play-sound value=1 data-default=1> <span class=slider></span></span></label> <label class="switch row setting-row"><span class="columns small-6" data-translation=music></span> <span class="columns small-6 text-right"><input type=checkbox class=setting id=play-music name=play-music value=1 data-default=1> <span class=slider></span></span></label><div class="row setting-row" id=credits-button><span class="columns small-6" data-translation=credits></span> <span class="columns small-6 text-right" data-translation=">"></span></div><div class="row setting-row" id=privacy-policy-button><span class="columns small-6" data-translation=privacy-policy></span> <span class="columns small-6 text-right" data-translation=">"></span></div><div class="row setting-row" id=impressum-button><span class="columns small-6" data-translation=impressum></span> <span class="columns small-6 text-right" data-translation=">"></span></div><div class="row setting-row" id=contact-button><span class="columns small-6" data-translation=contact></span> <span class="columns small-6 text-right" data-translation=">"></span></div><label class="switch row setting-row"><span class="columns small-6" data-translation=track></span> <span class="columns small-6 text-right"><input type=checkbox class=setting id=track-switch name=matomoShouldTrack value=1 data-default=1 data-raw=1> <span class=slider></span></span></label><div class="row setting-row"><div class="column hidden" id=storage-info></div></div><button id=reset-levels class="button hidden" data-translation=reset-levels></button></div></div></div>
|
<div class="max-height fill-me"><div class="row max-width grow flex-center"><div class="columns small-centered small-12 smedium-11 medium-9 large-7"><div class="row setting-row hidden" id=install-button><span class="columns small-6" data-translation=install></span> <span class="columns small-6 text-right" data-translation=">"></span></div><div class="row setting-row" id=theme-chooser><span class="columns small-6" data-translation=theme></span> <span class="columns small-6 text-right"><div id=theme-name></div></span></div><label class="switch row setting-row"><span class="columns small-6" data-translation=sound></span> <span class="columns small-6 text-right"><input type=checkbox class=setting id=play-sound name=play-sound value=1 data-default=1> <span class=slider></span></span></label> <label class="switch row setting-row"><span class="columns small-6" data-translation=music></span> <span class="columns small-6 text-right"><input type=checkbox class=setting id=play-music name=play-music value=1 data-default=1> <span class=slider></span></span></label><div class="row setting-row" id=credits-button><span class="columns small-6" data-translation=credits></span> <span class="columns small-6 text-right" data-translation=">"></span></div><div class="row setting-row" id=privacy-policy-button><span class="columns small-6" data-translation=privacy-policy></span> <span class="columns small-6 text-right" data-translation=">"></span></div><div class="row setting-row" id=impressum-button><span class="columns small-6" data-translation=impressum></span> <span class="columns small-6 text-right" data-translation=">"></span></div><div class="row setting-row" id=contact-button><span class="columns small-6" data-translation=contact></span> <span class="columns small-6 text-right" data-translation=">"></span></div><label class="switch row setting-row"><span class="columns small-6" data-translation=track></span> <span class="columns small-6 text-right"><input type=checkbox class=setting id=track-switch name=matomoShouldTrack value=1 data-default=1 data-raw=1> <span class=slider></span></span></label><div class="row setting-row hidden"><div class=column id=storage-info></div></div><button id=reset-levels class="button hidden" data-translation=reset-levels></button></div></div></div>
|
||||||
109
public/js/app.js
109
public/js/app.js
@ -4835,6 +4835,55 @@ InitPromise.addPromise(function(app){
|
|||||||
app.addDeepLink("newPassword", SetNewPasswordSite);
|
app.addDeepLink("newPassword", SetNewPasswordSite);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
class MyStorageManager {
|
||||||
|
static getInstance() {
|
||||||
|
if (Helper.isNull(MyStorageManager.instance)) {
|
||||||
|
MyStorageManager.instance = new MyStorageManager();
|
||||||
|
}
|
||||||
|
return MyStorageManager.instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
async estimate() {
|
||||||
|
if ('storage' in navigator && 'estimate' in navigator.storage) {
|
||||||
|
// We've got the real thing! Return its response.
|
||||||
|
return navigator.storage.estimate();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ('webkitTemporaryStorage' in navigator &&
|
||||||
|
'queryUsageAndQuota' in navigator.webkitTemporaryStorage) {
|
||||||
|
// Return a promise-based wrapper that will follow the expected interface.
|
||||||
|
return new Promise(function (resolve, reject) {
|
||||||
|
navigator.webkitTemporaryStorage.queryUsageAndQuota(
|
||||||
|
function (usage, quota) {
|
||||||
|
resolve({usage: usage, quota: quota});
|
||||||
|
},
|
||||||
|
reject
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// If we can't estimate the values, return a Promise that resolves with NaN.
|
||||||
|
return Promise.resolve({usage: NaN, quota: NaN});
|
||||||
|
}
|
||||||
|
|
||||||
|
canEstimateStorage() {
|
||||||
|
return ('storage' in navigator && 'estimate' in navigator.storage || 'webkitTemporaryStorage' in navigator &&
|
||||||
|
'queryUsageAndQuota' in navigator.webkitTemporaryStorage);
|
||||||
|
}
|
||||||
|
|
||||||
|
canPersist() {
|
||||||
|
return (navigator.storage && navigator.storage.persist);
|
||||||
|
}
|
||||||
|
|
||||||
|
persist(){
|
||||||
|
if (this.canPersist()){
|
||||||
|
return navigator.storage.persist();
|
||||||
|
}
|
||||||
|
return Promise.resolve(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
MyStorageManager.instance = null;
|
||||||
|
|
||||||
class InstallManager {
|
class InstallManager {
|
||||||
static init() {
|
static init() {
|
||||||
window.addEventListener('beforeinstallprompt', e => {
|
window.addEventListener('beforeinstallprompt', e => {
|
||||||
@ -4853,7 +4902,10 @@ class InstallManager {
|
|||||||
static async prompt(){
|
static async prompt(){
|
||||||
if (Helper.isNotNull(this.deferredPromt)){
|
if (Helper.isNotNull(this.deferredPromt)){
|
||||||
this.deferredPromt["prompt"]();
|
this.deferredPromt["prompt"]();
|
||||||
return this.deferredPromt["userChoice"];
|
return this.deferredPromt["userChoice"].then(r => {
|
||||||
|
MyStorageManager.getInstance().persist();
|
||||||
|
return r;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
return Promise.resolve({
|
return Promise.resolve({
|
||||||
"outcome":"dismissed",
|
"outcome":"dismissed",
|
||||||
@ -5340,50 +5392,6 @@ InitPromise.addPromise(() => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
// AndroidBridge.addDefinition(() => {
|
|
||||||
// window["soundManagerInstance"] = SoundManager.getInstance();
|
|
||||||
// window["soundManagerInstance"]["stopAll"] = window["soundManagerInstance"].stopAll;
|
|
||||||
// window["soundManagerInstance"]["resumeAllIfNotMuted"] = window["soundManagerInstance"].resumeAllIfNotMuted;
|
|
||||||
// });
|
|
||||||
|
|
||||||
class StorageManager {
|
|
||||||
static getInstance() {
|
|
||||||
if (Helper.isNull(StorageManager.instance)) {
|
|
||||||
StorageManager.instance = new StorageManager();
|
|
||||||
}
|
|
||||||
return StorageManager.instance;
|
|
||||||
}
|
|
||||||
|
|
||||||
async estimate() {
|
|
||||||
if ('storage' in navigator && 'estimate' in navigator.storage) {
|
|
||||||
// We've got the real thing! Return its response.
|
|
||||||
return navigator.storage.estimate();
|
|
||||||
}
|
|
||||||
|
|
||||||
if ('webkitTemporaryStorage' in navigator &&
|
|
||||||
'queryUsageAndQuota' in navigator.webkitTemporaryStorage) {
|
|
||||||
// Return a promise-based wrapper that will follow the expected interface.
|
|
||||||
return new Promise(function (resolve, reject) {
|
|
||||||
navigator.webkitTemporaryStorage.queryUsageAndQuota(
|
|
||||||
function (usage, quota) {
|
|
||||||
resolve({usage: usage, quota: quota});
|
|
||||||
},
|
|
||||||
reject
|
|
||||||
);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// If we can't estimate the values, return a Promise that resolves with NaN.
|
|
||||||
return Promise.resolve({usage: NaN, quota: NaN});
|
|
||||||
}
|
|
||||||
|
|
||||||
canEstimateStorage() {
|
|
||||||
return ('storage' in navigator && 'estimate' in navigator.storage || 'webkitTemporaryStorage' in navigator &&
|
|
||||||
'queryUsageAndQuota' in navigator.webkitTemporaryStorage);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
StorageManager.instance = null;
|
|
||||||
|
|
||||||
class Code {
|
class Code {
|
||||||
constructor(args) {
|
constructor(args) {
|
||||||
if (typeof args === "string") {
|
if (typeof args === "string") {
|
||||||
@ -7303,16 +7311,13 @@ class WordRotatorSettingFragment extends LocalStorageSettingsFragment {
|
|||||||
installButton.classList.remove("hidden");
|
installButton.classList.remove("hidden");
|
||||||
});
|
});
|
||||||
|
|
||||||
let storageManager = StorageManager.getInstance();
|
let storageManager = MyStorageManager.getInstance();
|
||||||
if (storageManager.canEstimateStorage()) {
|
if (storageManager.canEstimateStorage() && false) {
|
||||||
console.log("can estimate storage!");
|
console.log("can estimate storage!");
|
||||||
storageManager.estimate().then(storage => {
|
storageManager.estimate().then(storage => {
|
||||||
let storageObject = this.findBy("#storage-info");
|
let storageObject = this.findBy("#storage-info");
|
||||||
console.log("estimating storage 2", storageObject);
|
|
||||||
storageObject.appendChild(Translator.makePersistentTranslation("storage-info", [Math.round(storage.usage/(1024*1024)*100)/100, Math.round(storage.quota/(1024*1024)*100)/100, Math.round(storage.usage/storage.quota*10000)/100]));
|
storageObject.appendChild(Translator.makePersistentTranslation("storage-info", [Math.round(storage.usage/(1024*1024)*100)/100, Math.round(storage.quota/(1024*1024)*100)/100, Math.round(storage.usage/storage.quota*10000)/100]));
|
||||||
console.log("estimating storage 3", storage);
|
storageObject.parentElement.classList.remove("hidden");
|
||||||
storageObject.classList.remove("hidden");
|
|
||||||
console.log("estimating storage 4", storage);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -7522,5 +7527,7 @@ InitPromise.resolve(app$1).then(async function () {
|
|||||||
InstallManager.setCanInstallListener(e => {
|
InstallManager.setCanInstallListener(e => {
|
||||||
});
|
});
|
||||||
|
|
||||||
|
MyStorageManager.getInstance().persist();
|
||||||
|
|
||||||
window["applyAndroidBridge"] = AndroidBridge.applyDefinitions;
|
window["applyAndroidBridge"] = AndroidBridge.applyDefinitions;
|
||||||
});
|
});
|
||||||
|
|||||||
@ -20,7 +20,13 @@ import "./lib/pwa-contact"
|
|||||||
|
|
||||||
import {SettingsManager, SettingsSite} from "./lib/pwa-core";
|
import {SettingsManager, SettingsSite} from "./lib/pwa-core";
|
||||||
|
|
||||||
import {InstallManager, Matomo, MatomoShareButton, SoundManager} from "./lib/pwa-assets";
|
import {
|
||||||
|
InstallManager,
|
||||||
|
Matomo,
|
||||||
|
MatomoShareButton,
|
||||||
|
MyStorageManager,
|
||||||
|
SoundManager
|
||||||
|
} from "./lib/pwa-assets";
|
||||||
import {MenuSite} from "../module/Application/pwa/js/site/MenuSite";
|
import {MenuSite} from "../module/Application/pwa/js/site/MenuSite";
|
||||||
import {WordRotatorSettingFragment} from "../module/Application/pwa/js/Fragment/WordRotatorSettingFragment";
|
import {WordRotatorSettingFragment} from "../module/Application/pwa/js/Fragment/WordRotatorSettingFragment";
|
||||||
|
|
||||||
@ -83,5 +89,7 @@ InitPromise.resolve(app).then(async function () {
|
|||||||
InstallManager.setCanInstallListener(e => {
|
InstallManager.setCanInstallListener(e => {
|
||||||
});
|
});
|
||||||
|
|
||||||
|
MyStorageManager.getInstance().persist();
|
||||||
|
|
||||||
window["applyAndroidBridge"] = AndroidBridge.applyDefinitions;
|
window["applyAndroidBridge"] = AndroidBridge.applyDefinitions;
|
||||||
});
|
});
|
||||||
|
|||||||
@ -8,6 +8,55 @@ class DelayPromise extends Promise {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class MyStorageManager {
|
||||||
|
static getInstance() {
|
||||||
|
if (Helper.isNull(MyStorageManager.instance)) {
|
||||||
|
MyStorageManager.instance = new MyStorageManager();
|
||||||
|
}
|
||||||
|
return MyStorageManager.instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
async estimate() {
|
||||||
|
if ('storage' in navigator && 'estimate' in navigator.storage) {
|
||||||
|
// We've got the real thing! Return its response.
|
||||||
|
return navigator.storage.estimate();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ('webkitTemporaryStorage' in navigator &&
|
||||||
|
'queryUsageAndQuota' in navigator.webkitTemporaryStorage) {
|
||||||
|
// Return a promise-based wrapper that will follow the expected interface.
|
||||||
|
return new Promise(function (resolve, reject) {
|
||||||
|
navigator.webkitTemporaryStorage.queryUsageAndQuota(
|
||||||
|
function (usage, quota) {
|
||||||
|
resolve({usage: usage, quota: quota});
|
||||||
|
},
|
||||||
|
reject
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// If we can't estimate the values, return a Promise that resolves with NaN.
|
||||||
|
return Promise.resolve({usage: NaN, quota: NaN});
|
||||||
|
}
|
||||||
|
|
||||||
|
canEstimateStorage() {
|
||||||
|
return ('storage' in navigator && 'estimate' in navigator.storage || 'webkitTemporaryStorage' in navigator &&
|
||||||
|
'queryUsageAndQuota' in navigator.webkitTemporaryStorage);
|
||||||
|
}
|
||||||
|
|
||||||
|
canPersist() {
|
||||||
|
return (navigator.storage && navigator.storage.persist);
|
||||||
|
}
|
||||||
|
|
||||||
|
persist(){
|
||||||
|
if (this.canPersist()){
|
||||||
|
return navigator.storage.persist();
|
||||||
|
}
|
||||||
|
return Promise.resolve(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
MyStorageManager.instance = null;
|
||||||
|
|
||||||
class InstallManager {
|
class InstallManager {
|
||||||
static init() {
|
static init() {
|
||||||
window.addEventListener('beforeinstallprompt', e => {
|
window.addEventListener('beforeinstallprompt', e => {
|
||||||
@ -26,7 +75,10 @@ class InstallManager {
|
|||||||
static async prompt(){
|
static async prompt(){
|
||||||
if (Helper.isNotNull(this.deferredPromt)){
|
if (Helper.isNotNull(this.deferredPromt)){
|
||||||
this.deferredPromt["prompt"]();
|
this.deferredPromt["prompt"]();
|
||||||
return this.deferredPromt["userChoice"];
|
return this.deferredPromt["userChoice"].then(r => {
|
||||||
|
MyStorageManager.getInstance().persist();
|
||||||
|
return r;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
return Promise.resolve({
|
return Promise.resolve({
|
||||||
"outcome":"dismissed",
|
"outcome":"dismissed",
|
||||||
@ -535,44 +587,6 @@ InitPromise.addPromise(() => {
|
|||||||
// window["soundManagerInstance"]["resumeAllIfNotMuted"] = window["soundManagerInstance"].resumeAllIfNotMuted;
|
// window["soundManagerInstance"]["resumeAllIfNotMuted"] = window["soundManagerInstance"].resumeAllIfNotMuted;
|
||||||
// });
|
// });
|
||||||
|
|
||||||
class StorageManager {
|
|
||||||
static getInstance() {
|
|
||||||
if (Helper.isNull(StorageManager.instance)) {
|
|
||||||
StorageManager.instance = new StorageManager();
|
|
||||||
}
|
|
||||||
return StorageManager.instance;
|
|
||||||
}
|
|
||||||
|
|
||||||
async estimate() {
|
|
||||||
if ('storage' in navigator && 'estimate' in navigator.storage) {
|
|
||||||
// We've got the real thing! Return its response.
|
|
||||||
return navigator.storage.estimate();
|
|
||||||
}
|
|
||||||
|
|
||||||
if ('webkitTemporaryStorage' in navigator &&
|
|
||||||
'queryUsageAndQuota' in navigator.webkitTemporaryStorage) {
|
|
||||||
// Return a promise-based wrapper that will follow the expected interface.
|
|
||||||
return new Promise(function (resolve, reject) {
|
|
||||||
navigator.webkitTemporaryStorage.queryUsageAndQuota(
|
|
||||||
function (usage, quota) {
|
|
||||||
resolve({usage: usage, quota: quota});
|
|
||||||
},
|
|
||||||
reject
|
|
||||||
);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// If we can't estimate the values, return a Promise that resolves with NaN.
|
|
||||||
return Promise.resolve({usage: NaN, quota: NaN});
|
|
||||||
}
|
|
||||||
|
|
||||||
canEstimateStorage() {
|
|
||||||
return ('storage' in navigator && 'estimate' in navigator.storage || 'webkitTemporaryStorage' in navigator &&
|
|
||||||
'queryUsageAndQuota' in navigator.webkitTemporaryStorage);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
StorageManager.instance = null;
|
|
||||||
|
|
||||||
class TabbedFragment extends Fragment {
|
class TabbedFragment extends Fragment {
|
||||||
constructor(site) {
|
constructor(site) {
|
||||||
super(site, 'pwaAssets/html/fragment/tabbedFragment.html');
|
super(site, 'pwaAssets/html/fragment/tabbedFragment.html');
|
||||||
@ -638,4 +652,4 @@ class TabbedFragment extends Fragment {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export { DelayPromise, InstallManager, Matomo, MatomoShareButton, RotateHelper, ScaleHelper, AudioChain, SoundManager, StorageManager, TabbedFragment };
|
export { DelayPromise, InstallManager, Matomo, MatomoShareButton, MyStorageManager, RotateHelper, ScaleHelper, AudioChain, SoundManager, TabbedFragment };
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import {LocalStorageSettingsFragment, SettingsManager, SettingsSite} from "../../../../../js/lib/pwa-core";
|
import {LocalStorageSettingsFragment, SettingsManager, SettingsSite} from "../../../../../js/lib/pwa-core";
|
||||||
import {Helper, InitPromise, ThemeManager, Translator} from "../../../../../js/lib/pwa-lib";
|
import {Helper, InitPromise, ThemeManager, Translator} from "../../../../../js/lib/pwa-lib";
|
||||||
import {WordRotatorDb} from "../WordRotatorDb";
|
import {WordRotatorDb} from "../WordRotatorDb";
|
||||||
import {InstallManager, Matomo, SoundManager, StorageManager} from "../../../../../js/lib/pwa-assets";
|
import {InstallManager, Matomo, MyStorageManager, SoundManager} from "../../../../../js/lib/pwa-assets";
|
||||||
import {CreditsSite} from "../site/CreditsSite";
|
import {CreditsSite} from "../site/CreditsSite";
|
||||||
import {PrivacyPolicySite} from "../site/PrivacyPolicySite";
|
import {PrivacyPolicySite} from "../site/PrivacyPolicySite";
|
||||||
import {ChooseThemeDialog} from "../dialog/ChooseThemeDialog";
|
import {ChooseThemeDialog} from "../dialog/ChooseThemeDialog";
|
||||||
@ -82,16 +82,13 @@ export class WordRotatorSettingFragment extends LocalStorageSettingsFragment {
|
|||||||
installButton.classList.remove("hidden");
|
installButton.classList.remove("hidden");
|
||||||
});
|
});
|
||||||
|
|
||||||
let storageManager = StorageManager.getInstance();
|
let storageManager = MyStorageManager.getInstance();
|
||||||
if (storageManager.canEstimateStorage()) {
|
if (storageManager.canEstimateStorage() && false) {
|
||||||
console.log("can estimate storage!");
|
console.log("can estimate storage!");
|
||||||
storageManager.estimate().then(storage => {
|
storageManager.estimate().then(storage => {
|
||||||
let storageObject = this.findBy("#storage-info");
|
let storageObject = this.findBy("#storage-info");
|
||||||
console.log("estimating storage 2", storageObject);
|
|
||||||
storageObject.appendChild(Translator.makePersistentTranslation("storage-info", [Math.round(storage.usage/(1024*1024)*100)/100, Math.round(storage.quota/(1024*1024)*100)/100, Math.round(storage.usage/storage.quota*10000)/100]));
|
storageObject.appendChild(Translator.makePersistentTranslation("storage-info", [Math.round(storage.usage/(1024*1024)*100)/100, Math.round(storage.quota/(1024*1024)*100)/100, Math.round(storage.usage/storage.quota*10000)/100]));
|
||||||
console.log("estimating storage 3", storage);
|
storageObject.parentElement.classList.remove("hidden");
|
||||||
storageObject.classList.remove("hidden");
|
|
||||||
console.log("estimating storage 4", storage);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -51,8 +51,8 @@
|
|||||||
<span class="slider"></span>
|
<span class="slider"></span>
|
||||||
</span>
|
</span>
|
||||||
</label>
|
</label>
|
||||||
<div class='row setting-row' >
|
<div class='row setting-row hidden' >
|
||||||
<div class = "column hidden" id='storage-info'></div>
|
<div class = "column" id='storage-info'></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!--<iframe-->
|
<!--<iframe-->
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user