File size: 1,091 Bytes
004f460 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | import type { MessageKey } from '../i18n/en'
export const MAX_IMAGE_BYTES = 8 * 1024 * 1024 // matches backend AMANPAY_MAX_UPLOAD_MB default
export const MAX_AUDIO_BYTES = 8 * 1024 * 1024
/** Validate an uploaded image file. Returns an i18n error key or undefined. */
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
}
/** Read a File as a base64 data URI (what the biometric backend accepts). */
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)
})
}
|