mirror of
https://github.com/vector-im/element-android.git
synced 2024-11-16 02:05:06 +08:00
Replaces try catch back handling with check for backstack root
This commit is contained in:
parent
ace2c672ed
commit
d7daca9150
@ -24,7 +24,6 @@ import android.view.MenuItem
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.airbnb.mvrx.activityViewModel
|
||||
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?) {
|
||||
spaceStateHandler.setCurrentSpace(spaceId, isForwardNavigation = false)
|
||||
sharedActionViewModel.post(HomeActivitySharedAction.OnCloseSpace)
|
||||
}
|
||||
|
||||
private fun handleCallStarted() {
|
||||
dismissLoadingDialog()
|
||||
val fragmentTag = HomeTab.DialPad.toFragmentTag()
|
||||
(childFragmentManager.findFragmentByTag(fragmentTag) as? DialPadFragment)?.clear()
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
currentCallsViewPresenter.unBind()
|
||||
super.onDestroyView()
|
||||
@ -454,20 +441,13 @@ class NewHomeDetailFragment @Inject constructor(
|
||||
}
|
||||
}
|
||||
|
||||
private fun DialPadFragment.applyCallback(): DialPadFragment {
|
||||
callback = object : DialPadFragment.Callback {
|
||||
override fun onOkClicked(formatted: String?, raw: String?) {
|
||||
if (raw.isNullOrEmpty()) return
|
||||
viewModel.handle(HomeDetailAction.StartCallWithPhoneNumber(raw))
|
||||
}
|
||||
}
|
||||
return this
|
||||
override fun onBackPressed(toolbarButton: Boolean) = if (spaceStateHandler.isRoot()) {
|
||||
false
|
||||
} else {
|
||||
val lastSpace = spaceStateHandler.popSpaceBackstack()
|
||||
spaceStateHandler.setCurrentSpace(lastSpace, isForwardNavigation = false)
|
||||
true
|
||||
}
|
||||
|
||||
override fun onBackPressed(toolbarButton: Boolean) = if (spaceStateHandler.getCurrentSpace() != null) {
|
||||
navigateBack()
|
||||
true
|
||||
} catch (e: NoSuchElementException) {
|
||||
false
|
||||
}
|
||||
private fun SpaceStateHandler.isRoot() = getSpaceBackstack().isEmpty()
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user