| import type { MessageKey } from '../i18n/en' |
|
|
| export const MAX_IMAGE_BYTES = 8 * 1024 * 1024 |
| export const MAX_AUDIO_BYTES = 8 * 1024 * 1024 |
|
|
| |
| export function validateImageFile(file: File): MessageKey | undefined { |
| if (!file.type.startsWith('image/')) return 'bio.err.imageType' |
| if (file.size > MAX_IMAGE_BYTES) return 'bio.err.tooLarge' |
| return undefined |
| } |
|
|
| export function validateAudioFile(file: File): MessageKey | undefined { |
| if (!file.type.startsWith('audio/')) return 'bio.err.audioType' |
| if (file.size > MAX_AUDIO_BYTES) return 'bio.err.tooLarge' |
| return undefined |
| } |
|
|
| |
| export function fileToDataUri(file: File): Promise<string> { |
| return new Promise((resolve, reject) => { |
| const reader = new FileReader() |
| reader.onerror = () => reject(new Error('read failed')) |
| reader.onloadend = () => resolve(String(reader.result)) |
| reader.readAsDataURL(file) |
| }) |
| } |
|
|