mirror of
https://github.com/OpenCut-app/OpenCut.git
synced 2026-07-13 21:52:53 +02:00
codebase overhaul (#697)
This commit is contained in:
@@ -0,0 +1 @@
|
||||
export * from "./update-project-settings";
|
||||
@@ -0,0 +1,46 @@
|
||||
import { Command } from "@/lib/commands/base-command";
|
||||
import { EditorCore } from "@/core";
|
||||
import type { TProject, TProjectSettings } from "@/types/project";
|
||||
|
||||
export class UpdateProjectSettingsCommand extends Command {
|
||||
private savedSettings: TProjectSettings | null = null;
|
||||
private savedUpdatedAt: Date | null = null;
|
||||
|
||||
constructor(private updates: Partial<TProjectSettings>) {
|
||||
super();
|
||||
}
|
||||
|
||||
execute(): void {
|
||||
const editor = EditorCore.getInstance();
|
||||
const activeProject = editor.project.getActive();
|
||||
if (!activeProject) return;
|
||||
|
||||
this.savedSettings = activeProject.settings;
|
||||
this.savedUpdatedAt = activeProject.metadata.updatedAt;
|
||||
|
||||
const updatedProject: TProject = {
|
||||
...activeProject,
|
||||
settings: { ...activeProject.settings, ...this.updates },
|
||||
metadata: { ...activeProject.metadata, updatedAt: new Date() },
|
||||
};
|
||||
|
||||
editor.project.setActiveProject({ project: updatedProject });
|
||||
editor.save.markDirty();
|
||||
}
|
||||
|
||||
undo(): void {
|
||||
if (!this.savedSettings || !this.savedUpdatedAt) return;
|
||||
const editor = EditorCore.getInstance();
|
||||
const activeProject = editor.project.getActive();
|
||||
if (!activeProject) return;
|
||||
|
||||
const updatedProject: TProject = {
|
||||
...activeProject,
|
||||
settings: this.savedSettings,
|
||||
metadata: { ...activeProject.metadata, updatedAt: this.savedUpdatedAt },
|
||||
};
|
||||
|
||||
editor.project.setActiveProject({ project: updatedProject });
|
||||
editor.save.markDirty();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user