- 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');

  }
This commit is contained in:
Paolo Arena
2019-01-31 13:52:52 +01:00
parent c3739e2b32
commit fa7247a338
16 changed files with 128 additions and 59 deletions

View File

@@ -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'

22
package-lock.json generated
View File

@@ -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",

View File

@@ -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",

View File

@@ -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',

View File

@@ -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));
});
}

View File

@@ -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",

View File

@@ -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 () {
})
})
}

View File

@@ -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

View File

@@ -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)

View File

@@ -10,15 +10,15 @@
<meta name="viewport"
content="user-scalable=no, initial-scale=1, minimum-scale=1, width=device-width<% if (htmlWebpackPlugin.options.ctx.mode.cordova) { %>, viewport-fit=cover<% } %>">
<link rel="icon" href="statics/freeplanet-logo.png" type="image/x-icon">
<link rel="icon" type="image/png" sizes="32x32" href="statics/icons/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="statics/icons/favicon-16x16.png">
<script defer src="statics/js/material.min.js"></script>
<script src="statics/js/promise.js"></script>
<script src="statics/js/fetch.js"></script>
<script src="statics/js/idb.js"></script>
<link rel="icon" href="/statics/freeplanet-logo.png" type="image/x-icon">
<link rel="icon" type="image/png" sizes="32x32" href="/statics/icons/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/statics/icons/favicon-16x16.png">
<script defer src="/statics/js/material.min.js"></script>
<script src="/statics/js/promise.js"></script>
<script src="/statics/js/fetch.js"></script>
<script src="/statics/js/idb.js"></script>
<link type="text/css" rel="stylesheet" href="statics/firebaseui.css" />
<!--<link type="text/css" rel="stylesheet" href="statics/firebaseui.css" />-->
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
</head>

View File

@@ -55,7 +55,7 @@
links
created() {
console.log('Drawer created...')
// console.log('Drawer created...')
let listatodo = []

View File

@@ -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);

View File

@@ -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() {

View File

@@ -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'
}
},
};

View File

@@ -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)

13
workbox-config.js Normal file
View File

@@ -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/**"
],
};