import type { IProject } from '@/modelTypes/IProject' type ProjectView = Record const DEFAULT_PROJECT_VIEW = 'project.project' as const /** * Save the current project view to local storage */ export function saveProjectView(projectId: IProject['id'], routeName: string) { if (routeName.includes('settings.')) { return } if (!projectId) { return } // We use local storage and not the store here to make it persistent across reloads. const savedProjectView = localStorage.getItem('projectView') let savedProjectViewJson: ProjectView | false = false if (savedProjectView !== null) { savedProjectViewJson = JSON.parse(savedProjectView) as ProjectView } let projectView: ProjectView = {} if (savedProjectViewJson) { projectView = savedProjectViewJson } projectView[projectId] = routeName localStorage.setItem('projectView', JSON.stringify(projectView)) } export const getProjectView = (projectId: IProject['id']) => { // Remove old stored settings const savedProjectView = localStorage.getItem('projectView') if (savedProjectView !== null && savedProjectView.startsWith('project.')) { localStorage.removeItem('projectView') } if (!savedProjectView) { return DEFAULT_PROJECT_VIEW } const savedProjectViewJson: ProjectView = JSON.parse(savedProjectView) if (!savedProjectViewJson[projectId]) { return DEFAULT_PROJECT_VIEW } return savedProjectViewJson[projectId] }