Files
salvato.newfreeplanet/src/globalroutines/indexdb.ts
paoloar77 ce20daed6d Notification with Service Workers now is working!
When a Notification arrives, it save into the IndexDb,
then in Vue.js call a polling to check in the db if there is a different record count.
If is different then call a get to update the notification.
2022-08-07 02:01:20 +02:00

137 lines
3.9 KiB
TypeScript
Executable File

import { costanti } from '@store/Modules/costanti'
import { ICfgData } from '@src/model'
import { tools } from '@src/store/Modules/tools'
import { toolsext } from '@src/store/Modules/toolsext'
import { useUserStore } from '@store/UserStore'
import { useGlobalStore } from '@store/globalStore'
import { idbKeyval as storage } from '../js/storage.js'
function writeConfigIndexDb(data: any) {
// console.log('writeConfigIndexDb', data)
storage.setdata('config', data)
}
function saveConfigIndexDb() {
const userStore = useUserStore()
const data: ICfgData = {
_id: costanti.CONFIG_ID_CFG,
lang: toolsext.getLocale(),
token: userStore.x_auth_token,
userId: userStore.my._id,
}
writeConfigIndexDb(data)
}
async function readfromIndexDbToState(table: string) {
console.log('*** readfromIndexDbToState ***', table)
return storage.getalldata(table)
.then((reccat) => {
// console.log('&&&&&&& readfromIndexDbToState OK: Num RECORD: ', records.length)
if (table === 'categories') {
console.log('reccat', reccat)
/* Todos.categories = []
for (const elem of reccat) {
Todos.categories.push(elem.valore)
}
console.log('ARRAY Categories', Todos.categories)
table = 'todos'
return storage.getalldata(table)
.then((records) => {
console.log(table + ' records', records)
// console.log('&&&&&&& readfromIndexDbToState OK: Num RECORD: ', records.length)
const arrinit = []
for (const mytodo of records) {
const cat = mytodo.category
const indcat = Todos.categories.indexOf(cat)
if (arrinit.indexOf(indcat) < 0) {
Todos.todos[indcat] = []
arrinit.push(indcat)
}
Todos.todos[indcat].push(mytodo)
}
console.log('************ ARRAYS SALVATI IN MEMORIA ', table, records)
})
*/
} else {
// ++Todo conv : const arrris = tools.setArrayMainByTable(table, reccat)
// console.log('************ ARRAYS SALVATI IN MEMORIA ', table, arrris)
}
}).catch((error) => {
console.log('err readfromIndexDbToState: ', error)
})
}
function consolelogpao(str: string, str2 = '', str3 = '') {
console.log(str, str2, str3)
// Todos.mutations.setTestpao(str + str2 + str3)
}
export default async (cmd: string, table: string, datakey: any = null, id: any = '') => {
const globalStore = useGlobalStore()
try {
// console.log('TABLE', table, 'cmd', cmd)
if (cmd === 'loadapp') {
// ****** LOAD APP AL CARICAMENTO ! *******
return saveConfigIndexDb()
}
if (cmd === 'write') {
if (globalStore) {
globalStore.connData.uploading_indexeddb = 1
}
return await storage.setdata(table, datakey)
}
if (cmd === 'updatefromIndexedDbToState') {
return await readfromIndexDbToState(table)
}
if (cmd === 'readall') {
if (globalStore) {
globalStore.connData.downloading_indexeddb = 1
console.log('getalldata table', table)
}
return await storage.getalldata(table)
}
if (cmd === 'count') {
let contatore = await storage.count(table)
// console.log('COUNT:', table, contatore)
return contatore
}
if (cmd === 'read') {
if (globalStore) {
globalStore.connData.downloading_indexeddb = 1
}
return await storage.getdata(table, id)
}
if (cmd === 'delete') {
if (globalStore) {
globalStore.connData.uploading_indexeddb = 1
}
return await storage.deletedata(table, id)
}
if (cmd === 'clearalldata') {
if (globalStore) {
globalStore.connData.uploading_indexeddb = 1
}
return await storage.clearalldata(table)
}
if (cmd === 'log') {
consolelogpao(table)
}
} catch (e) {
console.error('error INDEXdb', e)
}
return null
}