diff --git a/web_pwa_oca/README.rst b/web_pwa_oca/README.rst index 5f4e2acc8b32..8bb6d1253521 100644 --- a/web_pwa_oca/README.rst +++ b/web_pwa_oca/README.rst @@ -62,8 +62,6 @@ And like all other installed apps, it's a top level app in the task switcher. 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`: @@ -91,8 +89,11 @@ 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 using the option. Known issues / Roadmap ====================== @@ -131,9 +132,8 @@ Known issues / Roadmap * Fix issue when trying to run in localhost with several databases. The browser 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 +* 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/__manifest__.py b/web_pwa_oca/__manifest__.py index bb666043dda4..53e84ea4dc58 100644 --- a/web_pwa_oca/__manifest__.py +++ b/web_pwa_oca/__manifest__.py @@ -24,8 +24,5 @@ "templates/service_worker.xml", "views/res_config_settings_views.xml", ], - 'qweb': [ - 'static/src/xml/pwa_install.xml', - ], 'images': ['static/description/pwa.png'], } diff --git a/web_pwa_oca/readme/INSTALL.rst b/web_pwa_oca/readme/INSTALL.rst index b73ab9f0ce2c..e82e32b91c47 100644 --- a/web_pwa_oca/readme/INSTALL.rst +++ b/web_pwa_oca/readme/INSTALL.rst @@ -10,8 +10,6 @@ And like all other installed apps, it's a top level app in the task switcher. 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`: diff --git a/web_pwa_oca/readme/ROADMAP.rst b/web_pwa_oca/readme/ROADMAP.rst index 5d292a4e7cb1..aa58b7b052bf 100644 --- a/web_pwa_oca/readme/ROADMAP.rst +++ b/web_pwa_oca/readme/ROADMAP.rst @@ -32,6 +32,5 @@ * Fix issue when trying to run in localhost with several databases. The browser 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 +* Firefox disable service worker in private mode. See https://bugzilla.mozilla.org/show_bug.cgi?id=1601916 diff --git a/web_pwa_oca/readme/USAGE.rst b/web_pwa_oca/readme/USAGE.rst index 3cf386adc199..584cd8b4938c 100644 --- a/web_pwa_oca/readme/USAGE.rst +++ b/web_pwa_oca/readme/USAGE.rst @@ -1,4 +1,7 @@ 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 using the option. diff --git a/web_pwa_oca/static/description/index.html b/web_pwa_oca/static/description/index.html index 24b4b17bff4f..2b3d18bc49d4 100644 --- a/web_pwa_oca/static/description/index.html +++ b/web_pwa_oca/static/description/index.html @@ -405,7 +405,6 @@
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 @@Configuration
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 using the option.
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 b8076988d961..000000000000 --- 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 6ffdc18712f3..143d5b9d9ec6 100644 --- a/web_pwa_oca/static/src/js/pwa_manager.js +++ b/web_pwa_oca/static/src/js/pwa_manager.js @@ -4,25 +4,26 @@ 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, + var PWAManager = Widget.extend({ /** * @override */ init: function () { this._super.apply(this, arguments); if (!('serviceWorker' in navigator)) { - throw new Error( - "This browser is not compatible with service workers"); + 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'); - window.addEventListener( - 'beforeinstallprompt', this._onBeforeInstallPrompt.bind(this)); }, /** @@ -33,53 +34,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); - }); - }, - - 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); - } + console.log(_t('[ServiceWorker] Registration failed: '), error); }); }, - 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 +45,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 ab6681f69411..000000000000 --- a/web_pwa_oca/static/src/xml/pwa_install.xml +++ /dev/null @@ -1,14 +0,0 @@ - -Known issues / Roadmap
@@ -478,9 +479,9 @@Known issues / Roadmap
- 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
+Firefox disable service worker in private mode. See https://bugzilla.mozilla.org/show_bug.cgi?id=1601916
- - diff --git a/web_pwa_oca/templates/assets.xml b/web_pwa_oca/templates/assets.xml index e9c91c664e05..60c8cd419140 100644 --- a/web_pwa_oca/templates/assets.xml +++ b/web_pwa_oca/templates/assets.xml @@ -18,7 +18,6 @@- Install PWA - - -- - -- -- -