From 63337ba4f8c4f31b7da96e9c3669fc29e0a03b49 Mon Sep 17 00:00:00 2001 From: David Vazgenovich Shakaryan Date: Fri, 13 May 2022 03:29:49 -0700 Subject: web: disable back button when installed as a PWA --- web/static/dartboat.js | 13 +++++++++++++ web/static/sw.js | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/web/static/dartboat.js b/web/static/dartboat.js index 39e0371..6051b7e 100644 --- a/web/static/dartboat.js +++ b/web/static/dartboat.js @@ -197,3 +197,16 @@ document.addEventListener('keydown', e => { if ('serviceWorker' in navigator) navigator.serviceWorker.register('sw.js'); + +// disable back button when installed as a PWA. a single click exits the app, +// destroying match state without confirmation, so we must resort to this. +if (window.matchMedia('(display-mode: standalone)').matches) { + window.addEventListener('load', () => { + if (!history.state) { + history.replaceState(true, ''); + history.pushState(true, ''); + } + }); + + window.addEventListener('popstate', () => history.pushState(true, '')); +} diff --git a/web/static/sw.js b/web/static/sw.js index 7ed7a85..f5d699a 100644 --- a/web/static/sw.js +++ b/web/static/sw.js @@ -1,5 +1,5 @@ const CACHE_PREFIX = 'dartboat-' -const CACHE_VERSION = '2'; +const CACHE_VERSION = '3'; const CACHE_NAME = `${CACHE_PREFIX}${CACHE_VERSION}`; const FILES = [ -- cgit v1.2.3-70-g09d2