diff --git a/.env b/.env index f810ac1b..329c8d5e 100755 --- a/.env +++ b/.env @@ -1,6 +1,6 @@ -VITE_APP_VERSION="1.2.19" +VITE_APP_VERSION="1.2.21" VITE_LANG_DEFAULT="it" VITE_PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF" -VITE_SERVICE_WORKER_FILE="sw-1.2.19.js" +VITE_SERVICE_WORKER_FILE="sw-1.2.21.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 6b47784b..6c454cf6 100755 --- a/index.html +++ b/index.html @@ -10,7 +10,7 @@ - + diff --git a/package.json b/package.json index 3e72b934..3c69ba02 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "riso", - "version": "1.2.19", + "version": "1.2.21", "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 d0136a99..e91df5dc 100644 --- a/quasar.config.ts +++ b/quasar.config.ts @@ -366,7 +366,7 @@ export default defineConfig((ctx) => { // https://v2.quasar.dev/quasar-cli/developing-pwa/configuring-pwa pwa: { workboxMode: 'InjectManifest', // 'GenerateSW' or 'InjectManifest' - swFilename: 'sw-' + "1.2.19" + '.js', + swFilename: 'sw-' + "1.2.21" + '.js', workboxOptions: { swSrc: 'src-pwa/custom-service-worker.js', // Assicurati che il file esista include: [/\.html$/, /\.js$/, /\.css$/, /\.png$/, /\.svg$/, /\.json$/], // File da precacheare diff --git a/scripts/_ALL_SITES/comunitanuovomondo.app/package.json b/scripts/_ALL_SITES/comunitanuovomondo.app/package.json index 0bb8fa49..4da5d081 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.19", + "version": "1.2.21", "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 a9062e09..7ed29d90 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.19", + "version": "1.2.21", "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 32780b05..76db667b 100644 --- a/scripts/_ALL_SITES/gruppomacro.app/quasar.config.ts +++ b/scripts/_ALL_SITES/gruppomacro.app/quasar.config.ts @@ -360,7 +360,7 @@ export default defineConfig((ctx) => { pwa: { workboxMode: 'InjectManifest', // 'GenerateSW' or 'InjectManifest' - swFilename: 'sw-' + "1.2.19" + '.js', + swFilename: 'sw-' + "1.2.21" + '.js', workboxOptions: { swSrc: 'src-pwa/custom-service-worker.js', // Assicurati che il file esista include: [/\.html$/, /\.js$/, /\.css$/, /\.png$/, /\.svg$/, /\.json$/], // File da precacheare diff --git a/scripts/_ALL_SITES/piuchebuono.app/package.json b/scripts/_ALL_SITES/piuchebuono.app/package.json index c6766d8c..8f244214 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.19", + "version": "1.2.21", "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 7888ad3e..f1f55688 100644 --- a/scripts/_ALL_SITES/piuchebuono.app/quasar.config.ts +++ b/scripts/_ALL_SITES/piuchebuono.app/quasar.config.ts @@ -360,7 +360,7 @@ export default defineConfig((ctx) => { pwa: { workboxMode: 'InjectManifest', // 'GenerateSW' or 'InjectManifest' - swFilename: 'sw-' + "1.2.19" + '.js', + swFilename: 'sw-' + "1.2.21" + '.js', workboxOptions: { swSrc: 'src-pwa/custom-service-worker.js', // Assicurati che il file esista include: [/\.html$/, /\.js$/, /\.css$/, /\.png$/, /\.svg$/, /\.json$/], // File da precacheare diff --git a/scripts/_ALL_SITES/riso.app/package.json b/scripts/_ALL_SITES/riso.app/package.json index 3e72b934..3c69ba02 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.19", + "version": "1.2.21", "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 d0136a99..e91df5dc 100644 --- a/scripts/_ALL_SITES/riso.app/quasar.config.ts +++ b/scripts/_ALL_SITES/riso.app/quasar.config.ts @@ -366,7 +366,7 @@ export default defineConfig((ctx) => { // https://v2.quasar.dev/quasar-cli/developing-pwa/configuring-pwa pwa: { workboxMode: 'InjectManifest', // 'GenerateSW' or 'InjectManifest' - swFilename: 'sw-' + "1.2.19" + '.js', + swFilename: 'sw-' + "1.2.21" + '.js', workboxOptions: { swSrc: 'src-pwa/custom-service-worker.js', // Assicurati che il file esista include: [/\.html$/, /\.js$/, /\.css$/, /\.png$/, /\.svg$/, /\.json$/], // File da precacheare diff --git a/src-pwa/custom-service-worker.js b/src-pwa/custom-service-worker.js index 98ca5fd4..d618ec56 100755 --- a/src-pwa/custom-service-worker.js +++ b/src-pwa/custom-service-worker.js @@ -3,7 +3,7 @@ /* global workbox */ /* global cfgenv */ -const VITE_APP_VERSION = "1.2.19"; +const VITE_APP_VERSION = "1.2.21"; const CACHE_NAME = 'pwa-cache-' + VITE_APP_VERSION; // Nome della cache diff --git a/src/App.ts b/src/App.ts index 4fbc9cdc..6fbb9af6 100755 --- a/src/App.ts +++ b/src/App.ts @@ -10,6 +10,7 @@ import { CFirstPageApp } from '@src/components/CFirstPageApp' import { computed, onMounted, ref, watch } from 'vue' import { CProvaPao } from '@src/components/CProvaPao' import { tools } from '@tools' +import { toolsext } from '@store/Modules/toolsext' import { Vue } from 'vue-class-component' @@ -133,7 +134,12 @@ export default { if (chiamaautologin) { // console.log('CHIAMA autologin_FromLocalStorage') - await userStore.autologin_FromLocalStorage($router, $q) + const ris = await userStore.autologin_FromLocalStorage($router, $q) + if (ris?.code === toolsext.ERR_RETRY_LOGIN) { + setTimeout(() => { + $router.replace('/signin'); + }, 100); + } } else { globalStore.finishLoading = true } diff --git a/src/store/Api/index.ts b/src/store/Api/index.ts index 89cb0d59..53310782 100755 --- a/src/store/Api/index.ts +++ b/src/store/Api/index.ts @@ -139,7 +139,8 @@ export const Api = { } else { // Se il refresh token fallisce, logout dell'utente userStore.setAuth('', ''); - throw { code: toolsext.ERR_AUTHENTICATION }; + const $router = useRouter() + throw { code: toolsext.ERR_RETRY_LOGIN }; } } catch (err2) { console.error('Errore durante il refresh token:', err2); @@ -147,12 +148,16 @@ export const Api = { if (err2?.code === serv_constants.RIS_CODE__HTTP_FORBIDDEN_INVALID_TOKEN) { userStore.setServerCode(toolsext.ERR_AUTHENTICATION); userStore.setAuth('', ''); - throw { code: toolsext.ERR_AUTHENTICATION }; + throw { status: toolsext.ERR_RETRY_LOGIN }; } // Gestione di altri errori critici throw err2; } + } else if (status === serv_constants.RIS_CODE__HTTP_FORBIDDEN_INVALID_TOKEN) { + userStore.setAuth('', ''); + const $router = useRouter() + throw { status: toolsext.ERR_RETRY_LOGIN }; } return null; @@ -252,7 +257,7 @@ export const Api = { return await this.SendReqBase(url, method, mydata, setAuthToken, evitaloop, myformdata, responsedata, options); } catch (error) { // Se lo status non è 403 e sono rimasti tentativi, eseguo il retry - const riprova = error.status !== 403; + const riprova = error.status !== 403 && error.status !== toolsext.ERR_RETRY_LOGIN; if (retryCount > 0 && riprova) { console.log(`❌❌❌ Retrying request. Attempts remaining: ${retryCount}`); await this.delay(retryDelay); diff --git a/src/store/Modules/toolsext.ts b/src/store/Modules/toolsext.ts index be008da6..7ab33ac5 100755 --- a/src/store/Modules/toolsext.ts +++ b/src/store/Modules/toolsext.ts @@ -106,6 +106,7 @@ export const toolsext = { ERR_GENERICO: -1, ERR_SERVERFETCH: -2, ERR_AUTHENTICATION: -5, + ERR_RETRY_LOGIN: -40, localStorage: { diff --git a/src/store/UserStore.ts b/src/store/UserStore.ts index 9b19ac33..644cfa4a 100755 --- a/src/store/UserStore.ts +++ b/src/store/UserStore.ts @@ -1550,32 +1550,39 @@ export const useUserStore = defineStore('UserStore', { await globalStore.checkUpdates() } - const isok = await globalStore.loadLoginSite(router) + const { isok, stop, code } = await globalStore.loadLoginSite(router) - this.isLogged = isok && isLogged + this.isLogged = isok && isLogged && !stop - await globalStore.loadAfterLogin() + if (!stop) { - // console.log('this.isLogged', this.isLogged, 'isok', isok, 'isLogged', isLogged) - if (globalStore.site.confpages && globalStore.site.confpages.enableTodos) - await todos.dbLoad({ checkPending: true }) + await globalStore.loadAfterLogin() - if (globalStore.site.confpages?.enableProj) - await projects.dbLoad({ checkPending: true, onlyiffirsttime: true }) + // console.log('this.isLogged', this.isLogged, 'isok', isok, 'isLogged', isLogged) - globalStore.addDynamicPages(router) + if (globalStore.site.confpages && globalStore.site.confpages.enableTodos) + await todos.dbLoad({ checkPending: true }) - static_data.lang_available = globalStore.getLangAvailable() + if (globalStore.site.confpages?.enableProj) + await projects.dbLoad({ checkPending: true, onlyiffirsttime: true }) - static_data.arrLangUsed = tools.getLangUsed() + globalStore.addDynamicPages(router) - // console.log('$router', $router) + static_data.lang_available = globalStore.getLangAvailable() + + static_data.arrLangUsed = tools.getLangUsed() + + // console.log('$router', $router) + + // document.dispatchEvent(new Event('custom-post-render-event')) + } globalStore.finishLoading = true if (tools.isDebug()) console.log('finishLoading', globalStore.finishLoading) - // document.dispatchEvent(new Event('custom-post-render-event')) + return { code } + } catch (e) { console.error('Error', e) globalStore.finishLoading = true @@ -1623,13 +1630,13 @@ export const useUserStore = defineStore('UserStore', { return await this.setGlobal(router, isLogged) .then((loadstorage: any) => { // console.log('RISULT setGlobal:', loadstorage) - if (loadstorage) { - + if (loadstorage.code === 200) { globalroutines('loadapp', '') // Create Subscription to Push Notification globalStore.createPushSubscription() } + return loadstorage }) } catch (e: any) { diff --git a/src/store/globalStore.ts b/src/store/globalStore.ts index ec0a359d..8058c25e 100644 --- a/src/store/globalStore.ts +++ b/src/store/globalStore.ts @@ -1019,14 +1019,18 @@ export const useGlobalStore = defineStore('GlobalStore', { async loadLoginSite(router: Router) { let isok = false + let code = 200 + + let stop = false if (!await this.loadSite()) { - router.push('/signin') + stop = true + code = toolsext.ERR_RETRY_LOGIN } else { isok = true } - return isok + return { isok, stop, code } }, async loadAfterLogin() { @@ -1891,8 +1895,11 @@ export const useGlobalStore = defineStore('GlobalStore', { // userStore.setErrorCatch(error) this.serverError = true this.serverMsgError = error - return new Types.AxiosError(serv_constants.RIS_CODE_ERR, null, toolsext.ERR_GENERICO, error) + //return new Types.AxiosError(serv_constants.RIS_CODE_ERR, null, toolsext.ERR_GENERICO, error) + return false } + + return false }, getProvinceByProv(provstr: string) {