diff options
Diffstat (limited to 'apps/web/src/core')
| -rw-r--r-- | apps/web/src/core/managers/media-manager.ts | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/apps/web/src/core/managers/media-manager.ts b/apps/web/src/core/managers/media-manager.ts index 739fd3fa..7764329f 100644 --- a/apps/web/src/core/managers/media-manager.ts +++ b/apps/web/src/core/managers/media-manager.ts @@ -51,6 +51,45 @@ export class MediaManager { } } + async renameMediaAsset({ + projectId, + id, + name, + }: { + projectId: string; + id: string; + name: string; + }): Promise<void> { + const asset = this.assets.find((asset) => asset.id === id); + if (!asset || asset.name === name) { + return; + } + + const previousName = asset.name; + const updatedAsset: MediaAsset = { ...asset, name }; + this.assets = this.assets.map((asset) => + asset.id === id ? updatedAsset : asset, + ); + this.notify(); + + try { + await storageService.saveMediaAsset({ + projectId, + mediaAsset: updatedAsset, + }); + } catch (error) { + console.error("Failed to rename media asset:", error); + this.assets = this.assets.map((asset) => + asset.id === id ? { ...asset, name: previousName } : asset, + ); + this.notify(); + toast.error("Failed to rename media asset", { + description: + error instanceof Error ? error.message : "Please try again", + }); + } + } + removeMediaAsset({ projectId, id }: { projectId: string; id: string }): void { this.removeMediaAssets({ projectId, ids: [id] }); } |
