bfb3eb7b75
Ported stroy-bot-report form saved before tests are written. Not reachable from the app until save/mode tests cover the delete-and- recreate algorithm. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
23 lines
1023 B
TypeScript
23 lines
1023 B
TypeScript
import { IPhotoItem } from './reportTypes';
|
|
import { REPORT_TEXTS } from './texts';
|
|
|
|
function readFile<T extends ArrayBuffer | string>(file: File, read: (reader: FileReader) => void): Promise<T> {
|
|
return new Promise<T>((resolve, reject) => {
|
|
const reader = new FileReader();
|
|
reader.onload = () => resolve(reader.result as T);
|
|
reader.onerror = () => reject(new Error(REPORT_TEXTS.photos.readError(file.name)));
|
|
read(reader);
|
|
});
|
|
}
|
|
|
|
/** Выбранные фото: содержимое для загрузки и data: URL для превью. Файлы читаются по очереди. */
|
|
export async function readPhotoFiles(files: File[]): Promise<IPhotoItem[]> {
|
|
const photos: IPhotoItem[] = [];
|
|
for (const file of files) {
|
|
const buffer = await readFile<ArrayBuffer>(file, (reader) => reader.readAsArrayBuffer(file));
|
|
const preview = await readFile<string>(file, (reader) => reader.readAsDataURL(file));
|
|
photos.push({ name: file.name, preview, buffer });
|
|
}
|
|
return photos;
|
|
}
|