[APP-2044] Gate image blob size increase (#10178)
This commit is contained in:
@@ -10,6 +10,7 @@ export enum Features {
|
|||||||
ImportContactsSettingsDisable = 'import_contacts:settings:disable',
|
ImportContactsSettingsDisable = 'import_contacts:settings:disable',
|
||||||
LiveNowBetaDisable = 'live_now_beta:disable',
|
LiveNowBetaDisable = 'live_now_beta:disable',
|
||||||
ImageUploadsHighResolution = 'image_uploads:high_resolution',
|
ImageUploadsHighResolution = 'image_uploads:high_resolution',
|
||||||
|
ImageUploadsBlobSize2mbEnabled = 'image_uploads:blob_size_2mb:enabled',
|
||||||
GroupChatsEnable = 'group_chats:enable',
|
GroupChatsEnable = 'group_chats:enable',
|
||||||
DmsNewMessageComposerEnable = 'dms:new_message_composer:enable',
|
DmsNewMessageComposerEnable = 'dms:new_message_composer:enable',
|
||||||
|
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ interface PostOpts {
|
|||||||
|
|
||||||
type FeatureFlags = {
|
type FeatureFlags = {
|
||||||
highResolutionImages?: boolean
|
highResolutionImages?: boolean
|
||||||
|
increasedBlobSizeLimit?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function post(
|
export async function post(
|
||||||
@@ -320,6 +321,7 @@ async function resolveMedia(
|
|||||||
logger.debug(`Compressing image #${i}`)
|
logger.debug(`Compressing image #${i}`)
|
||||||
const {path, width, height, mime} = await compressImage(image, {
|
const {path, width, height, mime} = await compressImage(image, {
|
||||||
highResolution: featureFlags?.highResolutionImages,
|
highResolution: featureFlags?.highResolutionImages,
|
||||||
|
increasedBlobSizeLimit: featureFlags?.increasedBlobSizeLimit,
|
||||||
})
|
})
|
||||||
logger.debug(`Uploading image #${i}`)
|
logger.debug(`Uploading image #${i}`)
|
||||||
const res = await uploadBlob(agent, path, mime)
|
const res = await uploadBlob(agent, path, mime)
|
||||||
|
|||||||
@@ -204,6 +204,7 @@ export async function compressImage(
|
|||||||
img: ComposerImage,
|
img: ComposerImage,
|
||||||
options?: {
|
options?: {
|
||||||
highResolution?: boolean
|
highResolution?: boolean
|
||||||
|
increasedBlobSizeLimit?: boolean
|
||||||
},
|
},
|
||||||
): Promise<PickerImage> {
|
): Promise<PickerImage> {
|
||||||
const source = img.transformed || img.source
|
const source = img.transformed || img.source
|
||||||
@@ -211,6 +212,7 @@ export async function compressImage(
|
|||||||
|
|
||||||
let attempts = 0
|
let attempts = 0
|
||||||
let maxDimension = highResolution ? 4000 : POST_IMG_MAX.width
|
let maxDimension = highResolution ? 4000 : POST_IMG_MAX.width
|
||||||
|
let maxBytes = options?.increasedBlobSizeLimit ? 2000000 : POST_IMG_MAX.size
|
||||||
|
|
||||||
let minQualityPercentage = 0
|
let minQualityPercentage = 0
|
||||||
let maxQualityPercentage = 101 // exclusive
|
let maxQualityPercentage = 101 // exclusive
|
||||||
@@ -251,7 +253,7 @@ export async function compressImage(
|
|||||||
|
|
||||||
const base64 = res.base64
|
const base64 = res.base64
|
||||||
const size = base64 ? getDataUriSize(base64) : 0
|
const size = base64 ? getDataUriSize(base64) : 0
|
||||||
if (base64 && size <= POST_IMG_MAX.size) {
|
if (base64 && size <= maxBytes) {
|
||||||
minQualityPercentage = qualityPercentage
|
minQualityPercentage = qualityPercentage
|
||||||
newDataUri = {
|
newDataUri = {
|
||||||
path: await moveIfNecessary(res.uri),
|
path: await moveIfNecessary(res.uri),
|
||||||
|
|||||||
@@ -838,6 +838,9 @@ export const ComposePost = ({
|
|||||||
highResolutionImages: ax.features.enabled(
|
highResolutionImages: ax.features.enabled(
|
||||||
ax.features.ImageUploadsHighResolution,
|
ax.features.ImageUploadsHighResolution,
|
||||||
),
|
),
|
||||||
|
increasedBlobSizeLimit: ax.features.enabled(
|
||||||
|
ax.features.ImageUploadsBlobSize2mbEnabled,
|
||||||
|
),
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
).uris[0]
|
).uris[0]
|
||||||
|
|||||||
Reference in New Issue
Block a user