diff --git a/app/src/org/commcare/navdrawer/BaseDrawerActivity.kt b/app/src/org/commcare/navdrawer/BaseDrawerActivity.kt index 3aff9cad37..571cc6f7a0 100644 --- a/app/src/org/commcare/navdrawer/BaseDrawerActivity.kt +++ b/app/src/org/commcare/navdrawer/BaseDrawerActivity.kt @@ -1,8 +1,11 @@ package org.commcare.navdrawer +import android.content.Intent import android.os.Bundle import android.view.MenuItem import android.view.View +import androidx.activity.result.ActivityResultLauncher +import androidx.activity.result.contract.ActivityResultContracts import org.commcare.activities.CommCareActivity import org.commcare.connect.ConnectActivityCompleteListener import org.commcare.connect.ConnectNavHelper.unlockAndGoToConnectJobsList @@ -17,9 +20,14 @@ import org.javarosa.core.services.Logger abstract class BaseDrawerActivity : CommCareActivity() { private var drawerController: BaseDrawerController? = null + private lateinit var takePhotoLauncher: ActivityResultLauncher override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + takePhotoLauncher = + registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result -> + drawerController?.handlePhotoResult(result) + } checkForDrawerSetUp() if (drawerController != null) { NotificationBroadcastHelper.registerForNotifications(this, this) { @@ -58,6 +66,7 @@ abstract class BaseDrawerActivity : CommCareActivity() { this, drawerRefs, shouldHighlightSeatedApp(), + takePhotoLauncher, ) { navItemType: NavItemType, recordId: String? -> handleDrawerItemClick(navItemType, recordId) } diff --git a/app/src/org/commcare/navdrawer/BaseDrawerController.kt b/app/src/org/commcare/navdrawer/BaseDrawerController.kt index f1959cae65..1b1ebc226f 100644 --- a/app/src/org/commcare/navdrawer/BaseDrawerController.kt +++ b/app/src/org/commcare/navdrawer/BaseDrawerController.kt @@ -6,8 +6,8 @@ import android.graphics.Color import android.view.MenuItem import android.view.View import android.widget.Toast +import androidx.activity.result.ActivityResult import androidx.activity.result.ActivityResultLauncher -import androidx.activity.result.contract.ActivityResultContracts import androidx.appcompat.app.ActionBarDrawerToggle import androidx.appcompat.app.AppCompatActivity import androidx.core.view.GravityCompat @@ -42,11 +42,11 @@ class BaseDrawerController( private val activity: CommCareActivity<*>, private val binding: DrawerViewRefs, private val highlightSeatedApp: Boolean, + private val takePhotoLauncher: ActivityResultLauncher, private val onItemClicked: (NavItemType, String?) -> Unit, ) { private lateinit var drawerToggle: ActionBarDrawerToggle private lateinit var navDrawerAdapter: NavDrawerAdapter - private lateinit var takePhotoLauncher: ActivityResultLauncher private var hasRefreshed = false private var showingError = false var lastPhotoUploadFailed: Boolean = false @@ -63,7 +63,6 @@ class BaseDrawerController( fun setupDrawer() { setupActionBarDrawerToggle() initializeAdapter() - initTakePhotoLauncher() setupListeners() setupViews() refreshDrawerContent() @@ -337,19 +336,14 @@ class BaseDrawerController( fun handleOptionsItem(item: MenuItem): Boolean = drawerToggle.onOptionsItemSelected(item) - private fun initTakePhotoLauncher() { - takePhotoLauncher = - activity.registerForActivityResult( - ActivityResultContracts.StartActivityForResult(), - ) { result -> - if (result.resultCode == RESULT_OK) { - result.data - ?.getStringExtra(MicroImageActivity.MICRO_IMAGE_BASE_64_RESULT_KEY) - ?.let { photoBase64 -> - uploadUserPhoto(photoBase64) - } + fun handlePhotoResult(result: ActivityResult) { + if (result.resultCode == RESULT_OK) { + result.data + ?.getStringExtra(MicroImageActivity.MICRO_IMAGE_BASE_64_RESULT_KEY) + ?.let { photoBase64 -> + uploadUserPhoto(photoBase64) } - } + } } private fun launchCameraForPhotoEdit() {