From ef6219e8c4fb20ff6d4e201c5978fe66e980653d Mon Sep 17 00:00:00 2001
From: Eliot Berriot <contact@eliotberriot.com>
Date: Thu, 9 Jan 2020 15:23:37 +0100
Subject: [PATCH] Fixed issue with service worker scope

---
 changes/notes.rst                  | 15 +++++++++++++++
 deploy/docker.nginx.template       |  2 +-
 deploy/nginx.template              |  2 +-
 docker/nginx/conf.dev              |  1 +
 front/src/registerServiceWorker.js |  1 +
 5 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/changes/notes.rst b/changes/notes.rst
index 3ffbcfd25c..754d60f30f 100644
--- a/changes/notes.rst
+++ b/changes/notes.rst
@@ -13,6 +13,21 @@ This release includes a full redesign of our navigation, player and queue. Overa
 a better, less confusing experience, especially on mobile devices. This redesign was suggested
 14 months ago, and took a while, but thanks to the involvement and feedback of many people, we got it done!
 
+Progressive web app [Manual change suggested, non-docker only]
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+We've made Funkwhale's Web UI a Progressive Web Application (PWA), in order to improve the user experience
+during offline use, and on mobile devices.
+
+In order to fully benefit from this change, if your pod isn't deployed using Docker, ensure
+the following instruction is present in your nginx configuration::
+
+    location /front/ {
+        # Add the following line in the /front/ location
+        add_header Service-Worker-Allowed "/";
+    }
+
+
 Improved search performance
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/deploy/docker.nginx.template b/deploy/docker.nginx.template
index ced42201a0..b5f01eaec2 100644
--- a/deploy/docker.nginx.template
+++ b/deploy/docker.nginx.template
@@ -40,7 +40,7 @@ server {
     location /front/ {
         add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self' data:; object-src 'none'; media-src 'self' data:";
         add_header Referrer-Policy "strict-origin-when-cross-origin";
-
+        add_header Service-Worker-Allowed "/";
         add_header X-Frame-Options "ALLOW";
         alias /frontend/;
         expires 30d;
diff --git a/deploy/nginx.template b/deploy/nginx.template
index 3dc6ccf8aa..aaa3cec7dc 100644
--- a/deploy/nginx.template
+++ b/deploy/nginx.template
@@ -86,7 +86,7 @@ server {
     location /front/ {
         add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self' data:; object-src 'none'; media-src 'self' data:";
         add_header Referrer-Policy "strict-origin-when-cross-origin";
-
+        add_header Service-Worker-Allowed "/";
         add_header X-Frame-Options "SAMEORIGIN";
         alias ${FUNKWHALE_FRONTEND_PATH}/;
         expires 30d;
diff --git a/docker/nginx/conf.dev b/docker/nginx/conf.dev
index 1807dc0882..cb22ec5680 100644
--- a/docker/nginx/conf.dev
+++ b/docker/nginx/conf.dev
@@ -76,6 +76,7 @@ http {
             add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self' data:; object-src 'none'; media-src 'self' data:";
             add_header Referrer-Policy "strict-origin-when-cross-origin";
             add_header X-Frame-Options "SAMEORIGIN";
+            add_header Service-Worker-Allowed "/";
             # uncomment the following line and comment the proxy-pass one
             # to use the frontend build with "yarn build"
             #alias /frontend/dist/;
diff --git a/front/src/registerServiceWorker.js b/front/src/registerServiceWorker.js
index 9e689f5b85..9d76479f7a 100644
--- a/front/src/registerServiceWorker.js
+++ b/front/src/registerServiceWorker.js
@@ -6,6 +6,7 @@ import store from './store'
 
 if (process.env.NODE_ENV === 'production') {
   register(`${process.env.BASE_URL}service-worker.js`, {
+    registrationOptions: { scope: '/' },
     ready () {
       console.log(
         'App is being served from cache by a service worker.'
-- 
GitLab