From 16670f99c5a4826fe0c14f00c9d0b1db023396c6 Mon Sep 17 00:00:00 2001 From: PatilParas05 Date: Tue, 28 Apr 2026 17:27:05 +0530 Subject: [PATCH] Fix: Prevent premature finish() from canceling async location removal - Moved setResult() and finish() calls into subscribe() success callback - Added error handling for coordinate edit failures - Ensures async operation completes before activity closes - Fixes issue #6872 --- .../locationpicker/LocationPickerActivity.kt | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/locationpicker/LocationPickerActivity.kt b/app/src/main/java/fr/free/nrw/commons/locationpicker/LocationPickerActivity.kt index 08dee587b36..ce67316d92f 100644 --- a/app/src/main/java/fr/free/nrw/commons/locationpicker/LocationPickerActivity.kt +++ b/app/src/main/java/fr/free/nrw/commons/locationpicker/LocationPickerActivity.kt @@ -405,16 +405,23 @@ class LocationPickerActivity : BaseActivity(), LocationPermissionCallback { ) ?.subscribeOn(Schedulers.io()) ?.observeOn(AndroidSchedulers.mainThread()) - ?.subscribe { _ -> - Timber.d("Coordinates removed from the image") - }?.let { it1 -> - compositeDisposable.add( - it1 - ) + ?.subscribe( + { _ -> + Timber.d("Coordinates removed from the image") + // Finish AFTER removal is complete + setResult(RESULT_OK, Intent()) + finish() + }, + { error -> + Timber.e(error, "Failed to remove coordinates") + // Handle error gracefully + setResult(RESULT_CANCELED, Intent()) + finish() + } + )?.let { it1 -> + compositeDisposable.add(it1) } } - setResult(RESULT_OK, Intent()) - finish() } /**