From 4a293d8d12a2d828834056e0576280509702c9fc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Alexandre=20D=2E=20D=C3=ADaz?=
In Chrome, a Progressive Web App can either be installed through the three-dot context menu.
-This module also provides a “Install PWA” link in Odoo user menu.
In case you previously installed web_pwa, run the following steps with odoo shell, after having installed openupgradelib:
>>> from openupgradelib import openupgrade @@ -432,9 +431,11 @@ And like all other installed apps, it’s a top level app in the task switcher.<Usage
To use your PWA:
-
+- Open the Odoo web app using a supported browser (like Chrome/Chromium)
-- Install the PWA
+- Open the Odoo web app using a supported browser (See https://caniuse.com/?search=A2HS)
+- Open the browser options
+- Click on ‘Add to Home screen’ (or ‘Install’ in other browsers)
** Maybe you need refresh the page to load the service worker after use ‘add to home screen’.
diff --git a/web_pwa_oca/static/src/js/pwa_install.js b/web_pwa_oca/static/src/js/pwa_install.js deleted file mode 100644 index b8076988d..000000000 --- a/web_pwa_oca/static/src/js/pwa_install.js +++ /dev/null @@ -1,40 +0,0 @@ -/* Copyright 2020 Lorenzo Battistini @ TAKOBI - Copyright 2020 Tecnativa - Alexandre D. Díaz - * License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). */ - -odoo.define('web_pwa_oca.systray.install', function (require) { - "use strict"; - - var UserMenu = require('web.UserMenu'); - var WebClientObj = require("web.web_client"); - - - UserMenu.include({ - - /** - * We can't control if the UserMenu is loaded berfore PWA manager... - * So check if need unhide the user menu options to install the PWA. - * - * @override - */ - start: function () { - var self = this; - return this._super.apply(this, arguments).then(function () { - if (WebClientObj.pwa_manager.canBeInstalled()) { - self.$el.find('#pwa_install_button')[0] - .removeAttribute('hidden'); - } - }); - }, - - /** - * Handle 'Install PWA' user menu option click - * - * @private - */ - _onMenuInstallpwa: function () { - WebClientObj.pwa_manager.install(); - }, - }); - -}); diff --git a/web_pwa_oca/static/src/js/pwa_manager.js b/web_pwa_oca/static/src/js/pwa_manager.js index 6ffdc1871..72b6df020 100644 --- a/web_pwa_oca/static/src/js/pwa_manager.js +++ b/web_pwa_oca/static/src/js/pwa_manager.js @@ -4,12 +4,13 @@ odoo.define("web_pwa_oca.PWAManager", function (require) { "use strict"; + var core = require("web.core"); var Widget = require("web.Widget"); + var _t = core._t; + var PWAManager = Widget.extend({ - _deferredInstallPrompt: null, - /** * @override */ @@ -17,12 +18,10 @@ odoo.define("web_pwa_oca.PWAManager", function (require) { this._super.apply(this, arguments); if (!('serviceWorker' in navigator)) { throw new Error( - "This browser is not compatible with service workers"); + _t("Service workers are not supported! Maybe you are not using HTTPS?")); } this._service_worker = navigator.serviceWorker; this.registerServiceWorker('/service-worker.js'); - window.addEventListener( - 'beforeinstallprompt', this._onBeforeInstallPrompt.bind(this)); }, /** @@ -33,53 +32,10 @@ odoo.define("web_pwa_oca.PWAManager", function (require) { return this._service_worker.register(sw_script) .then(this._onRegisterServiceWorker) .catch(function (error) { - console.log('[ServiceWorker] Registration failed: ', error); + console.log(_t('[ServiceWorker] Registration failed: '), error); }); }, - install: function () { - if (!this._deferredInstallPrompt) { - return; - } - var self = this; - var systray_menu = this.getParent().menu.systray_menu; - this._deferredInstallPrompt.prompt(); - // Log user response to prompt. - this._deferredInstallPrompt.userChoice - .then(function (choice) { - if (choice.outcome === 'accepted') { - // Hide the install button, it can't be called twice. - systray_menu.$el.find('#pwa_install_button') - .attr('hidden', true); - self._deferredInstallPrompt = null; - console.log('User accepted the A2HS prompt', choice); - } else { - console.log('User dismissed the A2HS prompt', choice); - } - }); - }, - - canBeInstalled: function () { - return !_.isNull(this._deferredInstallPrompt); - }, - - /** - * Handle PWA installation flow - * - * @private - * @param {BeforeInstallPromptEvent} evt - */ - _onBeforeInstallPrompt: function (evt) { - evt.preventDefault(); - this._deferredInstallPrompt = evt; - // UserMenu can be loaded after this module - var menu = this.getParent().menu; - if (menu && menu.systray_menu) { - menu.systray_menu.$el.find('#pwa_install_button')[0] - .removeAttribute('hidden'); - } - }, - /** * Need register some extra API? override this! * @@ -87,7 +43,7 @@ odoo.define("web_pwa_oca.PWAManager", function (require) { * @param {ServiceWorkerRegistration} registration */ _onRegisterServiceWorker: function (registration) { - console.log('[ServiceWorker] Registered:', registration); + console.log(_t('[ServiceWorker] Registered:'), registration); }, }); diff --git a/web_pwa_oca/static/src/xml/pwa_install.xml b/web_pwa_oca/static/src/xml/pwa_install.xml deleted file mode 100644 index ab6681f69..000000000 --- a/web_pwa_oca/static/src/xml/pwa_install.xml +++ /dev/null @@ -1,14 +0,0 @@ - -Known issues / Roadmap
@@ -478,9 +479,7 @@ doesn’t send the cookie and web manifest returns 404.- Evaluate to support ‘require’ system.
‘Install PWA’ menu option disappears even if not installed. This is due to the -very nature of service workers, so they are running including when you close -the page tabs.
+Firefox can’t detect ‘standalone’ mode. See https://bugzilla.mozilla.org/show_bug.cgi?id=1285858
- - diff --git a/web_pwa_oca/templates/assets.xml b/web_pwa_oca/templates/assets.xml index e9c91c664..60c8cd419 100644 --- a/web_pwa_oca/templates/assets.xml +++ b/web_pwa_oca/templates/assets.xml @@ -18,7 +18,6 @@- Install PWA - - -- - -- -- - From a2e801a4409d908a71aed3216c483507f07758bb Mon Sep 17 00:00:00 2001 From: Sylvain LE GALDate: Fri, 11 Dec 2020 11:28:52 +0100 Subject: [PATCH 2/3] [FIX] web_pwa_oca : do not raise an error if service workers is disabled (only log). Otherwise, odoo is unavailable in private mode with Firefox Browser --- web_pwa_oca/readme/ROADMAP.rst | 1 + web_pwa_oca/static/src/js/pwa_manager.js | 10 ++++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/web_pwa_oca/readme/ROADMAP.rst b/web_pwa_oca/readme/ROADMAP.rst index d267ce12c..aa58b7b05 100644 --- a/web_pwa_oca/readme/ROADMAP.rst +++ b/web_pwa_oca/readme/ROADMAP.rst @@ -33,3 +33,4 @@ doesn't send the cookie and web manifest returns 404. * Evaluate to support 'require' system. * Firefox can't detect 'standalone' mode. See https://bugzilla.mozilla.org/show_bug.cgi?id=1285858 +* Firefox disable service worker in private mode. See https://bugzilla.mozilla.org/show_bug.cgi?id=1601916 diff --git a/web_pwa_oca/static/src/js/pwa_manager.js b/web_pwa_oca/static/src/js/pwa_manager.js index 72b6df020..143d5b9d9 100644 --- a/web_pwa_oca/static/src/js/pwa_manager.js +++ b/web_pwa_oca/static/src/js/pwa_manager.js @@ -17,11 +17,13 @@ odoo.define("web_pwa_oca.PWAManager", function (require) { init: function () { this._super.apply(this, arguments); if (!('serviceWorker' in navigator)) { - throw new Error( - _t("Service workers are not supported! Maybe you are not using HTTPS?")); + console.error( + _t("Service workers are not supported! Maybe you are not using HTTPS or you work in private mode.")); + } + else { + this._service_worker = navigator.serviceWorker; + this.registerServiceWorker('/service-worker.js'); } - this._service_worker = navigator.serviceWorker; - this.registerServiceWorker('/service-worker.js'); }, /** From 076ca81059b53ac833f18a873d8cb05f113ae15f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexandre=20D=2E=20D=C3=ADaz?= Date: Fri, 11 Dec 2020 17:03:58 +0100 Subject: [PATCH 3/3] [IMP] web_pwa_oca: Readme --- web_pwa_oca/README.rst | 3 ++- web_pwa_oca/readme/USAGE.rst | 2 +- web_pwa_oca/static/description/index.html | 4 +++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/web_pwa_oca/README.rst b/web_pwa_oca/README.rst index 0068ca1b3..8bb6d1253 100644 --- a/web_pwa_oca/README.rst +++ b/web_pwa_oca/README.rst @@ -93,7 +93,7 @@ To use your PWA: #. Open the browser options #. Click on 'Add to Home screen' (or 'Install' in other browsers) -** Maybe you need refresh the page to load the service worker after use 'add to home screen'. +** Maybe you need refresh the page to load the service worker after using the option. Known issues / Roadmap ====================== @@ -133,6 +133,7 @@ Known issues / Roadmap doesn't send the cookie and web manifest returns 404. * Evaluate to support 'require' system. * Firefox can't detect 'standalone' mode. See https://bugzilla.mozilla.org/show_bug.cgi?id=1285858 +* Firefox disable service worker in private mode. See https://bugzilla.mozilla.org/show_bug.cgi?id=1601916 Bug Tracker =========== diff --git a/web_pwa_oca/readme/USAGE.rst b/web_pwa_oca/readme/USAGE.rst index d7d83d698..584cd8b49 100644 --- a/web_pwa_oca/readme/USAGE.rst +++ b/web_pwa_oca/readme/USAGE.rst @@ -4,4 +4,4 @@ To use your PWA: #. Open the browser options #. Click on 'Add to Home screen' (or 'Install' in other browsers) -** Maybe you need refresh the page to load the service worker after use 'add to home screen'. +** Maybe you need refresh the page to load the service worker after using the option. diff --git a/web_pwa_oca/static/description/index.html b/web_pwa_oca/static/description/index.html index 238a6914e..2b3d18bc4 100644 --- a/web_pwa_oca/static/description/index.html +++ b/web_pwa_oca/static/description/index.html @@ -435,7 +435,7 @@ And like all other installed apps, it’s a top level app in the task switcher.< Open the browser options Click on ‘Add to Home screen’ (or ‘Install’ in other browsers) -** Maybe you need refresh the page to load the service worker after use ‘add to home screen’.
+** Maybe you need refresh the page to load the service worker after using the option.
Known issues / Roadmap
@@ -481,6 +481,8 @@ doesn’t send the cookie and web manifest returns 404.+ Firefox can’t detect ‘standalone’ mode. See https://bugzilla.mozilla.org/show_bug.cgi?id=1285858
Firefox disable service worker in private mode. See https://bugzilla.mozilla.org/show_bug.cgi?id=1601916
+