fix: project loading thing

This commit is contained in:
Maze Winther 2026-04-21 20:45:33 +02:00
parent 1582423dbf
commit 75eebf52bc
2 changed files with 43 additions and 17 deletions

View File

@ -43,6 +43,7 @@ export async function runStorageMigrations({
"projects", "projects",
1, 1,
); );
const projects = await projectsAdapter.getAll(); const projects = await projectsAdapter.getAll();
const orderedMigrations = [...migrations].sort((a, b) => a.from - b.from); const orderedMigrations = [...migrations].sort((a, b) => a.from - b.from);

View File

@ -113,11 +113,7 @@ class StorageService {
return isStorageQuotaExceededError({ error }); return isStorageQuotaExceededError({ error });
} }
private stripAudioBuffers({ private stripAudioBuffers({ tracks }: { tracks: SceneTracks }): SceneTracks {
tracks,
}: {
tracks: SceneTracks;
}): SceneTracks {
return { return {
...tracks, ...tracks,
audio: tracks.audio.map((track) => ({ audio: tracks.audio.map((track) => ({
@ -173,6 +169,19 @@ class StorageService {
if (!serializedProject) return null; if (!serializedProject) return null;
if (
typeof serializedProject !== "object" ||
serializedProject === null ||
typeof serializedProject.metadata !== "object" ||
serializedProject.metadata === null
) {
console.warn(
"[storage] Skipping malformed project entry (missing metadata):",
{ id, entry: serializedProject },
);
return null;
}
const scenes = const scenes =
serializedProject.scenes?.map((scene) => ({ serializedProject.scenes?.map((scene) => ({
id: scene.id, id: scene.id,
@ -225,18 +234,34 @@ class StorageService {
await this.ensureMigrations(); await this.ensureMigrations();
const serializedProjects = await this.projectsAdapter.getAll(); const serializedProjects = await this.projectsAdapter.getAll();
const metadata = serializedProjects.map((serializedProject) => ({ const metadata: TProjectMetadata[] = [];
id: serializedProject.metadata.id, for (const serializedProject of serializedProjects) {
name: serializedProject.metadata.name, if (
thumbnail: serializedProject.metadata.thumbnail, typeof serializedProject !== "object" ||
duration: serializedProject === null ||
serializedProject.metadata.duration ?? typeof serializedProject.metadata !== "object" ||
getProjectDurationFromScenes({ serializedProject.metadata === null
scenes: (serializedProject.scenes ?? []) as unknown as TScene[], ) {
}), console.warn(
createdAt: new Date(serializedProject.metadata.createdAt), "[storage] Skipping malformed project entry (missing metadata):",
updatedAt: new Date(serializedProject.metadata.updatedAt), serializedProject,
})); );
continue;
}
metadata.push({
id: serializedProject.metadata.id,
name: serializedProject.metadata.name,
thumbnail: serializedProject.metadata.thumbnail,
duration:
serializedProject.metadata.duration ??
getProjectDurationFromScenes({
scenes: (serializedProject.scenes ?? []) as unknown as TScene[],
}),
createdAt: new Date(serializedProject.metadata.createdAt),
updatedAt: new Date(serializedProject.metadata.updatedAt),
});
}
return metadata.sort( return metadata.sort(
(a, b) => b.updatedAt.getTime() - a.updatedAt.getTime(), (a, b) => b.updatedAt.getTime() - a.updatedAt.getTime(),