vn-native-local-cloud
Version:
local cloud library for vn native
82 lines • 2.44 kB
text/typescript
export class LocalCloud {
public dataKey;
constructor(){
this.dataKey = "@vn-native-data-key";
}
/**
*
* @param {*} key => key of data
* @param {*} value => vvalue of data , only string
*/
setItem(key,value){
return new Promise((resolve,reject) => {
this.add_key_to_data_key(key).then((data) => {
localStorage.setItem(key,value);
return resolve("Set new data successfully")
}).catch((err) => {
return reject("set new data filed, please try again");
});
});
}
/**
*
* @param {*} key => key of data
*/
getItem(key){
return new Promise((resolve,reject) => {
let data = localStorage.getItem(key);
if(data) {
return resolve(data);
}
return reject("key is not exists");
});
}
/**
*
* @param {*} key => key of data
*/
removeItem(keyRemove){
let listKey = localStorage.getItem(this.dataKey);
if(listKey == '') {
localStorage.removeItem(keyRemove);
} else {
let newList = [];
let dataLocal = JSON.parse(listKey);
let i =0;
dataLocal.forEach(element => {
if(element != keyRemove) {
newList[i++] = element;
}
});
localStorage.removeItem(this.dataKey);
localStorage.removeItem(keyRemove);
localStorage.setItem(this.dataKey,JSON.stringify(newList));
}
}
/**
* return all key use on cloud
*/
getAllData(){
return new Promise((resolve,reject) => {
return resolve(localStorage.getItem(this.dataKey));
});
}
/**
* Add key to cloud for manager data
*/
add_key_to_data_key(key){
return new Promise((resolve,reject) => {
let list = localStorage.getItem(this.dataKey);
if(list != '' && list ) {
let dataSet = JSON.parse(list);
dataSet = dataSet.concat(key);
return resolve(dataSet);
} else {
let dataSet = [key];
let _dataSet = JSON.stringify(dataSet);
localStorage.setItem(this.dataKey,_dataSet);
return resolve(dataSet);
}
})
}
}