Merge branch 'develop' into feature/fga/role_and_permissions_rework
This commit is contained in:
commit
c08f4a183c
11 changed files with 61 additions and 15 deletions
|
|
@ -35,6 +35,7 @@ import io.element.android.compound.tokens.generated.CompoundIcons
|
||||||
import io.element.android.features.poll.impl.R
|
import io.element.android.features.poll.impl.R
|
||||||
import io.element.android.libraries.designsystem.components.button.BackButton
|
import io.element.android.libraries.designsystem.components.button.BackButton
|
||||||
import io.element.android.libraries.designsystem.components.dialogs.ConfirmationDialog
|
import io.element.android.libraries.designsystem.components.dialogs.ConfirmationDialog
|
||||||
|
import io.element.android.libraries.designsystem.components.dialogs.SaveChangesDialog
|
||||||
import io.element.android.libraries.designsystem.components.list.ListItemContent
|
import io.element.android.libraries.designsystem.components.list.ListItemContent
|
||||||
import io.element.android.libraries.designsystem.preview.ElementPreview
|
import io.element.android.libraries.designsystem.preview.ElementPreview
|
||||||
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
|
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
|
||||||
|
|
@ -63,8 +64,7 @@ fun CreatePollView(
|
||||||
val navBack = { state.eventSink(CreatePollEvents.ConfirmNavBack) }
|
val navBack = { state.eventSink(CreatePollEvents.ConfirmNavBack) }
|
||||||
BackHandler(onBack = navBack)
|
BackHandler(onBack = navBack)
|
||||||
if (state.showBackConfirmation) {
|
if (state.showBackConfirmation) {
|
||||||
ConfirmationDialog(
|
SaveChangesDialog(
|
||||||
content = stringResource(id = R.string.screen_create_poll_cancel_confirmation_content_android),
|
|
||||||
onSubmitClick = { state.eventSink(CreatePollEvents.NavBack) },
|
onSubmitClick = { state.eventSink(CreatePollEvents.NavBack) },
|
||||||
onDismiss = { state.eventSink(CreatePollEvents.HideConfirmation) }
|
onDismiss = { state.eventSink(CreatePollEvents.HideConfirmation) }
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,7 @@ import io.element.android.libraries.designsystem.components.avatar.AvatarSize
|
||||||
import io.element.android.libraries.designsystem.components.avatar.AvatarType
|
import io.element.android.libraries.designsystem.components.avatar.AvatarType
|
||||||
import io.element.android.libraries.designsystem.components.button.BackButton
|
import io.element.android.libraries.designsystem.components.button.BackButton
|
||||||
import io.element.android.libraries.designsystem.components.dialogs.ConfirmationDialog
|
import io.element.android.libraries.designsystem.components.dialogs.ConfirmationDialog
|
||||||
|
import io.element.android.libraries.designsystem.components.dialogs.SaveChangesDialog
|
||||||
import io.element.android.libraries.designsystem.preview.ElementPreview
|
import io.element.android.libraries.designsystem.preview.ElementPreview
|
||||||
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
|
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
|
||||||
import io.element.android.libraries.designsystem.theme.components.Checkbox
|
import io.element.android.libraries.designsystem.theme.components.Checkbox
|
||||||
|
|
@ -169,9 +170,7 @@ fun ChangeRolesView(
|
||||||
confirmationDialog = { confirming ->
|
confirmationDialog = { confirming ->
|
||||||
when (confirming) {
|
when (confirming) {
|
||||||
is AsyncAction.ConfirmingCancellation -> {
|
is AsyncAction.ConfirmingCancellation -> {
|
||||||
ConfirmationDialog(
|
SaveChangesDialog(
|
||||||
title = stringResource(CommonStrings.dialog_unsaved_changes_title),
|
|
||||||
content = stringResource(CommonStrings.dialog_unsaved_changes_description_android),
|
|
||||||
onSubmitClick = { state.eventSink(ChangeRolesEvent.Exit) },
|
onSubmitClick = { state.eventSink(ChangeRolesEvent.Exit) },
|
||||||
onDismiss = { state.eventSink(ChangeRolesEvent.CloseDialog) }
|
onDismiss = { state.eventSink(ChangeRolesEvent.CloseDialog) }
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@ import io.element.android.libraries.designsystem.components.async.AsyncActionVie
|
||||||
import io.element.android.libraries.designsystem.components.avatar.AvatarSize
|
import io.element.android.libraries.designsystem.components.avatar.AvatarSize
|
||||||
import io.element.android.libraries.designsystem.components.avatar.AvatarType
|
import io.element.android.libraries.designsystem.components.avatar.AvatarType
|
||||||
import io.element.android.libraries.designsystem.components.button.BackButton
|
import io.element.android.libraries.designsystem.components.button.BackButton
|
||||||
import io.element.android.libraries.designsystem.components.dialogs.ConfirmationDialog
|
import io.element.android.libraries.designsystem.components.dialogs.SaveChangesDialog
|
||||||
import io.element.android.libraries.designsystem.modifiers.clearFocusOnTap
|
import io.element.android.libraries.designsystem.modifiers.clearFocusOnTap
|
||||||
import io.element.android.libraries.designsystem.preview.ElementPreview
|
import io.element.android.libraries.designsystem.preview.ElementPreview
|
||||||
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
|
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
|
||||||
|
|
@ -152,9 +152,7 @@ fun RoomDetailsEditView(
|
||||||
},
|
},
|
||||||
confirmationDialog = {
|
confirmationDialog = {
|
||||||
if (state.saveAction == AsyncAction.ConfirmingCancellation) {
|
if (state.saveAction == AsyncAction.ConfirmingCancellation) {
|
||||||
ConfirmationDialog(
|
SaveChangesDialog(
|
||||||
title = stringResource(CommonStrings.dialog_unsaved_changes_title),
|
|
||||||
content = stringResource(CommonStrings.dialog_unsaved_changes_description_android),
|
|
||||||
onSubmitClick = { state.eventSink(RoomDetailsEditEvents.OnBackPress) },
|
onSubmitClick = { state.eventSink(RoomDetailsEditEvents.OnBackPress) },
|
||||||
onDismiss = { state.eventSink(RoomDetailsEditEvents.CloseDialog) }
|
onDismiss = { state.eventSink(RoomDetailsEditEvents.CloseDialog) }
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -103,7 +103,7 @@ androidx_recyclerview = "androidx.recyclerview:recyclerview:1.4.0"
|
||||||
androidx_browser = "androidx.browser:browser:1.9.0"
|
androidx_browser = "androidx.browser:browser:1.9.0"
|
||||||
androidx_lifecycle_runtime = { module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "lifecycle" }
|
androidx_lifecycle_runtime = { module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "lifecycle" }
|
||||||
androidx_lifecycle_process = { module = "androidx.lifecycle:lifecycle-process", version.ref = "lifecycle" }
|
androidx_lifecycle_process = { module = "androidx.lifecycle:lifecycle-process", version.ref = "lifecycle" }
|
||||||
androidx_splash = "androidx.core:core-splashscreen:1.0.1"
|
androidx_splash = "androidx.core:core-splashscreen:1.2.0"
|
||||||
androidx_media3_exoplayer = { module = "androidx.media3:media3-exoplayer", version.ref = "media3" }
|
androidx_media3_exoplayer = { module = "androidx.media3:media3-exoplayer", version.ref = "media3" }
|
||||||
androidx_media3_ui = { module = "androidx.media3:media3-ui", version.ref = "media3" }
|
androidx_media3_ui = { module = "androidx.media3:media3-ui", version.ref = "media3" }
|
||||||
androidx_media3_transformer = { module = "androidx.media3:media3-transformer", version.ref = "media3" }
|
androidx_media3_transformer = { module = "androidx.media3:media3-transformer", version.ref = "media3" }
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,39 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2025 New Vector Ltd.
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
||||||
|
* Please see LICENSE files in the repository root for full details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package io.element.android.libraries.designsystem.components.dialogs
|
||||||
|
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.ui.Modifier
|
||||||
|
import androidx.compose.ui.res.stringResource
|
||||||
|
import io.element.android.libraries.designsystem.preview.ElementPreview
|
||||||
|
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
|
||||||
|
import io.element.android.libraries.ui.strings.CommonStrings
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun SaveChangesDialog(
|
||||||
|
onSubmitClick: () -> Unit,
|
||||||
|
onDismiss: () -> Unit,
|
||||||
|
modifier: Modifier = Modifier,
|
||||||
|
title: String = stringResource(CommonStrings.dialog_unsaved_changes_title),
|
||||||
|
content: String = stringResource(CommonStrings.dialog_unsaved_changes_description_android),
|
||||||
|
) = ConfirmationDialog(
|
||||||
|
modifier = modifier,
|
||||||
|
title = title,
|
||||||
|
content = content,
|
||||||
|
onSubmitClick = onSubmitClick,
|
||||||
|
onDismiss = onDismiss,
|
||||||
|
)
|
||||||
|
|
||||||
|
@PreviewsDayNight
|
||||||
|
@Composable
|
||||||
|
internal fun SaveChangesDialogPreview() = ElementPreview {
|
||||||
|
SaveChangesDialog(
|
||||||
|
onSubmitClick = {},
|
||||||
|
onDismiss = {}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
@ -13,17 +13,20 @@ import dev.zacsweers.metro.Inject
|
||||||
import io.element.android.libraries.core.extensions.runCatchingExceptions
|
import io.element.android.libraries.core.extensions.runCatchingExceptions
|
||||||
import io.element.android.libraries.matrix.api.auth.HomeServerLoginCompatibilityChecker
|
import io.element.android.libraries.matrix.api.auth.HomeServerLoginCompatibilityChecker
|
||||||
import io.element.android.libraries.matrix.impl.ClientBuilderProvider
|
import io.element.android.libraries.matrix.impl.ClientBuilderProvider
|
||||||
|
import io.element.android.libraries.matrix.impl.certificates.UserCertificatesProvider
|
||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
|
|
||||||
@ContributesBinding(AppScope::class)
|
@ContributesBinding(AppScope::class)
|
||||||
@Inject
|
@Inject
|
||||||
class RustHomeServerLoginCompatibilityChecker(
|
class RustHomeServerLoginCompatibilityChecker(
|
||||||
private val clientBuilderProvider: ClientBuilderProvider,
|
private val clientBuilderProvider: ClientBuilderProvider,
|
||||||
|
private val userCertificatesProvider: UserCertificatesProvider,
|
||||||
) : HomeServerLoginCompatibilityChecker {
|
) : HomeServerLoginCompatibilityChecker {
|
||||||
override suspend fun check(url: String): Result<Boolean> = runCatchingExceptions {
|
override suspend fun check(url: String): Result<Boolean> = runCatchingExceptions {
|
||||||
clientBuilderProvider.provide()
|
clientBuilderProvider.provide()
|
||||||
.inMemoryStore()
|
.inMemoryStore()
|
||||||
.serverNameOrHomeserverUrl(url)
|
.serverNameOrHomeserverUrl(url)
|
||||||
|
.addRootCertificates(userCertificatesProvider.provides())
|
||||||
.build()
|
.build()
|
||||||
.use {
|
.use {
|
||||||
it.homeserverLoginDetails()
|
it.homeserverLoginDetails()
|
||||||
|
|
|
||||||
|
|
@ -49,6 +49,7 @@ class RustHomeserverLoginCompatibilityCheckerTest {
|
||||||
FakeFfiClientBuilder {
|
FakeFfiClientBuilder {
|
||||||
FakeFfiClient(homeserverLoginDetailsResult = result)
|
FakeFfiClient(homeserverLoginDetailsResult = result)
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
userCertificatesProvider = FakeUserCertificatesProvider(),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:550ea0bbefea8fc1af9aed6bf9b8238547aba6d9bd670035b22c42e5e1788812
|
oid sha256:657d1e0eff5254eb3d36a64212cca38ec129c240cbd61b8cfdeb8399a00a5251
|
||||||
size 39281
|
size 39103
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:b511e657048cf668b48a135119ffce4449c99ea4c90065744d61a34502e75508
|
oid sha256:3407623ce83d0c3f710ea45d693823d6125b1bc625c34e2922916110d8a2a442
|
||||||
size 36703
|
size 36717
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:9d89a6c9a49b2b0e4fa37e219cec8e0dbe90ed8ca6e71f0ec5e8788076f91526
|
||||||
|
size 23679
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:e496c8d67a678a7d4c729a3368c145afa080252dd68708b1ba95d98706cd614c
|
||||||
|
size 22265
|
||||||
Loading…
Add table
Add a link
Reference in a new issue