tsbase
Version:
Base class libraries for TypeScript
57 lines • 1.85 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DomStoragePersister = void 0;
const Command_1 = require("../../../Patterns/CommandQuery/Command");
const DomStorageUndefined = 'DomStorageUndefined - Unable to use DomStoragePersister since, \"Storage\" is not defined';
/**
* Persists data using the html DomStorage apis (local and session)
*/
class DomStoragePersister {
constructor(key, storageType) {
this.key = key;
this.storageType = storageType;
new Command_1.Command(() => {
if (typeof (Storage) === 'undefined') {
throw new Error(DomStorageUndefined);
}
}).Execute();
}
Purge() {
if (this.storageType === 'session') {
window.sessionStorage.removeItem(this.key);
}
else {
window.localStorage.removeItem(this.key);
}
}
Retrieve() {
let storedData = this.getItemFromDomStorage(this.key);
storedData = JSON.parse(storedData);
return storedData ? storedData : [];
}
Persist(items) {
const stringifiedItems = JSON.stringify(items);
this.Purge();
this.saveItemToDomStorage(this.key, stringifiedItems);
}
saveItemToDomStorage(key, item) {
if (this.storageType === 'session') {
window.sessionStorage.setItem(key, item);
}
else {
window.localStorage.setItem(key, item);
}
}
getItemFromDomStorage(key) {
let item;
if (this.storageType === 'session') {
item = window.sessionStorage.getItem(key);
}
else {
item = window.localStorage.getItem(key);
}
return item;
}
}
exports.DomStoragePersister = DomStoragePersister;
//# sourceMappingURL=DomStoragePersister.js.map