From 91fbf8f691b0517c3c60f7d5cb77e12c726005a1 Mon Sep 17 00:00:00 2001 From: Vojtech Novak Date: Fri, 2 Jan 2026 20:25:31 +0000 Subject: [PATCH 1/2] fix: simplify coroutine cancelation to avoid hanging promises --- .../RNDocumentPickerModule.kt | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/packages/document-picker/android/src/main/java/com/reactnativedocumentpicker/RNDocumentPickerModule.kt b/packages/document-picker/android/src/main/java/com/reactnativedocumentpicker/RNDocumentPickerModule.kt index 75e60748..9d94627c 100644 --- a/packages/document-picker/android/src/main/java/com/reactnativedocumentpicker/RNDocumentPickerModule.kt +++ b/packages/document-picker/android/src/main/java/com/reactnativedocumentpicker/RNDocumentPickerModule.kt @@ -25,7 +25,7 @@ import kotlinx.coroutines.cancel import kotlinx.coroutines.launch class RNDocumentPickerModule(reactContext: ReactApplicationContext) : - NativeDocumentPickerSpec(reactContext), LifecycleEventListener { + NativeDocumentPickerSpec(reactContext) { private var currentPickOptions: PickOptions? = null private var currentUriOfFileBeingExported: Uri? = null private val promiseWrapper = PromiseWrapper(NAME) @@ -70,15 +70,12 @@ class RNDocumentPickerModule(reactContext: ReactApplicationContext) : } init { - reactContext.addActivityEventListener(activityEventListener) - reactContext.addLifecycleEventListener(this) + reactApplicationContext.addActivityEventListener(activityEventListener) } override fun invalidate() { fileCopyingCoroutine.cancel("module invalidated") reactApplicationContext.removeActivityEventListener(activityEventListener) - // TODO verify this should be done (and order) - // reactApplicationContext.removeLifecycleEventListener(this) super.invalidate() } @@ -330,12 +327,4 @@ class RNDocumentPickerModule(reactContext: ReactApplicationContext) : private const val E_OTHER_PRESENTING_ERROR = "OTHER_PRESENTING_ERROR" private const val E_INVALID_DATA_RETURNED = "INVALID_DATA_RETURNED" } - - override fun onHostResume() {} - - override fun onHostPause() {} - - override fun onHostDestroy() { - fileCopyingCoroutine.cancel("host destroyed") - } } From 3e3853b388f5f70e0900eac2d07414aa732a5dd2 Mon Sep 17 00:00:00 2001 From: Vojtech Novak Date: Fri, 2 Jan 2026 22:16:50 +0100 Subject: [PATCH 2/2] Create tasty-seas-hope.md --- .changeset/tasty-seas-hope.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/tasty-seas-hope.md diff --git a/.changeset/tasty-seas-hope.md b/.changeset/tasty-seas-hope.md new file mode 100644 index 00000000..1eb4504c --- /dev/null +++ b/.changeset/tasty-seas-hope.md @@ -0,0 +1,5 @@ +--- +"@react-native-documents/picker": patch +--- + +fix: simplify coroutine cancelation to avoid hanging promises on Android