diff --git a/src/app/api/load-generation/route.ts b/src/app/api/load-generation/route.ts index be151b5f..3c37e6ce 100644 --- a/src/app/api/load-generation/route.ts +++ b/src/app/api/load-generation/route.ts @@ -4,11 +4,14 @@ import * as path from "path"; import { logger } from "@/utils/logger"; // Supported file extensions -const SUPPORTED_EXTENSIONS = ['png', 'jpg', 'jpeg', 'webp', 'gif', 'mp4', 'webm', 'mov']; +const SUPPORTED_EXTENSIONS = ['png', 'jpg', 'jpeg', 'webp', 'gif', 'mp4', 'webm', 'mov', 'mp3', 'wav', 'ogg', 'flac', 'aac']; // Video extensions const VIDEO_EXTENSIONS = ['mp4', 'webm', 'mov']; +// Audio extensions +const AUDIO_EXTENSIONS = ['mp3', 'wav', 'ogg', 'flac', 'aac']; + // Extension to MIME type mapping const EXT_TO_MIME: Record = { png: 'image/png', @@ -19,6 +22,11 @@ const EXT_TO_MIME: Record = { mp4: 'video/mp4', webm: 'video/webm', mov: 'video/quicktime', + mp3: 'audio/mpeg', + wav: 'audio/wav', + ogg: 'audio/ogg', + flac: 'audio/flac', + aac: 'audio/aac', }; // POST: Load a generated image or video from the generations folder by ID @@ -108,7 +116,8 @@ export async function POST(request: NextRequest) { // Determine content type const isVideo = VIDEO_EXTENSIONS.includes(foundExtension); - const contentType = isVideo ? 'video' : 'image'; + const isAudio = AUDIO_EXTENSIONS.includes(foundExtension); + const contentType = isVideo ? 'video' : isAudio ? 'audio' : 'image'; logger.info('file.load', 'Generation loaded successfully', { filePath, @@ -125,6 +134,8 @@ export async function POST(request: NextRequest) { if (isVideo) { response.video = dataUrl; + } else if (isAudio) { + response.audio = dataUrl; } else { response.image = dataUrl; } diff --git a/src/utils/mediaStorage.ts b/src/utils/mediaStorage.ts index 17a3614d..2e29672d 100644 --- a/src/utils/mediaStorage.ts +++ b/src/utils/mediaStorage.ts @@ -627,8 +627,9 @@ async function saveVideoAndGetRef( throw new Error(`Failed to save video: ${result.error}`); } - savedMediaIds.set(hash, videoId); - return videoId; + const actualId = result.imageId || videoId; + savedMediaIds.set(hash, actualId); + return actualId; })(); if (!existingId) { @@ -693,8 +694,9 @@ async function saveAudioAndGetRef( throw new Error(`Failed to save audio: ${result.error}`); } - savedMediaIds.set(hash, audioId); - return audioId; + const actualId = result.imageId || audioId; + savedMediaIds.set(hash, actualId); + return actualId; })(); if (!existingId) { @@ -1054,7 +1056,9 @@ async function loadMediaById( return ""; // Return empty string to avoid breaking the workflow } - const mediaData = mediaType === "image" ? result.image : result.data; + const mediaData = mediaType === "image" ? result.image + : mediaType === "video" ? result.video + : result.audio; loadedMedia.set(mediaId, mediaData); return mediaData; }