Continue migrating BugReport/Rageshake/Crash screens

This commit is contained in:
ganfra 2023-01-10 21:18:16 +01:00
parent c299ab4031
commit e56ba5e315
21 changed files with 366 additions and 80 deletions

View file

@ -14,6 +14,7 @@ import kotlinx.parcelize.Parcelize
class PreferencesFlowNode(
buildContext: BuildContext,
private val onOpenBugReport: () -> Unit,
private val backstack: BackStack<NavTarget> = BackStack(
initialElement = NavTarget.Root,
savedStateMap = buildContext.savedStateMap,
@ -23,6 +24,12 @@ class PreferencesFlowNode(
buildContext = buildContext
) {
private val preferencesRootNodeCallback = object : PreferencesRootNode.Callback {
override fun onOpenBugReport() {
onOpenBugReport.invoke()
}
}
sealed interface NavTarget : Parcelable {
@Parcelize
object Root : NavTarget
@ -30,7 +37,7 @@ class PreferencesFlowNode(
override fun resolve(navTarget: NavTarget, buildContext: BuildContext): Node {
return when (navTarget) {
NavTarget.Root -> createNode<PreferencesRootNode>(buildContext)
NavTarget.Root -> createNode<PreferencesRootNode>(buildContext, plugins = listOf(preferencesRootNodeCallback))
}
}

View file

@ -7,6 +7,7 @@ import androidx.compose.ui.Modifier
import com.bumble.appyx.core.modality.BuildContext
import com.bumble.appyx.core.node.Node
import com.bumble.appyx.core.plugin.Plugin
import com.bumble.appyx.core.plugin.plugins
import dagger.assisted.Assisted
import dagger.assisted.AssistedInject
import io.element.android.x.anvilannotations.ContributesNode
@ -20,6 +21,10 @@ class PreferencesRootNode @AssistedInject constructor(
private val presenter: PreferencesRootPresenter,
) : Node(buildContext, plugins = plugins) {
public interface Callback : Plugin {
fun onOpenBugReport()
}
private val presenterConnector = presenterConnector(presenter)
private fun onLogoutClicked() {
@ -34,6 +39,10 @@ class PreferencesRootNode @AssistedInject constructor(
presenterConnector.emitEvent(PreferencesRootEvents.SetRageshakeSensitivity(sensitivity))
}
private fun onOpenBugReport() {
plugins<Callback>().forEach { it.onOpenBugReport() }
}
@Composable
override fun View(modifier: Modifier) {
val state by presenterConnector.stateFlow.collectAsState()
@ -42,7 +51,8 @@ class PreferencesRootNode @AssistedInject constructor(
onLogoutClicked = this::onLogoutClicked,
onBackPressed = this::navigateUp,
onRageshakeEnabledChanged = this::onRageshakeEnabledChanged,
onRageshakeSensitivityChanged = this::onRageshakeSensitivityChanged
onRageshakeSensitivityChanged = this::onRageshakeSensitivityChanged,
onOpenRageShake = this::onOpenBugReport
)
}
}