35 lines
957 B
TypeScript
35 lines
957 B
TypeScript
import {Project} from "../models/project";
|
|
import { useState } from "react";
|
|
import { ProjectStorageKeyPrefix } from "../util/storage";
|
|
|
|
export function loadStoredProjects(): Project[] {
|
|
const projects: Project[] = [];
|
|
|
|
Object.keys(window.localStorage).forEach(key => {
|
|
if (key.startsWith(ProjectStorageKeyPrefix)) {
|
|
try {
|
|
const data = window.localStorage.getItem(key);
|
|
if (data) {
|
|
const project = JSON.parse(data);
|
|
projects.push(project);
|
|
}
|
|
} catch(err) {
|
|
console.error(err);
|
|
}
|
|
}
|
|
});
|
|
|
|
return projects
|
|
}
|
|
|
|
export function useStoredProjectList(): [Project[], () => void] {
|
|
const [ projects, setProjects ] = useState(() => {
|
|
return loadStoredProjects();
|
|
});
|
|
|
|
const refresh = () => {
|
|
setProjects(loadStoredProjects());
|
|
};
|
|
|
|
return [ projects, refresh];
|
|
} |