diff --git a/addons/website_event_track_online/controllers/event_track.py b/addons/website_event_track_online/controllers/event_track.py index 26727aea53e..8df8b5deb5c 100644 --- a/addons/website_event_track_online/controllers/event_track.py +++ b/addons/website_event_track_online/controllers/event_track.py @@ -8,6 +8,7 @@ from datetime import timedelta import pytz from odoo import exceptions, http, fields +from odoo.addons.http_routing.models.ir_http import url_for from odoo.addons.website_event_track.controllers.main import WebsiteEventTrackController from odoo.http import request from odoo.modules.module import get_module_resource @@ -243,8 +244,8 @@ class EventTrackOnlineController(WebsiteEventTrackController): 'name': _('%s Online Events') % company.name, 'short_name': company.name, 'description': _('%s Online Events') % company.name, - 'scope': '/event', - 'start_url': '/event', + 'scope': url_for('/event'), + 'start_url': url_for('/event'), 'display': 'standalone', 'background_color': '#ffffff', 'theme_color': '#875A7B', @@ -270,6 +271,6 @@ class EventTrackOnlineController(WebsiteEventTrackController): body = fp.read() response = request.make_response(body, [ ('Content-Type', 'text/javascript'), - ('Service-Worker-Allowed', '/event'), + ('Service-Worker-Allowed', url_for('/event')), ]) return response diff --git a/addons/website_event_track_online/static/src/js/website_event_pwa_widget.js b/addons/website_event_track_online/static/src/js/website_event_pwa_widget.js index f8fffb3f9b1..15770c023dd 100644 --- a/addons/website_event_track_online/static/src/js/website_event_pwa_widget.js +++ b/addons/website_event_track_online/static/src/js/website_event_pwa_widget.js @@ -3,6 +3,7 @@ odoo.define("website_event_track_online.website_event_pwa_widget", function (req var config = require("web.config"); var publicWidget = require("web.public.widget"); + var utils = require("web.utils"); var PWAInstallBanner = publicWidget.Widget.extend({ xmlDependencies: ["/website_event_track_online/static/src/xml/website_event_pwa.xml"], @@ -41,7 +42,7 @@ odoo.define("website_event_track_online.website_event_pwa_widget", function (req start: function () { var superProm = this._super.apply(this, arguments); window.addEventListener("beforeinstallprompt", this.beforeInstallPromptHandler); - return superProm.then(this._registerServiceWorker); + return superProm.then(this._registerServiceWorker.bind(this)); }, /** @@ -57,6 +58,19 @@ odoo.define("website_event_track_online.website_event_pwa_widget", function (req // Private //-------------------------------------------------------------------------- + /** + * Returns the website's language + * @private + * @return {String} + */ + _getLangPrefix: function () { + var lang = utils.get_cookie('frontend_lang'); + if (lang !== undefined && window.location.href.indexOf(`/${lang}/`) >= 0) { + return `/${lang}`; + } + return ''; + }, + /** * @private */ @@ -72,8 +86,9 @@ odoo.define("website_event_track_online.website_event_pwa_widget", function (req if (!("serviceWorker" in navigator)) { return; } + var langPrefix = this._getLangPrefix(); navigator.serviceWorker - .register("/event/service-worker.js", { scope: "/event" }) + .register(`${langPrefix}/event/service-worker.js`, { scope: `${langPrefix}/event` }) .then((registration) => { console.info("Registration successful, scope is:", registration.scope); })