70 lines
1.3 KiB
JavaScript
70 lines
1.3 KiB
JavaScript
// A test StorageManager class using LocalStorage
|
|
|
|
export default class LocalStorageManager extends SFStorageManager {
|
|
|
|
/* Simple Key/Value Storage */
|
|
|
|
async setItem(key, value, vaultKey) {
|
|
localStorage.setItem(key, value);
|
|
}
|
|
|
|
async getItem(key, vault) {
|
|
return localStorage.getItem(key)
|
|
}
|
|
|
|
async removeItem(key, vault) {
|
|
localStorage.removeItem(key);
|
|
}
|
|
|
|
async clear() {
|
|
// clear only simple key/values
|
|
localStorage.clear();
|
|
}
|
|
|
|
/*
|
|
Model Storage
|
|
*/
|
|
|
|
async getAllModels() {
|
|
var models = [];
|
|
for(var key in localStorage) {
|
|
if(key.startsWith("item-")) {
|
|
models.push(JSON.parse(localStorage[key]))
|
|
}
|
|
}
|
|
return models;
|
|
}
|
|
|
|
async saveModel(item) {
|
|
return this.saveModels([item]);
|
|
}
|
|
|
|
async saveModels(items) {
|
|
return Promise.all(items.map((item) => {
|
|
return this.setItem(`item-${item.uuid}`, JSON.stringify(item));
|
|
}))
|
|
}
|
|
|
|
async deleteModel(item,) {
|
|
return this.removeItem(`item-${item.uuid}`);
|
|
}
|
|
|
|
async clearAllModels() {
|
|
// clear only models
|
|
for(var key in localStorage) {
|
|
if(key.startsWith("item-")) {
|
|
this.removeItem(key);
|
|
}
|
|
}
|
|
}
|
|
|
|
/* General */
|
|
|
|
clearAllData() {
|
|
return Promise.all([
|
|
this.clear(),
|
|
this.clearAllModels()
|
|
])
|
|
}
|
|
}
|