Merge PR #1759 into 12.0

Signed-off-by pedrobaeza
This commit is contained in:
OCA-git-bot
2020-12-11 16:09:59 +00:00
10 changed files with 32 additions and 131 deletions

View File

@@ -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
===========

View File

@@ -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'],
}

View File

@@ -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`:

View File

@@ -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

View File

@@ -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.

View File

@@ -405,7 +405,6 @@ that Odoo Bootstrap is not supported so, you cant use require her
It launches from the same place that other apps launch. It runs in an app without an address bar or other browser UI.
And like all other installed apps, its a top level app in the task switcher.</p>
<p>In Chrome, a Progressive Web App can either be installed through the three-dot context menu.</p>
<p>This module also provides a “Install PWA” link in Odoo user menu.</p>
<p>In case you previously installed <cite>web_pwa</cite>, run the following steps with <cite>odoo shell</cite>, after having installed <cite>openupgradelib</cite>:</p>
<pre class="doctest-block">
&gt;&gt;&gt; from openupgradelib import openupgrade
@@ -432,9 +431,11 @@ And like all other installed apps, its a top level app in the task switcher.<
<h1><a class="toc-backref" href="#id3">Usage</a></h1>
<p>To use your PWA:</p>
<ol class="arabic simple">
<li>Open the Odoo web app using a supported browser (like Chrome/Chromium)</li>
<li>Install the PWA</li>
<li>Open the Odoo web app using a supported browser (See <a class="reference external" href="https://caniuse.com/?search=A2HS">https://caniuse.com/?search=A2HS</a>)</li>
<li>Open the browser options</li>
<li>Click on Add to Home screen (or Install in other browsers)</li>
</ol>
<p>** Maybe you need refresh the page to load the service worker after using the option.</p>
</div>
<div class="section" id="known-issues-roadmap">
<h1><a class="toc-backref" href="#id4">Known issues / Roadmap</a></h1>
@@ -478,9 +479,9 @@ doesnt send the cookie and web manifest returns 404.</p>
</li>
<li><p class="first">Evaluate to support require system.</p>
</li>
<li><p class="first">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.</p>
<li><p class="first">Firefox cant detect standalone mode. See <a class="reference external" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1285858">https://bugzilla.mozilla.org/show_bug.cgi?id=1285858</a></p>
</li>
<li><p class="first">Firefox disable service worker in private mode. See <a class="reference external" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1601916">https://bugzilla.mozilla.org/show_bug.cgi?id=1601916</a></p>
</li>
</ul>
</div>

View File

@@ -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();
},
});
});

View File

@@ -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,
/**
* @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);
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 +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);
},
});

View File

@@ -1,14 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<templates>
<t t-name="web_pwa_oca.systray.install">
<a href="#" role="menuitem" id="pwa_install_button" data-menu="installpwa" class="dropdown-item" hidden="1">Install PWA</a>
</t>
<t t-extend="UserMenu.Actions">
<t t-jquery="a[data-menu='settings']" t-operation="after">
<t t-call="web_pwa_oca.systray.install"/>
</t>
</t>
</templates>

View File

@@ -18,7 +18,6 @@
<template id="assets_backend" name="web service worker assets" inherit_id="web.assets_backend">
<xpath expr="." position="inside">
<script type="text/javascript" src="/web_pwa_oca/static/src/js/pwa_manager.js"></script>
<script type="text/javascript" src="/web_pwa_oca/static/src/js/pwa_install.js"></script>
<script type="text/javascript" src="/web_pwa_oca/static/src/js/webclient.js"></script>
</xpath>
</template>