Open app settings from the permission dialog.

This commit is contained in:
Benoit Marty 2023-09-21 11:37:59 +02:00
parent f3456cafa7
commit dcb1677bf1
7 changed files with 38 additions and 8 deletions

View file

@ -18,12 +18,14 @@ package io.element.android.features.preferences.impl.user.editprofile
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import com.bumble.appyx.core.modality.BuildContext
import com.bumble.appyx.core.node.Node
import com.bumble.appyx.core.plugin.Plugin
import dagger.assisted.Assisted
import dagger.assisted.AssistedInject
import io.element.android.anvilannotations.ContributesNode
import io.element.android.libraries.androidutils.system.openAppSettingsPage
import io.element.android.libraries.architecture.NodeInputs
import io.element.android.libraries.architecture.inputs
import io.element.android.libraries.di.SessionScope
@ -46,10 +48,12 @@ class EditUserProfileNode @AssistedInject constructor(
@Composable
override fun View(modifier: Modifier) {
val state = presenter.present()
val context = LocalContext.current
EditUserProfileView(
state = state,
onBackPressed = ::navigateUp,
onProfileEdited = ::navigateUp,
onOpenSystemSettings = { context.openAppSettingsPage() },
modifier = modifier
)
}

View file

@ -69,6 +69,7 @@ fun EditUserProfileView(
state: EditUserProfileState,
onBackPressed: () -> Unit,
onProfileEdited: () -> Unit,
onOpenSystemSettings: () -> Unit,
modifier: Modifier = Modifier,
) {
val coroutineScope = rememberCoroutineScope()
@ -169,7 +170,10 @@ fun EditUserProfileView(
else -> Unit
}
}
PermissionsView(state = state.cameraPermissionState)
PermissionsView(
state = state.cameraPermissionState,
onOpenSystemSettings = onOpenSystemSettings,
)
}
private fun Modifier.clearFocusOnTap(focusManager: FocusManager): Modifier =
@ -186,6 +190,7 @@ internal fun EditUserProfileViewPreview(@PreviewParameter(EditUserProfileStatePr
EditUserProfileView(
onBackPressed = {},
onProfileEdited = {},
onOpenSystemSettings = {},
state = state,
)
}