summaryrefslogtreecommitdiff
path: root/src/client/app/common/scripts/check-for-update.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/app/common/scripts/check-for-update.ts')
-rw-r--r--src/client/app/common/scripts/check-for-update.ts33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/client/app/common/scripts/check-for-update.ts b/src/client/app/common/scripts/check-for-update.ts
new file mode 100644
index 0000000000..81c1eb9812
--- /dev/null
+++ b/src/client/app/common/scripts/check-for-update.ts
@@ -0,0 +1,33 @@
+import MiOS from '../mios';
+import { version as current } from '../../config';
+
+export default async function(mios: MiOS, force = false, silent = false) {
+ const meta = await mios.getMeta(force);
+ const newer = meta.version;
+
+ if (newer != current) {
+ localStorage.setItem('should-refresh', 'true');
+ localStorage.setItem('v', newer);
+
+ // Clear cache (serive worker)
+ try {
+ if (navigator.serviceWorker.controller) {
+ navigator.serviceWorker.controller.postMessage('clear');
+ }
+
+ navigator.serviceWorker.getRegistrations().then(registrations => {
+ registrations.forEach(registration => registration.unregister());
+ });
+ } catch (e) {
+ console.error(e);
+ }
+
+ if (!silent) {
+ alert('%i18n:common.update-available%'.replace('{newer}', newer).replace('{current}', current));
+ }
+
+ return newer;
+ } else {
+ return null;
+ }
+}