From c5e60ba006bdb81107007a45b4d36072200e123f Mon Sep 17 00:00:00 2001 From: dan Date: Sat, 14 Dec 2024 02:25:32 +0000 Subject: Fix posting images on web (#7105) * Fix uploadBlob to handle blob: URI * Patch expo-image-manipulator to support "compress" argument * Narrow down the fix --- patches/expo-image-manipulator+13.0.5.patch | 48 +++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 patches/expo-image-manipulator+13.0.5.patch (limited to 'patches') diff --git a/patches/expo-image-manipulator+13.0.5.patch b/patches/expo-image-manipulator+13.0.5.patch new file mode 100644 index 000000000..4ff1cc970 --- /dev/null +++ b/patches/expo-image-manipulator+13.0.5.patch @@ -0,0 +1,48 @@ +diff --git a/node_modules/expo-image-manipulator/src/ImageManipulator.ts b/node_modules/expo-image-manipulator/src/ImageManipulator.ts +index a80d9c8..babbb3b 100644 +--- a/node_modules/expo-image-manipulator/src/ImageManipulator.ts ++++ b/node_modules/expo-image-manipulator/src/ImageManipulator.ts +@@ -43,7 +43,7 @@ export async function manipulateAsync( + context.extent(action.extent); + } + } +- const image = await context.renderAsync(); ++ const image = await context.renderAsync(saveOptions.compress); + const result = await image.saveAsync({ format, ...rest }); + + // These shared objects will not be used anymore, so free up some memory. +diff --git a/node_modules/expo-image-manipulator/src/ImageManipulatorContext.ts b/node_modules/expo-image-manipulator/src/ImageManipulatorContext.ts +index 120d8d3..f8aa49c 100644 +--- a/node_modules/expo-image-manipulator/src/ImageManipulatorContext.ts ++++ b/node_modules/expo-image-manipulator/src/ImageManipulatorContext.ts +@@ -52,7 +52,7 @@ export declare class ImageManipulatorContext extends SharedObject { + /** + * Awaits for all manipulation tasks to finish and resolves with a reference to the resulted native image. + */ +- renderAsync(): Promise; ++ renderAsync(compress?: number): Promise; + } + + export default ExpoImageManipulator.Context as typeof ImageManipulatorContext; +diff --git a/node_modules/expo-image-manipulator/src/web/ImageManipulatorContext.web.ts b/node_modules/expo-image-manipulator/src/web/ImageManipulatorContext.web.ts +index 428848c..363a57a 100644 +--- a/node_modules/expo-image-manipulator/src/web/ImageManipulatorContext.web.ts ++++ b/node_modules/expo-image-manipulator/src/web/ImageManipulatorContext.web.ts +@@ -41,7 +41,7 @@ export default class ImageManipulatorContext extends SharedObject { + return this; + } + +- async renderAsync(): Promise { ++ async renderAsync(compress?: number): Promise { + const canvas = await this.currentTask; + + return new Promise((resolve) => { +@@ -49,7 +49,7 @@ export default class ImageManipulatorContext extends SharedObject { + const url = blob ? URL.createObjectURL(blob) : canvas.toDataURL(); + + resolve(new ImageManipulatorImageRef(url, canvas.width, canvas.height)); +- }); ++ }, typeof compress === 'number' ? 'image/jpeg' : undefined, compress); + }); + } + -- cgit 1.4.1