export interface StorageValue { id: string; } export class DataStorage { constructor(private storageKey: string) {} private readValues(): T[] { const objects = JSON.parse(window.localStorage.getItem(this.storageKey) || "[]"); if (!Array.isArray(objects)) { return Object.values(objects); } return objects; } private writeValues(values: T[]) { window.localStorage.setItem(this.storageKey, JSON.stringify(values)); } getAll(): T[] { return this.readValues(); } add(value: T): boolean { const values = this.readValues(); for (const v of values) { if (v.id == value.id) { return false; } } values.push(value); this.writeValues(values); return true; } remove(id: string) { const values = this.readValues(); for (let i = 0; i < values.length; i++) { if (values[i].id == id) { values.splice(i, 1); this.writeValues(values); return; } } } }