Failed to execute template. Cause: [Access denied when checking [script] access to [xwiki:Collaboratory.UX.HbpSkin.WebHome] for user [xwiki:XWiki.Admin]]. Click on this message for details.

LiveTableServiceWorker - HBP Wiki

IAM21 instance, do not create collab nor modify a team, your changes will be lost


Changes for page LiveTableServiceWorker

Last modified by bougault on 2022/03/22 17:19

From version 4.7
edited by bougault
on 2022/03/21 13:11
Change comment: There is no comment for this version
To version 4.89
edited by bougault
on 2022/03/22 17:19
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -1,16 +1,0 @@
1 -{{velocity}}
2 -$response.setContentType("text/javascript")
3 -self.addEventListener("install" , evt => {
4 - console.log(evt);
5 -});
6 -
7 -self.addEventListener("activate" , evt => {
8 - console.log(evt);
9 - clients.claim();
10 -});
11 -
12 -self.addEventListener("fetch" , evt => {
13 - console.log(evt);
14 -});
15 -
16 -{{/velocity}}
XWiki.JavaScriptExtension[0]
Code
... ... @@ -1,10 +1,34 @@
1 -if ('serviceWorker' in navigator) {
2 - navigator.serviceWorker.register('/bin/get/LiveTableServiceWorker?xcontent=plain&outputSyntax=plain', { 'scope': '/bin/view/Membership'})
3 - .then((reg) => {
4 - // registration worked
5 - console.log('Registration succeeded. Scope is ' + reg.scope);
6 - }).catch((error) => {
7 - // registration failed
8 - console.log('Registration failed with ' + error);
1 +$response.addHeader('Service-Worker-Allowed', '/bin/view/Membership')
2 +$response.setContentType("text/javascript")
3 +console.log(navigator.serviceWorker);
4 +if(navigator.serviceWorker) {
5 + const version = "0.1.0";
6 +
7 + self.addEventListener("install" , event => {
8 + self.skipWaiting();
9 9   });
10 +
11 + self.addEventListener("activate" , event => {
12 + event.waitUntil(self.clients.claim());
13 + });
14 + /*
15 + self.addEventListener("fetch" , event => {
16 + const pathname = new URL(event.request.url).pathname;
17 + if(pathname === '/bin/get/XWiki/LiveTableResults') {
18 + event.respondWith(fetch(event.request).then(res => res.json()).then(json => {
19 + const headers = new Headers({'Content-Type': 'application/json'});
20 + const jsonResults = json.rows.filter(row => row.doc_viewable === true);
21 + return new Response(JSON.stringify(jsonResults), {headers});
22 + }));
23 + }
24 + });
25 + */
26 + self.addEventListener("fetch", (e) => {
27 + const pathname = new URL(event.request.url).pathname;
28 + console.log("sw", pathname);
29 + if(pathname === "/getMembershipRequests") {
30 + const res = new Response("custom response");
31 + e.respondWith(res);
32 + }
33 + });
10 10  }
Use this extension
... ... @@ -1,0 +1,1 @@
1 +onDemand
Parse content
... ... @@ -1,0 +1,1 @@
1 +Yes