export function readFileAsDataURL(input: File | FileSystemFileEntry): Promise { return new Promise((resolve, reject) => { let filePromise: Promise if (input instanceof File) { filePromise = Promise.resolve(input) } else { filePromise = new Promise((resolve, reject) => { input.file(resolve, reject) }) } filePromise .then((file) => { const reader = new FileReader() reader.onload = (): void => { if (typeof reader.result === 'string') { resolve(reader.result) } else { reject(new Error('Expected a string from FileReader.result')) } } reader.onerror = (): void => { reject(reader.error ?? new Error('Unknown FileReader error')) } reader.readAsDataURL(file) }) .catch((err) => reject(err)) }) }