From 30e862bc26bb3f6120874c8debddd3e5b9d7c5a1 Mon Sep 17 00:00:00 2001 From: Samuel Newman Date: Tue, 14 Jul 2026 16:14:11 +0300 Subject: [PATCH] Allow up to 10 images in share intent (#11132) --- modules/Share-with-Bluesky/ShareViewController.swift | 12 ++++-------- .../ExpoReceiveAndroidIntentsModule.kt | 5 +++-- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/modules/Share-with-Bluesky/ShareViewController.swift b/modules/Share-with-Bluesky/ShareViewController.swift index 4eeab8876b..b31f671772 100644 --- a/modules/Share-with-Bluesky/ShareViewController.swift +++ b/modules/Share-with-Bluesky/ShareViewController.swift @@ -3,6 +3,7 @@ import AVKit let IMAGE_EXTENSIONS: [String] = ["png", "jpg", "jpeg", "gif", "heic"] let MOVIE_EXTENSIONS: [String] = ["mov", "mp4", "m4v"] +let MAX_IMAGES = 10 enum URLType: String, CaseIterable { case image @@ -71,17 +72,12 @@ class ShareViewController: UIViewController { } private func handleImages(items: [NSItemProvider]) async { - let firstFourItems: [NSItemProvider] - if items.count < 4 { - firstFourItems = items - } else { - firstFourItems = Array(items[0...3]) - } + let itemsToProcess = Array(items.prefix(MAX_IMAGES)) var valid = true var imageUris = "" - for (index, item) in firstFourItems.enumerated() { + for (index, item) in itemsToProcess.enumerated() { var imageUriInfo: String? do { @@ -100,7 +96,7 @@ class ShareViewController: UIViewController { if let imageUriInfo = imageUriInfo { imageUris.append(imageUriInfo) - if index < items.count - 1 { + if index < itemsToProcess.count - 1 { imageUris.append(",") } } else { diff --git a/modules/expo-receive-android-intents/android/src/main/java/xyz/blueskyweb/app/exporeceiveandroidintents/ExpoReceiveAndroidIntentsModule.kt b/modules/expo-receive-android-intents/android/src/main/java/xyz/blueskyweb/app/exporeceiveandroidintents/ExpoReceiveAndroidIntentsModule.kt index af7344216b..8b4784b04e 100644 --- a/modules/expo-receive-android-intents/android/src/main/java/xyz/blueskyweb/app/exporeceiveandroidintents/ExpoReceiveAndroidIntentsModule.kt +++ b/modules/expo-receive-android-intents/android/src/main/java/xyz/blueskyweb/app/exporeceiveandroidintents/ExpoReceiveAndroidIntentsModule.kt @@ -15,6 +15,7 @@ import java.io.FileOutputStream import java.net.URLEncoder private const val TAG = "ExpoReceiveAndroidIntents" +private const val MAX_IMAGES = 10 enum class AttachmentType { IMAGE, @@ -100,12 +101,12 @@ class ExpoReceiveAndroidIntentsModule : Module() { intent .getParcelableArrayListExtra(Intent.EXTRA_STREAM, Uri::class.java) ?.filterIsInstance() - ?.take(4) + ?.take(MAX_IMAGES) } else { intent .getParcelableArrayListExtra(Intent.EXTRA_STREAM) ?.filterIsInstance() - ?.take(4) + ?.take(MAX_IMAGES) } val text = intent.getStringExtra(Intent.EXTRA_TEXT)