mirror of
https://github.com/OCA/web.git
synced 2025-02-22 13:21:25 +02:00
[IMP] web_pwa_oca: Port changes from 12.0
This commit is contained in:
committed by
sergio-teruel
parent
c1afeed3c1
commit
1194498f2e
98
web_pwa_oca/controllers/service_worker.py
Normal file
98
web_pwa_oca/controllers/service_worker.py
Normal file
@@ -0,0 +1,98 @@
|
||||
# Copyright 2021 Tecnativa - Alexandre D. Díaz
|
||||
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl).
|
||||
from odoo.http import request, route
|
||||
|
||||
from .main import PWA
|
||||
|
||||
|
||||
class ServiceWorker(PWA):
|
||||
|
||||
JS_PWA_CORE_EVENT_INSTALL = """
|
||||
self.addEventListener('install', evt => {{
|
||||
console.log('[ServiceWorker] Installing...');
|
||||
{}
|
||||
}});
|
||||
"""
|
||||
|
||||
JS_PWA_CORE_EVENT_FETCH = """
|
||||
self.addEventListener('fetch', evt => {{
|
||||
{}
|
||||
}});
|
||||
"""
|
||||
|
||||
JS_PWA_CORE_EVENT_ACTIVATE = """
|
||||
self.addEventListener('activate', evt => {{
|
||||
{}
|
||||
}});
|
||||
"""
|
||||
|
||||
JS_PWA_MAIN = """
|
||||
self.importScripts(...{pwa_scripts});
|
||||
|
||||
odoo.define("web_pwa_oca.ServiceWorker", function (require) {{
|
||||
"use strict";
|
||||
|
||||
{pwa_requires}
|
||||
|
||||
{pwa_init}
|
||||
{pwa_core_event_install}
|
||||
{pwa_core_event_activate}
|
||||
{pwa_core_event_fetch}
|
||||
}});
|
||||
"""
|
||||
|
||||
def _get_js_pwa_requires(self):
|
||||
return """
|
||||
const PWA = require('web_pwa_oca.PWA');
|
||||
"""
|
||||
|
||||
def _get_js_pwa_init(self):
|
||||
return """
|
||||
const oca_pwa = new PWA({});
|
||||
""".format(
|
||||
self._get_pwa_params()
|
||||
)
|
||||
|
||||
def _get_js_pwa_core_event_install_impl(self):
|
||||
return """
|
||||
evt.waitUntil(oca_pwa.installWorker());
|
||||
self.skipWaiting();
|
||||
"""
|
||||
|
||||
def _get_js_pwa_core_event_activate_impl(self):
|
||||
return """
|
||||
console.log('[ServiceWorker] Activating...');
|
||||
evt.waitUntil(oca_pwa.activateWorker());
|
||||
self.clients.claim();
|
||||
"""
|
||||
|
||||
def _get_js_pwa_core_event_fetch_impl(self):
|
||||
return ""
|
||||
|
||||
@route("/service-worker.js", type="http", auth="public")
|
||||
def render_service_worker(self):
|
||||
"""Route to register the service worker in the 'main' scope ('/')"""
|
||||
|
||||
sw_code = self.JS_PWA_MAIN.format(
|
||||
**{
|
||||
"pwa_scripts": self._get_pwa_scripts(),
|
||||
"pwa_requires": self._get_js_pwa_requires(),
|
||||
"pwa_init": self._get_js_pwa_init(),
|
||||
"pwa_core_event_install": self.JS_PWA_CORE_EVENT_INSTALL.format(
|
||||
self._get_js_pwa_core_event_install_impl()
|
||||
),
|
||||
"pwa_core_event_activate": self.JS_PWA_CORE_EVENT_ACTIVATE.format(
|
||||
self._get_js_pwa_core_event_activate_impl()
|
||||
),
|
||||
"pwa_core_event_fetch": self.JS_PWA_CORE_EVENT_FETCH.format(
|
||||
self._get_js_pwa_core_event_fetch_impl()
|
||||
),
|
||||
}
|
||||
)
|
||||
return request.make_response(
|
||||
sw_code,
|
||||
[
|
||||
("Content-Type", "text/javascript;charset=utf-8"),
|
||||
("Content-Length", len(sw_code)),
|
||||
],
|
||||
)
|
||||
Reference in New Issue
Block a user