Let the Activity that created the result intent deserialize it.

This commit is contained in:
Benoit Marty 2022-02-14 17:07:52 +01:00
parent 6fd47594d4
commit ffd2a762af
2 changed files with 13 additions and 10 deletions

View file

@ -55,7 +55,6 @@ import im.vector.app.databinding.ActivityCallBinding
import im.vector.app.features.call.dialpad.CallDialPadBottomSheet import im.vector.app.features.call.dialpad.CallDialPadBottomSheet
import im.vector.app.features.call.dialpad.DialPadFragment import im.vector.app.features.call.dialpad.DialPadFragment
import im.vector.app.features.call.transfer.CallTransferActivity import im.vector.app.features.call.transfer.CallTransferActivity
import im.vector.app.features.call.transfer.CallTransferResult
import im.vector.app.features.call.utils.EglUtils import im.vector.app.features.call.utils.EglUtils
import im.vector.app.features.call.webrtc.WebRtcCall import im.vector.app.features.call.webrtc.WebRtcCall
import im.vector.app.features.call.webrtc.WebRtcCallManager import im.vector.app.features.call.webrtc.WebRtcCallManager
@ -525,22 +524,20 @@ class VectorCallActivity : VectorBaseActivity<ActivityCallBinding>(), CallContro
val callId = withState(callViewModel) { it.callId } val callId = withState(callViewModel) { it.callId }
navigator.openCallTransfer(this, callTransferActivityResultLauncher, callId) navigator.openCallTransfer(this, callTransferActivityResultLauncher, callId)
} }
is VectorCallViewEvents.FailToTransfer -> showSnackbar(getString(R.string.call_transfer_failure)) is VectorCallViewEvents.FailToTransfer -> showSnackbar(getString(R.string.call_transfer_failure))
null -> { null -> {
} }
} }
} }
private val callTransferActivityResultLauncher = registerStartForActivityResult { activityResult -> private val callTransferActivityResultLauncher = registerStartForActivityResult { activityResult ->
when (activityResult.resultCode) { when (activityResult.resultCode) {
Activity.RESULT_CANCELED -> { Activity.RESULT_CANCELED -> {
callViewModel.handle(VectorCallViewActions.CallTransferSelectionCancelled) callViewModel.handle(VectorCallViewActions.CallTransferSelectionCancelled)
} }
Activity.RESULT_OK -> { Activity.RESULT_OK -> {
activityResult.data?.extras?.getParcelable<CallTransferResult>(CallTransferActivity.EXTRA_TRANSFER_RESULT)?.also { CallTransferActivity.getCallTransferResult(activityResult.data)
callViewModel.handle(VectorCallViewActions.CallTransferSelectionResult(it)) ?.let { callViewModel.handle(VectorCallViewActions.CallTransferSelectionResult(it)) }
}
} }
} }
} }

View file

@ -26,6 +26,7 @@ import com.google.android.material.tabs.TabLayoutMediator
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import im.vector.app.R import im.vector.app.R
import im.vector.app.core.error.ErrorFormatter import im.vector.app.core.error.ErrorFormatter
import im.vector.app.core.extensions.exhaustive
import im.vector.app.core.platform.VectorBaseActivity import im.vector.app.core.platform.VectorBaseActivity
import im.vector.app.databinding.ActivityCallTransferBinding import im.vector.app.databinding.ActivityCallTransferBinding
import kotlinx.parcelize.Parcelize import kotlinx.parcelize.Parcelize
@ -55,8 +56,8 @@ class CallTransferActivity : VectorBaseActivity<ActivityCallTransferBinding>() {
callTransferViewModel.observeViewEvents { callTransferViewModel.observeViewEvents {
when (it) { when (it) {
is CallTransferViewEvents.Complete -> handleComplete() is CallTransferViewEvents.Complete -> handleComplete()
} }.exhaustive
} }
sectionsPagerAdapter = CallTransferPagerAdapter(this) sectionsPagerAdapter = CallTransferPagerAdapter(this)
@ -104,11 +105,16 @@ class CallTransferActivity : VectorBaseActivity<ActivityCallTransferBinding>() {
} }
companion object { companion object {
const val EXTRA_TRANSFER_RESULT = "EXTRA_TRANSFER_RESULT" private const val EXTRA_TRANSFER_RESULT = "EXTRA_TRANSFER_RESULT"
fun newIntent(context: Context, callId: String): Intent { fun newIntent(context: Context, callId: String): Intent {
return Intent(context, CallTransferActivity::class.java).also { return Intent(context, CallTransferActivity::class.java).also {
it.putExtra(Mavericks.KEY_ARG, CallTransferArgs(callId)) it.putExtra(Mavericks.KEY_ARG, CallTransferArgs(callId))
} }
} }
fun getCallTransferResult(intent: Intent?): CallTransferResult? {
return intent?.extras?.getParcelable(EXTRA_TRANSFER_RESULT)
}
} }
} }