From 478defce6edfc0e4fc8ad2da466567aa7a13fc18 Mon Sep 17 00:00:00 2001 From: Hailey Date: Fri, 29 Dec 2023 21:42:18 -0800 Subject: [PATCH] patch expo-image-picker to support "browse" --- patches/expo-image-picker+14.7.1.patch | 64 ++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 patches/expo-image-picker+14.7.1.patch diff --git a/patches/expo-image-picker+14.7.1.patch b/patches/expo-image-picker+14.7.1.patch new file mode 100644 index 00000000..75fa6598 --- /dev/null +++ b/patches/expo-image-picker+14.7.1.patch @@ -0,0 +1,64 @@ +diff --git a/node_modules/expo-image-picker/android/src/main/java/expo/modules/imagepicker/contracts/ImageLibraryContract.kt b/node_modules/expo-image-picker/android/src/main/java/expo/modules/imagepicker/contracts/ImageLibraryContract.kt +index ff15c91..bc868d1 100644 +--- a/node_modules/expo-image-picker/android/src/main/java/expo/modules/imagepicker/contracts/ImageLibraryContract.kt ++++ b/node_modules/expo-image-picker/android/src/main/java/expo/modules/imagepicker/contracts/ImageLibraryContract.kt +@@ -26,30 +26,16 @@ import java.io.Serializable + * @see [androidx.activity.result.contract.ActivityResultContracts.GetMultipleContents] + */ + internal class ImageLibraryContract( +- private val appContextProvider: AppContextProvider ++ private val appContextProvider: AppContextProvider, + ) : AppContextActivityResultContract { + private val contentResolver: ContentResolver + get() = appContextProvider.appContext.reactContext?.contentResolver + ?: throw Exceptions.ReactContextLost() + + override fun createIntent(context: Context, input: ImageLibraryContractOptions): Intent { +- val request = PickVisualMediaRequest.Builder() +- .setMediaType( +- when (input.options.mediaTypes) { +- MediaTypes.VIDEOS -> { +- PickVisualMedia.VideoOnly +- } +- +- MediaTypes.IMAGES -> { +- PickVisualMedia.ImageOnly +- } +- +- else -> { +- PickVisualMedia.ImageAndVideo +- } +- } +- ) +- .build() ++ val intent = Intent(Intent.ACTION_GET_CONTENT) ++ .addCategory(Intent.CATEGORY_OPENABLE) ++ .setType("image/*") + + if (input.options.allowsMultipleSelection) { + val selectionLimit = input.options.selectionLimit +@@ -57,20 +43,20 @@ internal class ImageLibraryContract( + if (selectionLimit == 1) { + // If multiple selection is allowed but the limit is 1, we should ignore + // the multiple selection flag and just treat it as a single selection. +- return PickVisualMedia().createIntent(context, request) ++ intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, 1) + } + + if (selectionLimit > 1) { +- return PickMultipleVisualMedia(selectionLimit).createIntent(context, request) ++ intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, selectionLimit) + } + + // If the selection limit is 0, it is the same as unlimited selection. + if (selectionLimit == UNLIMITED_SELECTION) { +- return PickMultipleVisualMedia().createIntent(context, request) ++ intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true) + } + } + +- return PickVisualMedia().createIntent(context, request) ++ return intent + } + + override fun parseResult(input: ImageLibraryContractOptions, resultCode: Int, intent: Intent?) =