From fa7247a338cddfa3f6f3aae46f743be65ece54d2 Mon Sep 17 00:00:00 2001 From: Paolo Arena Date: Thu, 31 Jan 2019 13:52:52 +0100 Subject: [PATCH] - Activated Workbox precache PWA ! importScripts('https://storage.googleapis.com/workbox-cdn/releases/3.0.0/workbox-sw.js'); if (!workbox) { workbox = new self.WorkboxSW(); } if (workbox) { workbox.core.setCacheNameDetails({prefix: "freeplanet"}); /** * The workboxSW.precacheAndRoute() method efficiently caches and responds to * requests for URLs in the manifest. * See https://goo.gl/S9QRab */ self.__precacheManifest = [].concat(self.__precacheManifest || []); workbox.precaching.suppressWarnings(); workbox.precaching.precacheAndRoute(self.__precacheManifest, {}); workbox.routing.registerRoute(/^http/, workbox.strategies.networkFirst(), 'GET'); } --- .env.development | 2 +- package-lock.json | 22 ++++---- package.json | 13 +++-- quasar.conf.js | 12 ++++- src-pwa/custom-service-worker.js | 54 +++++++++++++------ src-pwa/register-service-worker.js | 7 ++- src/components/Header.vue | 2 +- src/components/todos/SingleTodo/SingleTodo.ts | 2 +- src/components/todos/todo/todo.ts | 28 ++++++---- src/index.template.html | 16 +++--- src/layouts/drawer/drawer.vue | 2 +- src/plugins/i18n.js | 2 +- src/root/home/home.ts | 4 +- src/{ => statics}/i18n.js | 6 ++- src/views/login/vreg/vreg.ts | 2 +- workbox-config.js | 13 +++++ 16 files changed, 128 insertions(+), 59 deletions(-) rename src/{ => statics}/i18n.js (96%) create mode 100644 workbox-config.js diff --git a/.env.development b/.env.development index fea6886..2c23d66 100644 --- a/.env.development +++ b/.env.development @@ -1,4 +1,4 @@ -SERVICE_WORKER_FILE='sw.js' +SERVICE_WORKER_FILE='service-worker.js' APP_ID='1' VUE_APP_URL='prova SVILUPPO!' PROVA_PAOLO='PROVA SVILUPPO' diff --git a/package-lock.json b/package-lock.json index 0c3bf32..0c848f1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "freeplanet", - "version": "0.0.1", + "version": "0.0.2", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -21098,7 +21098,7 @@ "dependencies": { "minimist": { "version": "1.2.0", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true } @@ -24014,7 +24014,7 @@ "graceful-fs": "4.1.15", "make-dir": "1.3.0", "unique-string": "1.0.0", - "write-file-atomic": "2.3.0", + "write-file-atomic": "2.4.2", "xdg-basedir": "3.0.0" } }, @@ -24028,9 +24028,9 @@ } }, "write-file-atomic": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", - "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.2.tgz", + "integrity": "sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g==", "dev": true, "requires": { "graceful-fs": "4.1.15", @@ -25489,9 +25489,9 @@ }, "dependencies": { "ansi-escapes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", - "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", "dev": true }, "chardet": { @@ -25502,7 +25502,7 @@ }, "external-editor": { "version": "2.2.0", - "resolved": "http://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", "dev": true, "requires": { @@ -25537,7 +25537,7 @@ "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", "dev": true, "requires": { - "ansi-escapes": "3.1.0", + "ansi-escapes": "3.2.0", "chalk": "2.4.1", "cli-cursor": "2.1.0", "cli-width": "2.2.0", diff --git a/package.json b/package.json index f48f25a..8c23234 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,13 @@ { "name": "freeplanet", - "version": "0.0.1", + "version": "0.0.2", "private": true, + "keywords": [ + "freeplanet", + "free social" + ], + "author": "Paolo Arena", + "license": "MIT", "scripts": { "lint": "tslint --project tsconfig.json", "lint:fix": "tslint --project tsconfig.json --fix", @@ -10,11 +16,12 @@ "pwa": "NODE_ENV=development NODE_OPTIONS=--max_old_space_size=4096 DEBUG=v8:* quasar dev -m pwa", "test:unit": "jest", "test:cover": "jest --coverage", - "build": "quasar build -m pwa && workbox generateSW workbox-config.js", + "build": "quasar build -m pwa", "build:clean": "quasar clean", "serve": "quasar serve ./dist/pwa-mat", "serve:coverage": "quasar serve test/coverage/lcov-report/ --cache 0 --port 8788", - "deploy": "deploy.sh" + "deploy": "deploy.sh", + "generate-sw": "workbox generateSW workbox-config.js" }, "dependencies": { "@types/vuelidate": "^0.7.0", diff --git a/quasar.conf.js b/quasar.conf.js index 3e42cce..6a82163 100644 --- a/quasar.conf.js +++ b/quasar.conf.js @@ -180,8 +180,18 @@ module.exports = function (ctx) { } }, pwa: { + // runtimeCaching: [ + // { + // urlPattern: '/statics', + // handler: 'networkFirst' + // } + // ], + + // workboxPluginMode: 'GenerateSW', workboxPluginMode: 'InjectManifest', - // workboxOptions: {}, + workboxOptions: { + // swSrc: 'src/sw.js', + }, manifest: { name: 'Free Planet', short_name: 'freeplanet', diff --git a/src-pwa/custom-service-worker.js b/src-pwa/custom-service-worker.js index 81b7637..587c207 100644 --- a/src-pwa/custom-service-worker.js +++ b/src-pwa/custom-service-worker.js @@ -4,21 +4,45 @@ * quasar.conf > pwa > workboxPluginMode is set to "InjectManifest" */ -self.addEventListener('install', function(event) { - console.log('[Service Worker] Installing Service Worker ...', event); -}); +// Questo è il swSrc -self.addEventListener('activate', function(event) { - console.log('[Service Worker] Activating Service Worker ...', event); - return self.clients.claim(); -}); +console.log('___________________________ PAO: this is my custom service worker'); -self.addEventListener('fetch', function(event) { - //console.log('[Service Worker] Fetching something ....', event); - if (event.request.cache === 'only-if-cached' && event.request.mode !== 'same-origin') { - console.log('SAME ORIGIN!', event); - return; - } - event.respondWith(fetch(event.request)); -}); +importScripts('https://storage.googleapis.com/workbox-cdn/releases/3.0.0/workbox-sw.js'); + +if (!workbox) { + workbox = new self.WorkboxSW(); +} + +if (workbox) { + workbox.core.setCacheNameDetails({prefix: "freeplanet"}); + + /** + * The workboxSW.precacheAndRoute() method efficiently caches and responds to + * requests for URLs in the manifest. + * See https://goo.gl/S9QRab + */ + self.__precacheManifest = [].concat(self.__precacheManifest || []); + workbox.precaching.suppressWarnings(); + workbox.precaching.precacheAndRoute(self.__precacheManifest, {}); + + workbox.routing.registerRoute(/^http/, workbox.strategies.networkFirst(), 'GET'); + +} + +if ('serviceWorker' in navigator) { + + console.log('***************** Entering in custom-service-worker.js:') + + self.addEventListener('fetch', function (event) { + console.log('[Service Worker] Fetching something ....', event); + console.log('event.request.cache=', event.request.cache) + if (event.request.cache === 'only-if-cached' && event.request.mode !== 'same-origin') { + console.log('SAME ORIGIN!', event); + return; + } + event.respondWith(fetch(event.request)); + }); + +} diff --git a/src-pwa/register-service-worker.js b/src-pwa/register-service-worker.js index b7df77d..5205056 100644 --- a/src-pwa/register-service-worker.js +++ b/src-pwa/register-service-worker.js @@ -8,9 +8,11 @@ import {register} from 'register-service-worker' register(process.env.SERVICE_WORKER_FILE, { ready() { console.log('READY::: App is being served from cache by a service worker.') + }, registered(registration) { // registration -> a ServiceWorkerRegistration instance - console.log('REGISTERED::: !!!') + console.log('REGISTERED::: !!!', process.env.SERVICE_WORKER_FILE) + }, cached(registration) { // registration -> a ServiceWorkerRegistration instance console.log('CACHED::: Content has been cached for offline use.') @@ -33,3 +35,6 @@ register(process.env.SERVICE_WORKER_FILE, { // ServiceWorkerRegistration: https://developer.mozilla.org/en-uk/docs/Web/API/ServiceWorkerRegistration + + +// "build": "quasar build -m pwa && workbox generateSW workbox-config.js", diff --git a/src/components/Header.vue b/src/components/Header.vue index db65f37..e859de8 100644 --- a/src/components/Header.vue +++ b/src/components/Header.vue @@ -106,7 +106,7 @@ // dynamic import, so loading on demand only import(`quasar-framework/i18n/${lang}`).then(lang => { this.$q.i18n.set(lang.default) - import(`src/i18n`).then(function () { + import(`src/statics/i18n`).then(function () { }) }) } diff --git a/src/components/todos/SingleTodo/SingleTodo.ts b/src/components/todos/SingleTodo/SingleTodo.ts index 436ac1c..895197e 100644 --- a/src/components/todos/SingleTodo/SingleTodo.ts +++ b/src/components/todos/SingleTodo/SingleTodo.ts @@ -284,7 +284,7 @@ export default class SingleTodo extends Vue { } updateicon() { - console.log('updateicon') + // console.log('updateicon') if (this.itemtodo.completed) this.iconCompleted = 'check_circle' else diff --git a/src/components/todos/todo/todo.ts b/src/components/todos/todo/todo.ts index 8389b06..ffcc80d 100644 --- a/src/components/todos/todo/todo.ts +++ b/src/components/todos/todo/todo.ts @@ -6,7 +6,7 @@ import { ITodo } from '@src/model' import { rescodes } from '../../../store/Modules/rescodes' -import { UserStore } from '@modules' +import { UserStore } from '@store' import _ from 'lodash' @@ -45,7 +45,7 @@ export default class Todo extends Vue { } @Watch('$route.params.category') changecat() { - console.log('changecat') + // console.log('changecat') this.load() } @@ -90,7 +90,7 @@ export default class Todo extends Vue { async updateLinkedList(init: boolean, arr: ITodo[] = this.todos_arr) { - console.log('updateLinkedList', this.todos_arr) + // console.log('updateLinkedList', this.todos_arr) let idprev = -1 let idnext = -1 @@ -123,7 +123,7 @@ export default class Todo extends Vue { pos++ - this.logelem('updateLinked', elem) + // this.logelem('updateLinked', elem) }) } @@ -240,7 +240,7 @@ export default class Todo extends Vue { arr.forEach(rec => { this.arrPrior.push(rec.value) }) - console.log('Array PRIOR:', this.arrPrior) + // console.log('Array PRIOR:', this.arrPrior) } @@ -251,15 +251,17 @@ export default class Todo extends Vue { for (let todosKey in rescodes.Todos) { this.listPriorityLabel.push(rescodes.Todos[todosKey]) } - console.log('Priority:' + this.listPriorityLabel) + // console.log('Priority:' + this.listPriorityLabel) this.setarrPriority() this.clearArr() await this.updatetable() +/* this.todos_arr.forEach((elem, index) => { this.logelem('LOAD ' + index, elem) }) +*/ } @@ -273,8 +275,8 @@ export default class Todo extends Vue { priority: rescodes.Todos.PRIORITY_NORMAL, completed: false, created_at: new Date(), - category: '', modify_at: new Date(), + category: '', expiring_at: mydateexp, enableExpiring: false, id_prev: 0, @@ -310,6 +312,12 @@ export default class Todo extends Vue { objtodo.pos = (lastelem !== null) ? lastelem.pos + 1 : 1 objtodo.modified = true + if (objtodo.userId === undefined) { + this.$q.notify(this.$t('todo.usernotdefined')) + return + } + + // Add to Indexdb await this.$db.todos.add(objtodo ).then((id) => { @@ -442,7 +450,7 @@ export default class Todo extends Vue { } async filtertodos(refresh: boolean = false) { - console.log('filtertodos') + // console.log('filtertodos') let arrtemp = [] @@ -515,7 +523,7 @@ export default class Todo extends Vue { // deselectAllRows(item, check, onlythis: boolean = false) { - console.log('deselectAllRows : ', item) + // console.log('deselectAllRows : ', item) for (let i = 0; i < this.$refs.single.length; i++) { @@ -574,7 +582,7 @@ export default class Todo extends Vue { if (miorec.modified) { miorec.modify_at = new Date() - this.logelem('modify', miorec) + // this.logelem('modify', miorec) await this.$db.todos.put(miorec) diff --git a/src/index.template.html b/src/index.template.html index 4e2e4de..5e4fb15 100644 --- a/src/index.template.html +++ b/src/index.template.html @@ -10,15 +10,15 @@ - - - - - - - + + + + + + + - + diff --git a/src/layouts/drawer/drawer.vue b/src/layouts/drawer/drawer.vue index fc56086..0452d8f 100644 --- a/src/layouts/drawer/drawer.vue +++ b/src/layouts/drawer/drawer.vue @@ -55,7 +55,7 @@ links created() { - console.log('Drawer created...') + // console.log('Drawer created...') let listatodo = [] diff --git a/src/plugins/i18n.js b/src/plugins/i18n.js index 1f812a8..fc70103 100644 --- a/src/plugins/i18n.js +++ b/src/plugins/i18n.js @@ -1,6 +1,6 @@ // src/plugins/i18n.js import VueI18n from 'vue-i18n'; -import messages from 'src/i18n'; +import messages from 'src/statics/i18n'; export default ({ app, store, Vue }) => { Vue.use(VueI18n); diff --git a/src/root/home/home.ts b/src/root/home/home.ts index c9b58c6..df3acf2 100644 --- a/src/root/home/home.ts +++ b/src/root/home/home.ts @@ -19,12 +19,12 @@ export default class Home extends Vue { constructor() { super() - console.log('Home constructor...') + // console.log('Home constructor...') this.initprompt() } created() { - console.log('Home created...') + // console.log('Home created...') } mystilecard() { diff --git a/src/i18n.js b/src/statics/i18n.js similarity index 96% rename from src/i18n.js rename to src/statics/i18n.js index 5687c04..c010462 100644 --- a/src/i18n.js +++ b/src/statics/i18n.js @@ -101,7 +101,8 @@ const messages = { titleprioritymenu: 'Priorità:', insert: 'Inserisci il Task', edit: 'Descrizione Task:', - completed: 'Completati' + completed: 'Completati', + usernotdefined: 'Attenzione, occorre essere Loggati per poter aggiungere un Todo' } }, enUk: { @@ -206,7 +207,8 @@ const messages = { titleprioritymenu: 'Priority:', insert: 'Insert Task', edit: 'Task Description:', - completed: 'Completed' + completed: 'Completed', + usernotdefined: 'Attention, you need to be Signed In to add a new Task' } }, }; diff --git a/src/views/login/vreg/vreg.ts b/src/views/login/vreg/vreg.ts index 83adbe6..6578ff1 100644 --- a/src/views/login/vreg/vreg.ts +++ b/src/views/login/vreg/vreg.ts @@ -39,7 +39,7 @@ export default class Vreg extends Vue { } load() { - console.log('load') + // console.log('load') let param: ILinkReg param = { idlink: this.$route.query.idlink.toString() } console.log('idlink = ', param) diff --git a/workbox-config.js b/workbox-config.js new file mode 100644 index 0000000..c10c1e4 --- /dev/null +++ b/workbox-config.js @@ -0,0 +1,13 @@ +module.exports = { + "globDirectory": "dist/pwa-mat/", + "globPatterns": [ + "**/*.{css,woff2,woff,svg,html,js,json,ico}" + // "src/images/*.{jpg,png}" + ], + // "swSrc": "dist/pwa-mat/src-sw.js", + "swDest": "dist/pwa-mat/service-worker.js", + "globIgnores": [ + "../workbox-config.js", + "help/**" + ], +};