lavva.exalushome
Version:
Library implementing communication and abstraction layers for ExalusHome system
41 lines • 1.73 kB
JavaScript
import { DependencyContainer } from "../DependencyContainer";
import { Api } from "../Api";
export class LocalStorageService {
GetServiceName() {
return LocalStorageService.ServiceName;
}
GetResourceName(inContextOf, objectId) {
return `_exalus_${Api.WorksInContextOf}_${inContextOf}_${objectId}`;
}
Remove(inContextOf, objectId) {
localStorage.removeItem(this.GetResourceName(inContextOf, objectId));
}
DropStorage(inContextOf) {
const prefix = `_exalus_${Api.WorksInContextOf}_${inContextOf}`;
const keysToRemove = Object.keys(localStorage).filter(k => k.startsWith(prefix));
keysToRemove.forEach(k => {
var _a;
(_a = DependencyContainer.Log) === null || _a === void 0 ? void 0 : _a.Warning(LocalStorageService.ServiceName, `Clearing API cache for key: ${k}`);
localStorage.removeItem(k);
});
}
Save(inContextOf, objectId, data) {
localStorage.setItem(this.GetResourceName(inContextOf, objectId), JSON.stringify(data));
}
Read(inContextOf, objectId) {
var _a;
try {
let name = this.GetResourceName(inContextOf, objectId);
let obj = localStorage.getItem(name);
if (obj == null)
return null;
return JSON.parse(obj);
}
catch (ex) {
(_a = DependencyContainer.Log) === null || _a === void 0 ? void 0 : _a.Error(LocalStorageService.ServiceName, `Exception has occurred while reading ${this.GetResourceName(inContextOf, objectId)}`);
return null;
}
}
}
LocalStorageService.ServiceName = "LocalStorageService";
//# sourceMappingURL=LocalStorageService.js.map