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.
137 lines
3.9 KiB
TypeScript
Executable File
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
|
|
}
|