@tomino/dynamic-form-semantic-ui
Version:
Semantic UI form renderer based on dynamic form generation
48 lines (40 loc) • 1.23 kB
text/typescript
import { IProject, IStorage } from './common_storage';
export class LocalStorage implements IStorage {
key: string;
constructor(key = 'CORPIX_PROJECTS') {
this.key = key;
}
listProjects(): Promise<IProject[]> {
let raw = localStorage.getItem(this.key);
if (raw) {
return Promise.resolve(JSON.parse(raw));
}
return Promise.resolve([]);
}
async loadProject(id?: string): Promise<IProject> {
let projects = await this.listProjects();
if (id == null) {
return (projects || [])[0];
}
return projects.find(p => p.id === id);
}
async deleteProject(id: string) {
let projects = await this.listProjects();
let index = projects.findIndex(p => p.id === id);
if (index >= 0) {
projects.splice(index, 1);
}
localStorage.setItem(this.key, JSON.stringify(projects));
}
async saveProject(project: IProject): Promise<void> {
let projects = await this.listProjects();
let index = projects.findIndex(p => p.id === project.id);
project.modified = Date.now();
if (index >= 0) {
projects.splice(index, 1, project);
} else {
projects.push(project);
}
localStorage.setItem(this.key, JSON.stringify(projects));
}
}