diff --git a/__tests__/lib/images.test.ts b/__tests__/lib/images.test.ts index 1b27b97da5..f0f948365c 100644 --- a/__tests__/lib/images.test.ts +++ b/__tests__/lib/images.test.ts @@ -91,7 +91,7 @@ describe('downloadAndResize', () => { } const resizedDimensionsOne = getResizedDimensions( initialDimensionsOne, - IMAGE_SIZE_CONFIG_2K_1MB, + IMAGE_SIZE_CONFIG_2K_1MB.maxDimension, ) const initialDimensionsTwo = { @@ -100,7 +100,7 @@ describe('downloadAndResize', () => { } const resizedDimensionsTwo = getResizedDimensions( initialDimensionsTwo, - IMAGE_SIZE_CONFIG_2K_1MB, + IMAGE_SIZE_CONFIG_2K_1MB.maxDimension, ) expect(resizedDimensionsOne).toEqual(initialDimensionsOne) @@ -114,7 +114,7 @@ describe('downloadAndResize', () => { } const resizedDimensionsOne = getResizedDimensions( initialDimensionsOne, - IMAGE_SIZE_CONFIG_2K_1MB, + IMAGE_SIZE_CONFIG_2K_1MB.maxDimension, ) const initialDimensionsTwo = { @@ -123,7 +123,7 @@ describe('downloadAndResize', () => { } const resizedDimensionsTwo = getResizedDimensions( initialDimensionsTwo, - IMAGE_SIZE_CONFIG_2K_1MB, + IMAGE_SIZE_CONFIG_2K_1MB.maxDimension, ) expect(resizedDimensionsOne).toEqual({ diff --git a/src/lib/api/resolve.ts b/src/lib/api/resolve.ts index 0ff53c3b70..ec466b3551 100644 --- a/src/lib/api/resolve.ts +++ b/src/lib/api/resolve.ts @@ -257,8 +257,7 @@ export async function imageToThumb( try { const img = await downloadAndResize({ uri: imageUri, - maxDimension: IMAGE_SIZE_CONFIG_2K_1MB.width, - maxSize: IMAGE_SIZE_CONFIG_2K_1MB.size, + ...IMAGE_SIZE_CONFIG_2K_1MB, timeout: 15e3, }) if (img) { diff --git a/src/lib/constants.ts b/src/lib/constants.ts index eade6f7e45..c77ce0cc94 100644 --- a/src/lib/constants.ts +++ b/src/lib/constants.ts @@ -97,15 +97,13 @@ export const STAGING_FEEDS = [ ] export const IMAGE_SIZE_CONFIG_POSTS = { - width: 4000, - height: 4000, - size: 2000000, + maxDimension: 4000, + maxSize: 2000000, } export const IMAGE_SIZE_CONFIG_2K_1MB = { - width: 2000, - height: 2000, - size: 1000000, + maxDimension: 2000, + maxSize: 1000000, } export const STAGING_LINK_META_PROXY = diff --git a/src/lib/media/manip.ts b/src/lib/media/manip.ts index f004405943..84ab65af92 100644 --- a/src/lib/media/manip.ts +++ b/src/lib/media/manip.ts @@ -24,14 +24,14 @@ import {convertCdnPreset, getResizedDimensions} from './util' export async function compressIfNeeded( img: PickerImage, - max: {width: number; size: number}, + {maxDimension, maxSize}: {maxDimension: number; maxSize: number}, ): Promise { - if (img.size < max.size) { + if (img.size < maxSize) { return img } const resizedImage = await doResize(normalizePath(img.path), { - maxDimension: max.width, - maxSize: max.size, + maxDimension, + maxSize, }) const finalImageMovedPath = await moveToPermanentPath( resizedImage.path, @@ -205,7 +205,7 @@ async function doResize( width: imageRes.width, height: imageRes.height, }, - {width: opts.maxDimension, height: opts.maxDimension}, + opts.maxDimension, ) let minQualityPercentage = 0 diff --git a/src/lib/media/manip.web.ts b/src/lib/media/manip.web.ts index 084bf74c33..94732687ef 100644 --- a/src/lib/media/manip.web.ts +++ b/src/lib/media/manip.web.ts @@ -9,14 +9,14 @@ import { export async function compressIfNeeded( img: PickerImage, - max: {width: number; size: number}, + {maxDimension, maxSize}: {maxDimension: number; maxSize: number}, ): Promise { - if (img.size < max.size) { + if (img.size < maxSize) { return img } return await doResize(img.path, { - maxDimension: max.width, - maxSize: max.size, + maxDimension, + maxSize, }) } @@ -83,10 +83,7 @@ async function doResize( opts: DoResizeOpts, ): Promise { const sourceDims = await getImageDim(dataUri) - const newDimensions = getResizedDimensions(sourceDims, { - width: opts.maxDimension, - height: opts.maxDimension, - }) + const newDimensions = getResizedDimensions(sourceDims, opts.maxDimension) let newDataUri diff --git a/src/lib/media/util.ts b/src/lib/media/util.ts index 05163171ca..8db418f045 100644 --- a/src/lib/media/util.ts +++ b/src/lib/media/util.ts @@ -7,15 +7,18 @@ export function getResizedDimensions( width: number height: number }, - max: {width: number; height: number}, + maxDimension: number, ) { - if (originalDims.width <= max.width && originalDims.height <= max.height) { + if ( + originalDims.width <= maxDimension && + originalDims.height <= maxDimension + ) { return originalDims } const ratio = Math.min( - max.width / originalDims.width, - max.height / originalDims.height, + maxDimension / originalDims.width, + maxDimension / originalDims.height, ) return { diff --git a/src/state/gallery.ts b/src/state/gallery.ts index 337604823e..bc8beb7360 100644 --- a/src/state/gallery.ts +++ b/src/state/gallery.ts @@ -203,15 +203,15 @@ export function resetImageManipulation( export async function compressImage( img: ComposerImage, - max: {width: number; size: number}, + {maxDimension, maxSize}: {maxDimension: number; maxSize: number}, ): Promise { const source = img.transformed || img.source let attempts = 0 - // Seeded from `max.width` but shrunk per attempt below, so keep the passed-in - // value pristine. - let currentDimension = max.width - const maxBytes = max.size + // Seeded from `maxDimension` but shrunk per attempt below, so keep the + // passed-in value pristine. + let currentDimension = maxDimension + const maxBytes = maxSize let minQualityPercentage = 0 let maxQualityPercentage = 101 // exclusive diff --git a/src/view/com/composer/photos/OpenCameraBtn.tsx b/src/view/com/composer/photos/OpenCameraBtn.tsx index f4d9eb1fcf..320a1b7d03 100644 --- a/src/view/com/composer/photos/OpenCameraBtn.tsx +++ b/src/view/com/composer/photos/OpenCameraBtn.tsx @@ -3,7 +3,6 @@ import * as MediaLibrary from 'expo-media-library' import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' -import {IMAGE_SIZE_CONFIG_POSTS} from '#/lib/constants' import {useCameraPermission} from '#/lib/hooks/usePermissions' import {openCamera} from '#/lib/media/picker' import {logger} from '#/logger' @@ -35,7 +34,7 @@ export function OpenCameraBtn({disabled, onAdd}: Props) { } const img = await openCamera({ - aspect: [IMAGE_SIZE_CONFIG_POSTS.width, IMAGE_SIZE_CONFIG_POSTS.height], + aspect: [1, 1], }) // If we don't have permissions it's fine, we just wont save it. The post itself will still have access to diff --git a/src/view/com/composer/text-input/TextInput.tsx b/src/view/com/composer/text-input/TextInput.tsx index 93153815c5..313f0becbf 100644 --- a/src/view/com/composer/text-input/TextInput.tsx +++ b/src/view/com/composer/text-input/TextInput.tsx @@ -93,8 +93,7 @@ export function TextInput({ if (isUriImage(feature.uri)) { const res = await downloadAndResize({ uri: feature.uri, - maxDimension: IMAGE_SIZE_CONFIG_POSTS.width, - maxSize: IMAGE_SIZE_CONFIG_POSTS.size, + ...IMAGE_SIZE_CONFIG_POSTS, timeout: 15e3, })