diff --git a/.env b/.env index 77cb6301..f810ac1b 100755 --- a/.env +++ b/.env @@ -1,6 +1,6 @@ -VITE_APP_VERSION="1.2.18" +VITE_APP_VERSION="1.2.19" VITE_LANG_DEFAULT="it" VITE_PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF" -VITE_SERVICE_WORKER_FILE="sw-1.2.18.js" +VITE_SERVICE_WORKER_FILE="sw-1.2.19.js" VITE_PROJECT_ID_MAIN="5cc0a13fe5c9d156728f400a" VITE_VUE_ROUTER_MODE="history" \ No newline at end of file diff --git a/index.html b/index.html index 44d51a52..6b47784b 100755 --- a/index.html +++ b/index.html @@ -10,7 +10,7 @@ - + diff --git a/package.json b/package.json index 55a36fb9..3e72b934 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "riso", - "version": "1.2.18", + "version": "1.2.19", "description": "Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.", "productName": "Riso", "author": "Surya", diff --git a/quasar.config.ts b/quasar.config.ts index c24d4eb7..d0136a99 100644 --- a/quasar.config.ts +++ b/quasar.config.ts @@ -366,9 +366,10 @@ export default defineConfig((ctx) => { // https://v2.quasar.dev/quasar-cli/developing-pwa/configuring-pwa pwa: { workboxMode: 'InjectManifest', // 'GenerateSW' or 'InjectManifest' - swFilename: 'sw-' + "1.2.18" + '.js', + swFilename: 'sw-' + "1.2.19" + '.js', workboxOptions: { swSrc: 'src-pwa/custom-service-worker.js', // Assicurati che il file esista + include: [/\.html$/, /\.js$/, /\.css$/, /\.png$/, /\.svg$/, /\.json$/], // File da precacheare }, /*extendGenerateSWOptions(cfg) { cfg.skipWaiting = false diff --git a/scripts/_ALL_SITES/comunitanuovomondo.app/package.json b/scripts/_ALL_SITES/comunitanuovomondo.app/package.json index 2d01d1d1..0bb8fa49 100755 --- a/scripts/_ALL_SITES/comunitanuovomondo.app/package.json +++ b/scripts/_ALL_SITES/comunitanuovomondo.app/package.json @@ -1,6 +1,6 @@ { "name": "riso", - "version": "1.2.18", + "version": "1.2.19", "description": "Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.", "productName": "Riso", "author": "Surya", diff --git a/scripts/_ALL_SITES/gruppomacro.app/package.json b/scripts/_ALL_SITES/gruppomacro.app/package.json index 05ee1103..a9062e09 100755 --- a/scripts/_ALL_SITES/gruppomacro.app/package.json +++ b/scripts/_ALL_SITES/gruppomacro.app/package.json @@ -1,6 +1,6 @@ { "name": "gruppomacro", - "version": "1.2.18", + "version": "1.2.19", "description": "Gruppo Macro", "productName": "Gruppo Macro", "author": "Surya", diff --git a/scripts/_ALL_SITES/gruppomacro.app/quasar.config.ts b/scripts/_ALL_SITES/gruppomacro.app/quasar.config.ts index 3ac647c1..32780b05 100644 --- a/scripts/_ALL_SITES/gruppomacro.app/quasar.config.ts +++ b/scripts/_ALL_SITES/gruppomacro.app/quasar.config.ts @@ -360,9 +360,10 @@ export default defineConfig((ctx) => { pwa: { workboxMode: 'InjectManifest', // 'GenerateSW' or 'InjectManifest' - swFilename: 'sw-' + "1.2.18" + '.js', + swFilename: 'sw-' + "1.2.19" + '.js', workboxOptions: { swSrc: 'src-pwa/custom-service-worker.js', // Assicurati che il file esista + include: [/\.html$/, /\.js$/, /\.css$/, /\.png$/, /\.svg$/, /\.json$/], // File da precacheare }, /*extendGenerateSWOptions(cfg) { cfg.skipWaiting = false diff --git a/scripts/_ALL_SITES/piuchebuono.app/package.json b/scripts/_ALL_SITES/piuchebuono.app/package.json index 8ae9b3e3..c6766d8c 100755 --- a/scripts/_ALL_SITES/piuchebuono.app/package.json +++ b/scripts/_ALL_SITES/piuchebuono.app/package.json @@ -1,6 +1,6 @@ { "name": "piuchebuono", - "version": "1.2.18", + "version": "1.2.19", "description": "PiuCheBuono", "productName": "PiuCheBuono", "author": "Surya", diff --git a/scripts/_ALL_SITES/piuchebuono.app/quasar.config.ts b/scripts/_ALL_SITES/piuchebuono.app/quasar.config.ts index 251da2ca..7888ad3e 100644 --- a/scripts/_ALL_SITES/piuchebuono.app/quasar.config.ts +++ b/scripts/_ALL_SITES/piuchebuono.app/quasar.config.ts @@ -360,9 +360,10 @@ export default defineConfig((ctx) => { pwa: { workboxMode: 'InjectManifest', // 'GenerateSW' or 'InjectManifest' - swFilename: 'sw-' + "1.2.18" + '.js', + swFilename: 'sw-' + "1.2.19" + '.js', workboxOptions: { swSrc: 'src-pwa/custom-service-worker.js', // Assicurati che il file esista + include: [/\.html$/, /\.js$/, /\.css$/, /\.png$/, /\.svg$/, /\.json$/], // File da precacheare }, /*extendGenerateSWOptions(cfg) { cfg.skipWaiting = false diff --git a/scripts/_ALL_SITES/riso.app/package.json b/scripts/_ALL_SITES/riso.app/package.json index 55a36fb9..3e72b934 100755 --- a/scripts/_ALL_SITES/riso.app/package.json +++ b/scripts/_ALL_SITES/riso.app/package.json @@ -1,6 +1,6 @@ { "name": "riso", - "version": "1.2.18", + "version": "1.2.19", "description": "Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.", "productName": "Riso", "author": "Surya", diff --git a/scripts/_ALL_SITES/riso.app/quasar.config.ts b/scripts/_ALL_SITES/riso.app/quasar.config.ts index c24d4eb7..d0136a99 100644 --- a/scripts/_ALL_SITES/riso.app/quasar.config.ts +++ b/scripts/_ALL_SITES/riso.app/quasar.config.ts @@ -366,9 +366,10 @@ export default defineConfig((ctx) => { // https://v2.quasar.dev/quasar-cli/developing-pwa/configuring-pwa pwa: { workboxMode: 'InjectManifest', // 'GenerateSW' or 'InjectManifest' - swFilename: 'sw-' + "1.2.18" + '.js', + swFilename: 'sw-' + "1.2.19" + '.js', workboxOptions: { swSrc: 'src-pwa/custom-service-worker.js', // Assicurati che il file esista + include: [/\.html$/, /\.js$/, /\.css$/, /\.png$/, /\.svg$/, /\.json$/], // File da precacheare }, /*extendGenerateSWOptions(cfg) { cfg.skipWaiting = false diff --git a/src-pwa/custom-service-worker.js b/src-pwa/custom-service-worker.js index 352b9057..98ca5fd4 100755 --- a/src-pwa/custom-service-worker.js +++ b/src-pwa/custom-service-worker.js @@ -3,9 +3,9 @@ /* global workbox */ /* global cfgenv */ -const CACHE_NAME = 'pwa-cache-v2'; // Nome della cache +const VITE_APP_VERSION = "1.2.19"; -const ORA = "12.57" +const CACHE_NAME = 'pwa-cache-' + VITE_APP_VERSION; // Nome della cache importScripts('workbox/workbox-sw.js') @@ -31,7 +31,7 @@ if (workbox) { workbox.loadModule('workbox-strategies'); - console.log('Workbox ESISTE ✅ ' + ORA); + console.log('Workbox ESISTE ✅ '); } else { console.error('Workbox NON CARICATO ! ❌'); @@ -73,16 +73,15 @@ self.addEventListener('activate', (event) => { caches.keys().then((cacheNames) => { return Promise.all( cacheNames - .filter((name) => name !== CACHE_NAME) + .filter(name => name !== CACHE_NAME && name !== DYNAMIC_CACHE) .map((name) => caches.delete(name)) ); }) ); }); -const VITE_APP_VERSION = "1.2.18"; -console.log(' [ VER-' + VITE_APP_VERSION + ' ] _---------________------ PAO: this is my custom service worker: ' + ORA); +console.log(' [ VER-' + VITE_APP_VERSION + ' ] _---------________------ PAO: this is my custom service worker: '); try { importScripts('/js/idb.js', '/js/storage.js'); @@ -127,6 +126,12 @@ if (workbox) { ) }*/ + // Gestione richieste statiche + registerRoute( + ({ request }) => request.destination === 'document' || request.destination === 'script' || request.destination === 'style', + new StaleWhileRevalidate({ cacheName: CACHE_NAME }) + ); + // Cache strategy registrations registerRoute( new RegExp(/\.(?:png|gif|jpg|jpeg)$/), @@ -182,7 +187,13 @@ if (workbox) { }) ); + // Gestione API registerRoute( + ({ url }) => url.hostname === API_DOMAIN, + new NetworkOnly({ fetchOptions: { credentials: 'include' } }) + ); + + /*registerRoute( (routeData) => routeData.event.request.headers.get('accept').includes('text/html'), async (args) => { let response = await caches.match(args.event.request); @@ -197,7 +208,7 @@ if (workbox) { return caches.match('/offline'); } } - ); + );*/ registerRoute(new RegExp('/admin/'), new NetworkOnly()); @@ -268,7 +279,6 @@ if (workbox) { method: request.method, headers: { ...Object.fromEntries(request.headers.entries()), - 'Origin': `https://${APP_DOMAIN}`, 'Accept': 'application/json', }, mode: 'cors', @@ -278,13 +288,15 @@ if (workbox) { try { const response = await fetch(modifiedRequest); + if (!response.ok) { + console.warn('[SW] API Response Error:', response.status, response.statusText); + } + // Se la risposta è valida, restituiscila if (response.ok) { return response; } - // Logga eventuali errori - console.warn('[Service Worker] API response not OK:', response.status, response.statusText); return response; } catch (error) { console.error('[Service Worker] API request error ❌:', error); diff --git a/src/store/Api/index.ts b/src/store/Api/index.ts index 6c80ad62..89cb0d59 100755 --- a/src/store/Api/index.ts +++ b/src/store/Api/index.ts @@ -121,7 +121,7 @@ export const Api = { } }, - async checkTokenScaduto(status, evitaloop, resolve, reject, url, method, mydata, setAuthToken = false) { + async checkTokenScaduto(status, evitaloop, url, method, mydata, setAuthToken = false) { const userStore = useUserStore(); if (status === serv_constants.RIS_CODE__HTTP_FORBIDDEN_TOKEN_EXPIRED) { @@ -134,12 +134,12 @@ export const Api = { if (!evitaloop) { console.log('Nuovo token ottenuto. Riprovo la richiesta...'); - return resolve(this.SendReq(url, method, mydata, setAuthToken, true)); + return await this.SendReq(url, method, mydata, setAuthToken, true); } } else { // Se il refresh token fallisce, logout dell'utente userStore.setAuth('', ''); - return reject({ code: toolsext.ERR_AUTHENTICATION }); + throw { code: toolsext.ERR_AUTHENTICATION }; } } catch (err2) { console.error('Errore durante il refresh token:', err2); @@ -147,11 +147,11 @@ export const Api = { if (err2?.code === serv_constants.RIS_CODE__HTTP_FORBIDDEN_INVALID_TOKEN) { userStore.setServerCode(toolsext.ERR_AUTHENTICATION); userStore.setAuth('', ''); - return reject({ code: toolsext.ERR_AUTHENTICATION }); + throw { code: toolsext.ERR_AUTHENTICATION }; } // Gestione di altri errori critici - return reject(err2); + throw err2; } } @@ -190,8 +190,8 @@ export const Api = { throw { code: toolsext.ERR_AUTHENTICATION }; } - // Verifica sul token (funzione custom, che deve restituire un valore se serve un nuovo flusso) - const ret = await this.checkTokenScaduto(res.status, evitaloop, res, null, url, method, mydata, setAuthToken); + // Verifica sul token (funzione custom) + const ret = await this.checkTokenScaduto(res.status, evitaloop, url, method, mydata, setAuthToken); if (ret) return ret; if (tools.isDebug()) console.log(' ----> ', res); @@ -206,8 +206,9 @@ export const Api = { } }, 1000); - const ret = await this.checkTokenScaduto(error.status, evitaloop, null, error, url, method, mydataout, setAuthToken); + const ret = await this.checkTokenScaduto(error.status, evitaloop, url, method, mydataout, setAuthToken); if (ret) return ret; + console.error('Errore nella richiesta:', error); throw error; }