wip
This commit is contained in:
parent
5c2842c995
commit
1d6ba99a36
8 changed files with 945 additions and 83 deletions
|
|
@ -1,3 +1,5 @@
|
|||
import { API } from 'api'
|
||||
|
||||
export class NodeStore {
|
||||
constructor() {
|
||||
if (!('indexedDB' in window)) {
|
||||
|
|
@ -6,7 +8,6 @@ export class NodeStore {
|
|||
|
||||
this.db = null
|
||||
}
|
||||
|
||||
async initializeDB() {
|
||||
return new Promise((resolve, reject) => {
|
||||
let req = indexedDB.open('notes', 2)
|
||||
|
|
@ -60,7 +61,7 @@ export class NodeStore {
|
|||
}
|
||||
|
||||
records.forEach(record => {
|
||||
let addReq = nodeStore.add(record)
|
||||
let addReq = nodeStore.put(record)
|
||||
addReq.onsuccess = (event) => {
|
||||
console.log('OK!', record.ID, record.Name)
|
||||
}
|
||||
|
|
@ -74,14 +75,42 @@ export class NodeStore {
|
|||
}
|
||||
})
|
||||
}
|
||||
async get(id) {
|
||||
return new Promise((resolve, reject) => {
|
||||
// Node is always returned from IndexedDB if existing there.
|
||||
// Otherwise an attempt to get it from backend is executed.
|
||||
const trx = this.db.transaction('nodes', 'readonly')
|
||||
const nodeStore = trx.objectStore('nodes')
|
||||
const getRequest = nodeStore.get(id)
|
||||
getRequest.onsuccess = (event) => {
|
||||
// Node found in IndexedDB and returned.
|
||||
if (event.target.result !== undefined) {
|
||||
resolve(event.target.result)
|
||||
return
|
||||
}
|
||||
|
||||
// Node not found and a request to the backend is made.
|
||||
API.query("POST", `/node/retrieve/${id}`, {})
|
||||
.then(res => {
|
||||
const trx = this.db.transaction('nodes', 'readwrite')
|
||||
const nodeStore = trx.objectStore('nodes')
|
||||
const putRequest = nodeStore.put(res.Node)
|
||||
putRequest.onsuccess = () => resolve(res.Node)
|
||||
putRequest.onerror = (event) => {
|
||||
reject(event.target.error)
|
||||
}
|
||||
})
|
||||
.catch(e => reject(e))
|
||||
}
|
||||
})
|
||||
}
|
||||
async getTreeNodes() {
|
||||
return new Promise((resolve, reject)=>{
|
||||
return new Promise((resolve, reject) => {
|
||||
let trx = this.db.transaction('nodes', 'readonly')
|
||||
let nodeStore = trx.objectStore('nodes')
|
||||
let req = nodeStore.getAll()
|
||||
req.onsuccess = (event)=>resolve(event.target.result)
|
||||
req.onerror = (event)=>reject(event.target.error)
|
||||
req.onsuccess = (event) => resolve(event.target.result)
|
||||
req.onerror = (event) => reject(event.target.error)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue