| |
| |
| |
| |
|
|
| |
| |
| |
| |
| const processFile = async (file: File): Promise<void> => |
| new Promise((resolve, reject) => { |
| const reader = new FileReader(); |
|
|
| reader.onload = () => { |
| |
| resolve(); |
| }; |
|
|
| reader.onerror = () => { |
| reject(new Error(`Failed to read file: ${file.name}`)); |
| }; |
|
|
| reader.onabort = () => { |
| reject(new Error(`File reading was aborted: ${file.name}`)); |
| }; |
|
|
| |
| |
| reader.readAsArrayBuffer(file); |
| }); |
|
|
| |
| |
| |
| |
| const processImage = async (image: File): Promise<void> => |
| new Promise((resolve, reject) => { |
| const reader = new FileReader(); |
|
|
| reader.onload = () => { |
| |
| resolve(); |
| }; |
|
|
| reader.onerror = () => { |
| reject(new Error(`Failed to read image: ${image.name}`)); |
| }; |
|
|
| reader.onabort = () => { |
| reject(new Error(`Image reading was aborted: ${image.name}`)); |
| }; |
|
|
| |
| reader.readAsDataURL(image); |
| }); |
|
|
| |
| |
| |
| export const processFiles = async ( |
| files: File[], |
| ): Promise<{ successful: File[]; failed: { file: File; error: Error }[] }> => { |
| const results = await Promise.allSettled( |
| files.map(async (file) => { |
| await processFile(file); |
| return file; |
| }), |
| ); |
|
|
| const successful: File[] = []; |
| const failed: { file: File; error: Error }[] = []; |
|
|
| results.forEach((result, index) => { |
| if (result.status === "fulfilled") { |
| successful.push(result.value); |
| } else { |
| failed.push({ file: files[index], error: result.reason }); |
| } |
| }); |
|
|
| return { successful, failed }; |
| }; |
|
|
| |
| |
| |
| export const processImages = async ( |
| images: File[], |
| ): Promise<{ successful: File[]; failed: { file: File; error: Error }[] }> => { |
| const results = await Promise.allSettled( |
| images.map(async (image) => { |
| await processImage(image); |
| return image; |
| }), |
| ); |
|
|
| const successful: File[] = []; |
| const failed: { file: File; error: Error }[] = []; |
|
|
| results.forEach((result, index) => { |
| if (result.status === "fulfilled") { |
| successful.push(result.value); |
| } else { |
| failed.push({ file: images[index], error: result.reason }); |
| } |
| }); |
|
|
| return { successful, failed }; |
| }; |
|
|