Files
LTX-DeskWEB/frontend/lib/project-storage-devtools.ts
T

62 lines
1.4 KiB
TypeScript

import {
deleteAllProjectEntries,
deleteProjectIdsEntry,
hasLegacyProjectsEntry,
readLegacyProjects,
readProjectsFromReferences,
writeLegacyProjects,
} from '../hooks/useProjectReferencesMigration'
export type RollbackProjectReferencesMigrationOptions = {
reload?: boolean
}
export type RollbackProjectReferencesMigrationResult =
| {
status: 'alreadyLegacy'
projectCount: number
}
| {
status: 'rolledBack'
projectCount: number
projectIds: string[]
}
function rollbackProjectReferencesMigration(
options: RollbackProjectReferencesMigrationOptions = {},
): RollbackProjectReferencesMigrationResult {
if (hasLegacyProjectsEntry()) {
const legacyProjects = readLegacyProjects()
if (options.reload) {
window.location.reload()
}
return {
status: 'alreadyLegacy',
projectCount: legacyProjects.length,
}
}
const projects = readProjectsFromReferences()
const restoredProjects = writeLegacyProjects(projects)
deleteProjectIdsEntry()
deleteAllProjectEntries()
if (options.reload) {
window.location.reload()
}
return {
status: 'rolledBack',
projectCount: restoredProjects.length,
projectIds: restoredProjects.map(project => project.id),
}
}
export function installProjectStorageDevtools(): void {
if (!import.meta.env.DEV) return
window.__ltxProjectStorageDebug = {
rollbackProjectReferencesMigration,
}
}