fix: project loading thing
This commit is contained in:
parent
1582423dbf
commit
75eebf52bc
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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(),
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue