Files
stroy-bot-monorepo/src/webparts/stroyBot/pages/report/photoFiles.ts
T
Тимур Городецкий bfb3eb7b75 wip: add report form page (not wired yet)
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>
2026-10-16 09:48:06 +05:00

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;
}