Replaces try catch back handling with check for backstack root

This commit is contained in:
ericdecanini 2022-08-23 10:36:52 +02:00
parent ace2c672ed
commit d7daca9150
1 changed files with 7 additions and 27 deletions

View File

@ -24,7 +24,6 @@ import android.view.MenuItem
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.fragment.app.Fragment
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.airbnb.mvrx.activityViewModel import com.airbnb.mvrx.activityViewModel
import com.airbnb.mvrx.fragmentViewModel import com.airbnb.mvrx.fragmentViewModel
@ -180,23 +179,11 @@ class NewHomeDetailFragment @Inject constructor(
} }
} }
private fun navigateBack() {
val previousSpaceId = spaceStateHandler.getSpaceBackstack().removeLastOrNull()
val parentSpaceId = spaceStateHandler.getCurrentSpace()?.flattenParentIds?.lastOrNull()
setCurrentSpace(previousSpaceId ?: parentSpaceId)
}
private fun setCurrentSpace(spaceId: String?) { private fun setCurrentSpace(spaceId: String?) {
spaceStateHandler.setCurrentSpace(spaceId, isForwardNavigation = false) spaceStateHandler.setCurrentSpace(spaceId, isForwardNavigation = false)
sharedActionViewModel.post(HomeActivitySharedAction.OnCloseSpace) sharedActionViewModel.post(HomeActivitySharedAction.OnCloseSpace)
} }
private fun handleCallStarted() {
dismissLoadingDialog()
val fragmentTag = HomeTab.DialPad.toFragmentTag()
(childFragmentManager.findFragmentByTag(fragmentTag) as? DialPadFragment)?.clear()
}
override fun onDestroyView() { override fun onDestroyView() {
currentCallsViewPresenter.unBind() currentCallsViewPresenter.unBind()
super.onDestroyView() super.onDestroyView()
@ -454,20 +441,13 @@ class NewHomeDetailFragment @Inject constructor(
} }
} }
private fun DialPadFragment.applyCallback(): DialPadFragment { override fun onBackPressed(toolbarButton: Boolean) = if (spaceStateHandler.isRoot()) {
callback = object : DialPadFragment.Callback { false
override fun onOkClicked(formatted: String?, raw: String?) { } else {
if (raw.isNullOrEmpty()) return val lastSpace = spaceStateHandler.popSpaceBackstack()
viewModel.handle(HomeDetailAction.StartCallWithPhoneNumber(raw)) spaceStateHandler.setCurrentSpace(lastSpace, isForwardNavigation = false)
} true
}
return this
} }
override fun onBackPressed(toolbarButton: Boolean) = if (spaceStateHandler.getCurrentSpace() != null) { private fun SpaceStateHandler.isRoot() = getSpaceBackstack().isEmpty()
navigateBack()
true
} catch (e: NoSuchElementException) {
false
}
} }