amanpay / web /src /media /validate.ts
MHamdan's picture
CI deploy e9bfd26
004f460 verified
Raw
History Blame Contribute Delete
1.09 kB
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)
})
}