diff --git a/src/lib/media/uriSize.ts b/src/lib/media/uriSize.ts new file mode 100644 index 0000000000..7ac2898180 --- /dev/null +++ b/src/lib/media/uriSize.ts @@ -0,0 +1,9 @@ +import {getInfoAsync} from 'expo-file-system/legacy' + +export async function getUriSize(uri: string): Promise { + const info = await getInfoAsync(uri) + if (!info.exists) { + throw new Error('Failed to read image size') + } + return info.size +} diff --git a/src/lib/media/uriSize.web.ts b/src/lib/media/uriSize.web.ts new file mode 100644 index 0000000000..47df9e5a76 --- /dev/null +++ b/src/lib/media/uriSize.web.ts @@ -0,0 +1,5 @@ +export async function getUriSize(uri: string): Promise { + const response = await fetch(uri) + const blob = await response.blob() + return blob.size +} diff --git a/src/screens/Onboarding/StepProfile/index.tsx b/src/screens/Onboarding/StepProfile/index.tsx index 988edd0910..9239f337d1 100644 --- a/src/screens/Onboarding/StepProfile/index.tsx +++ b/src/screens/Onboarding/StepProfile/index.tsx @@ -22,7 +22,7 @@ import {IMAGE_SIZE_CONFIG_2K_1MB} from '#/lib/constants' import {usePhotoLibraryPermission} from '#/lib/hooks/usePermissions' import {compressIfNeeded} from '#/lib/media/manip' import {openCropper} from '#/lib/media/picker' -import {getDataUriSize} from '#/lib/media/util' +import {getUriSize} from '#/lib/media/uriSize' import {useRequestNotificationsPermission} from '#/lib/notifications/notifications' import {isCancelledError} from '#/lib/strings/errors' import {logger} from '#/logger' @@ -133,7 +133,7 @@ export function StepProfile() { height: rendered.height, width: rendered.width, path: result.uri, - size: getDataUriSize(result.uri), + size: await getUriSize(result.uri), }, ] } catch {