From 0723623eafcfce9aba2c7e6b4a9343b6e38dacf1 Mon Sep 17 00:00:00 2001 From: DevloperAmanSingh Date: Wed, 25 Jun 2025 21:41:23 +0530 Subject: feat: add progress callback to media file processing function --- apps/web/src/lib/media-processing.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'apps/web/src/lib') diff --git a/apps/web/src/lib/media-processing.ts b/apps/web/src/lib/media-processing.ts index d241f411..f0f80fe4 100644 --- a/apps/web/src/lib/media-processing.ts +++ b/apps/web/src/lib/media-processing.ts @@ -11,11 +11,15 @@ import { export interface ProcessedMediaItem extends Omit {} export async function processMediaFiles( - files: FileList | File[] + files: FileList | File[], + onProgress?: (progress: number) => void ): Promise { const fileArray = Array.from(files); const processedItems: ProcessedMediaItem[] = []; + const total = fileArray.length; + let completed = 0; + for (const file of fileArray) { const fileType = getFileType(file); @@ -57,6 +61,12 @@ export async function processMediaFiles( duration, aspectRatio, }); + + completed += 1; + if (onProgress) { + const percent = Math.round((completed / total) * 100); + onProgress(percent); + } } catch (error) { console.error("Error processing file:", file.name, error); toast.error(`Failed to process ${file.name}`); -- cgit v1.3.1 From 181d3fca06b49ff2f1252bed387af3f5817bb406 Mon Sep 17 00:00:00 2001 From: DevloperAmanSingh Date: Wed, 25 Jun 2025 21:50:12 +0530 Subject: fix: improve UI responsiveness during media file processing --- apps/web/src/lib/media-processing.ts | 3 +++ 1 file changed, 3 insertions(+) (limited to 'apps/web/src/lib') diff --git a/apps/web/src/lib/media-processing.ts b/apps/web/src/lib/media-processing.ts index f0f80fe4..daf22b34 100644 --- a/apps/web/src/lib/media-processing.ts +++ b/apps/web/src/lib/media-processing.ts @@ -62,6 +62,9 @@ export async function processMediaFiles( aspectRatio, }); + // Yield back to the event loop to keep the UI responsive + await new Promise((resolve) => setTimeout(resolve, 0)); + completed += 1; if (onProgress) { const percent = Math.round((completed / total) * 100); -- cgit v1.3.1