From 2e7355e78963643e48ab4af147e39de7fdf49aaf Mon Sep 17 00:00:00 2001 From: ganfra Date: Wed, 3 Dec 2025 14:08:14 +0100 Subject: [PATCH] change(room details edit): move to his own module --- features/roomdetails/impl/build.gradle.kts | 2 + .../roomdetails/impl/RoomDetailsFlowNode.kt | 5 +- .../impl/DefaultRoomDetailsEntryPointTest.kt | 2 + features/roomdetailsedit/api/build.gradle.kts | 21 +++++++ .../api/RoomDetailsEditEntryPoint.kt | 13 +++++ .../roomdetailsedit/impl/build.gradle.kts | 57 ++++++++++++++++++ .../impl/DefaultRoomDetailsEditEntryPoint.kt | 23 ++++++++ .../impl}/RoomDetailsEditEvents.kt | 2 +- .../impl}/RoomDetailsEditNode.kt | 2 +- .../impl}/RoomDetailsEditPresenter.kt | 5 +- .../impl}/RoomDetailsEditState.kt | 2 +- .../impl}/RoomDetailsEditStateProvider.kt | 2 +- .../impl}/RoomDetailsEditView.kt | 9 ++- .../src/main/res/values-be/translations.xml | 7 +++ .../src/main/res/values-bg/translations.xml | 7 +++ .../src/main/res/values-cs/translations.xml | 7 +++ .../src/main/res/values-cy/translations.xml | 7 +++ .../src/main/res/values-da/translations.xml | 7 +++ .../src/main/res/values-de/translations.xml | 7 +++ .../src/main/res/values-el/translations.xml | 7 +++ .../src/main/res/values-es/translations.xml | 7 +++ .../src/main/res/values-et/translations.xml | 7 +++ .../src/main/res/values-eu/translations.xml | 7 +++ .../src/main/res/values-fa/translations.xml | 7 +++ .../src/main/res/values-fi/translations.xml | 7 +++ .../src/main/res/values-fr/translations.xml | 7 +++ .../src/main/res/values-hu/translations.xml | 7 +++ .../src/main/res/values-in/translations.xml | 7 +++ .../src/main/res/values-it/translations.xml | 7 +++ .../src/main/res/values-ka/translations.xml | 7 +++ .../src/main/res/values-ko/translations.xml | 7 +++ .../src/main/res/values-lt/translations.xml | 7 +++ .../src/main/res/values-nb/translations.xml | 7 +++ .../src/main/res/values-nl/translations.xml | 7 +++ .../src/main/res/values-pl/translations.xml | 7 +++ .../main/res/values-pt-rBR/translations.xml | 7 +++ .../src/main/res/values-pt/translations.xml | 7 +++ .../src/main/res/values-ro/translations.xml | 7 +++ .../src/main/res/values-ru/translations.xml | 7 +++ .../src/main/res/values-sk/translations.xml | 7 +++ .../src/main/res/values-sv/translations.xml | 7 +++ .../src/main/res/values-tr/translations.xml | 7 +++ .../src/main/res/values-uk/translations.xml | 7 +++ .../src/main/res/values-ur/translations.xml | 7 +++ .../src/main/res/values-uz/translations.xml | 7 +++ .../main/res/values-zh-rTW/translations.xml | 7 +++ .../src/main/res/values-zh/translations.xml | 7 +++ .../impl/src/main/res/values/localazy.xml | 7 +++ .../impl}/RoomDetailsEditPresenterTest.kt | 58 ++++++++++++++----- .../impl}/RoomDetailsEditViewTest.kt | 3 +- .../roomdetailsedit/test/build.gradle.kts | 22 +++++++ .../test/FakeRoomDetailsEditEntryPoint.kt | 19 ++++++ .../ui/components/EditableAvatarView.kt | 3 +- tools/localazy/config.json | 9 +++ 54 files changed, 475 insertions(+), 29 deletions(-) create mode 100644 features/roomdetailsedit/api/build.gradle.kts create mode 100644 features/roomdetailsedit/api/src/main/kotlin/io/element/android/features/roomdetailsedit/api/RoomDetailsEditEntryPoint.kt create mode 100644 features/roomdetailsedit/impl/build.gradle.kts create mode 100644 features/roomdetailsedit/impl/src/main/kotlin/io/element/android/features/roomdetailsedit/impl/DefaultRoomDetailsEditEntryPoint.kt rename features/{roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit => roomdetailsedit/impl/src/main/kotlin/io/element/android/features/roomdetailsedit/impl}/RoomDetailsEditEvents.kt (92%) rename features/{roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit => roomdetailsedit/impl/src/main/kotlin/io/element/android/features/roomdetailsedit/impl}/RoomDetailsEditNode.kt (96%) rename features/{roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit => roomdetailsedit/impl/src/main/kotlin/io/element/android/features/roomdetailsedit/impl}/RoomDetailsEditPresenter.kt (98%) rename features/{roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit => roomdetailsedit/impl/src/main/kotlin/io/element/android/features/roomdetailsedit/impl}/RoomDetailsEditState.kt (95%) rename features/{roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit => roomdetailsedit/impl/src/main/kotlin/io/element/android/features/roomdetailsedit/impl}/RoomDetailsEditStateProvider.kt (97%) rename features/{roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit => roomdetailsedit/impl/src/main/kotlin/io/element/android/features/roomdetailsedit/impl}/RoomDetailsEditView.kt (96%) create mode 100644 features/roomdetailsedit/impl/src/main/res/values-be/translations.xml create mode 100644 features/roomdetailsedit/impl/src/main/res/values-bg/translations.xml create mode 100644 features/roomdetailsedit/impl/src/main/res/values-cs/translations.xml create mode 100644 features/roomdetailsedit/impl/src/main/res/values-cy/translations.xml create mode 100644 features/roomdetailsedit/impl/src/main/res/values-da/translations.xml create mode 100644 features/roomdetailsedit/impl/src/main/res/values-de/translations.xml create mode 100644 features/roomdetailsedit/impl/src/main/res/values-el/translations.xml create mode 100644 features/roomdetailsedit/impl/src/main/res/values-es/translations.xml create mode 100644 features/roomdetailsedit/impl/src/main/res/values-et/translations.xml create mode 100644 features/roomdetailsedit/impl/src/main/res/values-eu/translations.xml create mode 100644 features/roomdetailsedit/impl/src/main/res/values-fa/translations.xml create mode 100644 features/roomdetailsedit/impl/src/main/res/values-fi/translations.xml create mode 100644 features/roomdetailsedit/impl/src/main/res/values-fr/translations.xml create mode 100644 features/roomdetailsedit/impl/src/main/res/values-hu/translations.xml create mode 100644 features/roomdetailsedit/impl/src/main/res/values-in/translations.xml create mode 100644 features/roomdetailsedit/impl/src/main/res/values-it/translations.xml create mode 100644 features/roomdetailsedit/impl/src/main/res/values-ka/translations.xml create mode 100644 features/roomdetailsedit/impl/src/main/res/values-ko/translations.xml create mode 100644 features/roomdetailsedit/impl/src/main/res/values-lt/translations.xml create mode 100644 features/roomdetailsedit/impl/src/main/res/values-nb/translations.xml create mode 100644 features/roomdetailsedit/impl/src/main/res/values-nl/translations.xml create mode 100644 features/roomdetailsedit/impl/src/main/res/values-pl/translations.xml create mode 100644 features/roomdetailsedit/impl/src/main/res/values-pt-rBR/translations.xml create mode 100644 features/roomdetailsedit/impl/src/main/res/values-pt/translations.xml create mode 100644 features/roomdetailsedit/impl/src/main/res/values-ro/translations.xml create mode 100644 features/roomdetailsedit/impl/src/main/res/values-ru/translations.xml create mode 100644 features/roomdetailsedit/impl/src/main/res/values-sk/translations.xml create mode 100644 features/roomdetailsedit/impl/src/main/res/values-sv/translations.xml create mode 100644 features/roomdetailsedit/impl/src/main/res/values-tr/translations.xml create mode 100644 features/roomdetailsedit/impl/src/main/res/values-uk/translations.xml create mode 100644 features/roomdetailsedit/impl/src/main/res/values-ur/translations.xml create mode 100644 features/roomdetailsedit/impl/src/main/res/values-uz/translations.xml create mode 100644 features/roomdetailsedit/impl/src/main/res/values-zh-rTW/translations.xml create mode 100644 features/roomdetailsedit/impl/src/main/res/values-zh/translations.xml create mode 100644 features/roomdetailsedit/impl/src/main/res/values/localazy.xml rename features/{roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/edit => roomdetailsedit/impl/src/test/kotlin/io/element/android/features/roomdetailsedit/impl}/RoomDetailsEditPresenterTest.kt (94%) rename features/{roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/edit => roomdetailsedit/impl/src/test/kotlin/io/element/android/features/roomdetailsedit/impl}/RoomDetailsEditViewTest.kt (98%) create mode 100644 features/roomdetailsedit/test/build.gradle.kts create mode 100644 features/roomdetailsedit/test/src/main/kotlin/io/element/android/features/roomdetailsedit/test/FakeRoomDetailsEditEntryPoint.kt diff --git a/features/roomdetails/impl/build.gradle.kts b/features/roomdetails/impl/build.gradle.kts index 4ca260be16..f6e2d5387d 100644 --- a/features/roomdetails/impl/build.gradle.kts +++ b/features/roomdetails/impl/build.gradle.kts @@ -59,6 +59,7 @@ dependencies { implementation(projects.features.roommembermoderation.api) implementation(projects.features.rolesandpermissions.api) implementation(projects.features.securityandprivacy.api) + implementation(projects.features.roomdetailsedit.api) implementation(projects.features.invitepeople.api) testCommonDependencies(libs, true) @@ -73,6 +74,7 @@ dependencies { testImplementation(projects.features.call.test) testImplementation(projects.features.rolesandpermissions.test) testImplementation(projects.features.securityandprivacy.test) + implementation(projects.features.roomdetailsedit.test) testImplementation(projects.features.knockrequests.test) testImplementation(projects.features.messages.test) testImplementation(projects.features.poll.test) diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsFlowNode.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsFlowNode.kt index c8ef60513c..9071425a72 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsFlowNode.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsFlowNode.kt @@ -35,11 +35,11 @@ import io.element.android.features.rolesandpermissions.api.ChangeRoomMemberRoles import io.element.android.features.rolesandpermissions.api.ChangeRoomMemberRolesListType import io.element.android.features.rolesandpermissions.api.RolesAndPermissionsEntryPoint import io.element.android.features.roomdetails.api.RoomDetailsEntryPoint -import io.element.android.features.roomdetails.impl.edit.RoomDetailsEditNode import io.element.android.features.roomdetails.impl.invite.RoomInviteMembersNode import io.element.android.features.roomdetails.impl.members.RoomMemberListNode import io.element.android.features.roomdetails.impl.members.details.RoomMemberDetailsNode import io.element.android.features.roomdetails.impl.notificationsettings.RoomNotificationSettingsNode +import io.element.android.features.roomdetailsedit.api.RoomDetailsEditEntryPoint import io.element.android.features.securityandprivacy.api.SecurityAndPrivacyEntryPoint import io.element.android.features.userprofile.shared.UserProfileNodeHelper import io.element.android.features.verifysession.api.OutgoingVerificationEntryPoint @@ -85,6 +85,7 @@ class RoomDetailsFlowNode( private val changeRoomMemberRolesEntryPoint: ChangeRoomMemberRolesEntryPoint, private val rolesAndPermissionsEntryPoint: RolesAndPermissionsEntryPoint, private val securityAndPrivacyEntryPoint: SecurityAndPrivacyEntryPoint, + private val roomDetailsEditEntryPoint: RoomDetailsEditEntryPoint, ) : BaseFlowNode( backstack = BackStack( initialElement = plugins.filterIsInstance().first().initialElement.toNavTarget(), @@ -256,7 +257,7 @@ class RoomDetailsFlowNode( } NavTarget.RoomDetailsEdit -> { - createNode(buildContext) + roomDetailsEditEntryPoint.createNode(this, buildContext) } NavTarget.InviteMembers -> { diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt index cd2af112a7..5042f942b6 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt @@ -20,6 +20,7 @@ import io.element.android.features.messages.test.FakeMessagesEntryPoint import io.element.android.features.poll.test.history.FakePollHistoryEntryPoint import io.element.android.features.reportroom.test.FakeReportRoomEntryPoint import io.element.android.features.roomdetails.api.RoomDetailsEntryPoint +import io.element.android.features.roomdetailsedit.test.FakeRoomDetailsEditEntryPoint import io.element.android.features.securityandprivacy.test.FakeSecurityAndPrivacyEntryPoint import io.element.android.features.verifysession.test.FakeOutgoingVerificationEntryPoint import io.element.android.libraries.matrix.api.core.EventId @@ -63,6 +64,7 @@ class DefaultRoomDetailsEntryPointTest { changeRoomMemberRolesEntryPoint = FakeChangeRoomMemberRolesEntryPoint(), rolesAndPermissionsEntryPoint = FakeRolesAndPermissionsEntryPoint(), securityAndPrivacyEntryPoint = FakeSecurityAndPrivacyEntryPoint(), + roomDetailsEditEntryPoint = FakeRoomDetailsEditEntryPoint(), ) } val callback = object : RoomDetailsEntryPoint.Callback { diff --git a/features/roomdetailsedit/api/build.gradle.kts b/features/roomdetailsedit/api/build.gradle.kts new file mode 100644 index 0000000000..0afaad72a6 --- /dev/null +++ b/features/roomdetailsedit/api/build.gradle.kts @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2025 Element Creations Ltd. + * Copyright 2022-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. + */ + +plugins { + id("io.element.android-library") + id("kotlin-parcelize") +} + +android { + namespace = "io.element.android.features.roomdetailsedit.api" +} + +dependencies { + implementation(projects.libraries.architecture) + implementation(projects.libraries.matrix.api) +} diff --git a/features/roomdetailsedit/api/src/main/kotlin/io/element/android/features/roomdetailsedit/api/RoomDetailsEditEntryPoint.kt b/features/roomdetailsedit/api/src/main/kotlin/io/element/android/features/roomdetailsedit/api/RoomDetailsEditEntryPoint.kt new file mode 100644 index 0000000000..1dad365646 --- /dev/null +++ b/features/roomdetailsedit/api/src/main/kotlin/io/element/android/features/roomdetailsedit/api/RoomDetailsEditEntryPoint.kt @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2025 Element Creations Ltd. + * Copyright 2023-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.features.roomdetailsedit.api + +import io.element.android.libraries.architecture.SimpleFeatureEntryPoint + +fun interface RoomDetailsEditEntryPoint : SimpleFeatureEntryPoint diff --git a/features/roomdetailsedit/impl/build.gradle.kts b/features/roomdetailsedit/impl/build.gradle.kts new file mode 100644 index 0000000000..6b1d886abe --- /dev/null +++ b/features/roomdetailsedit/impl/build.gradle.kts @@ -0,0 +1,57 @@ +import extension.setupDependencyInjection +import extension.testCommonDependencies + +/* + * Copyright (c) 2025 Element Creations Ltd. + * Copyright 2023, 2024 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. + */ + +plugins { + id("io.element.android-compose-library") + id("kotlin-parcelize") +} + +android { + namespace = "io.element.android.features.roomdetailsedit.impl" + testOptions { + unitTests { + isIncludeAndroidResources = true + } + } +} + +setupDependencyInjection() + +dependencies { + implementation(projects.libraries.core) + implementation(projects.libraries.architecture) + implementation(projects.libraries.matrix.api) + implementation(projects.libraries.matrixui) + implementation(projects.libraries.designsystem) + implementation(projects.libraries.uiStrings) + implementation(projects.libraries.androidutils) + implementation(projects.libraries.mediapickers.api) + implementation(projects.libraries.mediaupload.api) + implementation(projects.libraries.mediaviewer.api) + implementation(projects.libraries.featureflag.api) + implementation(projects.libraries.permissions.api) + implementation(projects.libraries.preferences.api) + implementation(projects.services.analytics.api) + implementation(projects.libraries.testtags) + api(projects.features.roomdetailsedit.api) + api(projects.services.apperror.api) + implementation(libs.coil.compose) + + testCommonDependencies(libs, true) + testImplementation(projects.libraries.matrix.test) + testImplementation(projects.libraries.mediaupload.test) + testImplementation(projects.libraries.mediapickers.test) + testImplementation(projects.libraries.mediaviewer.test) + testImplementation(projects.libraries.permissions.test) + testImplementation(projects.libraries.preferences.test) + testImplementation(projects.libraries.featureflag.test) + testImplementation(projects.services.analytics.test) +} diff --git a/features/roomdetailsedit/impl/src/main/kotlin/io/element/android/features/roomdetailsedit/impl/DefaultRoomDetailsEditEntryPoint.kt b/features/roomdetailsedit/impl/src/main/kotlin/io/element/android/features/roomdetailsedit/impl/DefaultRoomDetailsEditEntryPoint.kt new file mode 100644 index 0000000000..d928a0238c --- /dev/null +++ b/features/roomdetailsedit/impl/src/main/kotlin/io/element/android/features/roomdetailsedit/impl/DefaultRoomDetailsEditEntryPoint.kt @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2025 Element Creations Ltd. + * Copyright 2023-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.features.roomdetailsedit.impl + +import com.bumble.appyx.core.modality.BuildContext +import com.bumble.appyx.core.node.Node +import dev.zacsweers.metro.AppScope +import dev.zacsweers.metro.ContributesBinding +import io.element.android.features.roomdetailsedit.api.RoomDetailsEditEntryPoint +import io.element.android.libraries.architecture.createNode + +@ContributesBinding(AppScope::class) +class DefaultRoomDetailsEditEntryPoint : RoomDetailsEditEntryPoint { + override fun createNode(parentNode: Node, buildContext: BuildContext): Node { + return parentNode.createNode(buildContext) + } +} diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditEvents.kt b/features/roomdetailsedit/impl/src/main/kotlin/io/element/android/features/roomdetailsedit/impl/RoomDetailsEditEvents.kt similarity index 92% rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditEvents.kt rename to features/roomdetailsedit/impl/src/main/kotlin/io/element/android/features/roomdetailsedit/impl/RoomDetailsEditEvents.kt index 2606d6be83..858d08c2a0 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditEvents.kt +++ b/features/roomdetailsedit/impl/src/main/kotlin/io/element/android/features/roomdetailsedit/impl/RoomDetailsEditEvents.kt @@ -6,7 +6,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.edit +package io.element.android.features.roomdetailsedit.impl import io.element.android.libraries.matrix.ui.media.AvatarAction diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditNode.kt b/features/roomdetailsedit/impl/src/main/kotlin/io/element/android/features/roomdetailsedit/impl/RoomDetailsEditNode.kt similarity index 96% rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditNode.kt rename to features/roomdetailsedit/impl/src/main/kotlin/io/element/android/features/roomdetailsedit/impl/RoomDetailsEditNode.kt index dc2ebe8c27..541a36c91a 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditNode.kt +++ b/features/roomdetailsedit/impl/src/main/kotlin/io/element/android/features/roomdetailsedit/impl/RoomDetailsEditNode.kt @@ -6,7 +6,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.edit +package io.element.android.features.roomdetailsedit.impl import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditPresenter.kt b/features/roomdetailsedit/impl/src/main/kotlin/io/element/android/features/roomdetailsedit/impl/RoomDetailsEditPresenter.kt similarity index 98% rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditPresenter.kt rename to features/roomdetailsedit/impl/src/main/kotlin/io/element/android/features/roomdetailsedit/impl/RoomDetailsEditPresenter.kt index 930d63031a..89af0aa288 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditPresenter.kt +++ b/features/roomdetailsedit/impl/src/main/kotlin/io/element/android/features/roomdetailsedit/impl/RoomDetailsEditPresenter.kt @@ -6,8 +6,9 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.edit +package io.element.android.features.roomdetailsedit.impl +import android.Manifest import android.net.Uri import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect @@ -51,7 +52,7 @@ class RoomDetailsEditPresenter( permissionsPresenterFactory: PermissionsPresenter.Factory, private val mediaOptimizationConfigProvider: MediaOptimizationConfigProvider, ) : Presenter { - private val cameraPermissionPresenter = permissionsPresenterFactory.create(android.Manifest.permission.CAMERA) + private val cameraPermissionPresenter = permissionsPresenterFactory.create(Manifest.permission.CAMERA) private var pendingPermissionRequest = false @Composable diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditState.kt b/features/roomdetailsedit/impl/src/main/kotlin/io/element/android/features/roomdetailsedit/impl/RoomDetailsEditState.kt similarity index 95% rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditState.kt rename to features/roomdetailsedit/impl/src/main/kotlin/io/element/android/features/roomdetailsedit/impl/RoomDetailsEditState.kt index f1d7a8861b..1017c961b1 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditState.kt +++ b/features/roomdetailsedit/impl/src/main/kotlin/io/element/android/features/roomdetailsedit/impl/RoomDetailsEditState.kt @@ -6,7 +6,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.edit +package io.element.android.features.roomdetailsedit.impl import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.matrix.api.core.RoomId diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditStateProvider.kt b/features/roomdetailsedit/impl/src/main/kotlin/io/element/android/features/roomdetailsedit/impl/RoomDetailsEditStateProvider.kt similarity index 97% rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditStateProvider.kt rename to features/roomdetailsedit/impl/src/main/kotlin/io/element/android/features/roomdetailsedit/impl/RoomDetailsEditStateProvider.kt index 7913620f04..d1f13d252c 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditStateProvider.kt +++ b/features/roomdetailsedit/impl/src/main/kotlin/io/element/android/features/roomdetailsedit/impl/RoomDetailsEditStateProvider.kt @@ -6,7 +6,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.edit +package io.element.android.features.roomdetailsedit.impl import androidx.compose.ui.tooling.preview.PreviewParameterProvider import io.element.android.libraries.architecture.AsyncAction diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditView.kt b/features/roomdetailsedit/impl/src/main/kotlin/io/element/android/features/roomdetailsedit/impl/RoomDetailsEditView.kt similarity index 96% rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditView.kt rename to features/roomdetailsedit/impl/src/main/kotlin/io/element/android/features/roomdetailsedit/impl/RoomDetailsEditView.kt index 870f48b60e..22795c98d3 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditView.kt +++ b/features/roomdetailsedit/impl/src/main/kotlin/io/element/android/features/roomdetailsedit/impl/RoomDetailsEditView.kt @@ -8,7 +8,7 @@ @file:OptIn(ExperimentalMaterial3Api::class) -package io.element.android.features.roomdetails.impl.edit +package io.element.android.features.roomdetailsedit.impl import androidx.activity.compose.BackHandler import androidx.compose.foundation.layout.Column @@ -31,7 +31,6 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.input.KeyboardCapitalization import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp -import io.element.android.features.roomdetails.impl.R import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.designsystem.components.async.AsyncActionView import io.element.android.libraries.designsystem.components.async.AsyncActionViewDefaults @@ -108,9 +107,9 @@ fun RoomDetailsEditView( displayName = state.roomRawName, avatarUrl = state.roomAvatarUrl, avatarSize = AvatarSize.EditRoomDetails, - avatarType = if(state.isSpace){ + avatarType = if (state.isSpace) { AvatarType.Space() - }else { + } else { AvatarType.Room() }, onAvatarClick = ::onAvatarClick, @@ -119,7 +118,7 @@ fun RoomDetailsEditView( Spacer(modifier = Modifier.height(60.dp)) TextField( - label = stringResource(id = R.string.screen_room_details_room_name_label), + label = stringResource(id = CommonStrings.common_room_name), value = state.roomRawName, placeholder = stringResource(CommonStrings.common_room_name_placeholder), singleLine = true, diff --git a/features/roomdetailsedit/impl/src/main/res/values-be/translations.xml b/features/roomdetailsedit/impl/src/main/res/values-be/translations.xml new file mode 100644 index 0000000000..26537576b4 --- /dev/null +++ b/features/roomdetailsedit/impl/src/main/res/values-be/translations.xml @@ -0,0 +1,7 @@ + + + "Рэдагаваць пакой" + "Адбылася невядомая памылка, і інфармацыю нельга было змяніць." + "Немагчыма абнавіць пакой" + "Ідзе абнаўленне пакоя…" + diff --git a/features/roomdetailsedit/impl/src/main/res/values-bg/translations.xml b/features/roomdetailsedit/impl/src/main/res/values-bg/translations.xml new file mode 100644 index 0000000000..787110dc79 --- /dev/null +++ b/features/roomdetailsedit/impl/src/main/res/values-bg/translations.xml @@ -0,0 +1,7 @@ + + + "Редактиране на стаята" + "Възникна неизвестна грешка и информацията не можа да бъде променена." + "Не може да се обнови стаята" + "Обновяване на стаята…" + diff --git a/features/roomdetailsedit/impl/src/main/res/values-cs/translations.xml b/features/roomdetailsedit/impl/src/main/res/values-cs/translations.xml new file mode 100644 index 0000000000..b2ea107300 --- /dev/null +++ b/features/roomdetailsedit/impl/src/main/res/values-cs/translations.xml @@ -0,0 +1,7 @@ + + + "Upravit podrobnosti" + "Došlo k neznámé chybě a informace nebylo možné změnit." + "Nelze aktualizovat místnost" + "Aktualizace místnosti…" + diff --git a/features/roomdetailsedit/impl/src/main/res/values-cy/translations.xml b/features/roomdetailsedit/impl/src/main/res/values-cy/translations.xml new file mode 100644 index 0000000000..e13ddf6d91 --- /dev/null +++ b/features/roomdetailsedit/impl/src/main/res/values-cy/translations.xml @@ -0,0 +1,7 @@ + + + "Ystafell Golygu" + "Roedd gwall anhysbys ac nid oedd modd newid y manylion." + "Methu diweddaru\'r ystafell" + "Wrthi\'n diweddaru ystafell…" + diff --git a/features/roomdetailsedit/impl/src/main/res/values-da/translations.xml b/features/roomdetailsedit/impl/src/main/res/values-da/translations.xml new file mode 100644 index 0000000000..489bd9b13b --- /dev/null +++ b/features/roomdetailsedit/impl/src/main/res/values-da/translations.xml @@ -0,0 +1,7 @@ + + + "Rediger rum" + "Der opstod en ukendt fejl, og oplysningerne kunne ikke ændres." + "Rummet kunne ikke opdateres" + "Opdaterer rum…" + diff --git a/features/roomdetailsedit/impl/src/main/res/values-de/translations.xml b/features/roomdetailsedit/impl/src/main/res/values-de/translations.xml new file mode 100644 index 0000000000..1bc31f9f68 --- /dev/null +++ b/features/roomdetailsedit/impl/src/main/res/values-de/translations.xml @@ -0,0 +1,7 @@ + + + "Chat bearbeiten" + "Es ist ein unbekannter Fehler aufgetreten und die Informationen konnten nicht geändert werden." + "Chat kann nicht aktualisiert werden" + "Chat wird aktualisiert…" + diff --git a/features/roomdetailsedit/impl/src/main/res/values-el/translations.xml b/features/roomdetailsedit/impl/src/main/res/values-el/translations.xml new file mode 100644 index 0000000000..c783ab1d86 --- /dev/null +++ b/features/roomdetailsedit/impl/src/main/res/values-el/translations.xml @@ -0,0 +1,7 @@ + + + "Επεξεργασία Αίθουσας" + "Υπήρξε ένα άγνωστο σφάλμα και οι πληροφορίες δεν μπορούσαν να αλλάξουν." + "Αδυναμία ενημέρωσης αίθουσας" + "Ενημέρωση αίθουσας…" + diff --git a/features/roomdetailsedit/impl/src/main/res/values-es/translations.xml b/features/roomdetailsedit/impl/src/main/res/values-es/translations.xml new file mode 100644 index 0000000000..45e1d81df9 --- /dev/null +++ b/features/roomdetailsedit/impl/src/main/res/values-es/translations.xml @@ -0,0 +1,7 @@ + + + "Editar sala" + "Se ha producido un error desconocido y no se ha podido cambiar la información." + "No se puede actualizar la sala" + "Actualizando la sala…" + diff --git a/features/roomdetailsedit/impl/src/main/res/values-et/translations.xml b/features/roomdetailsedit/impl/src/main/res/values-et/translations.xml new file mode 100644 index 0000000000..4c158d348a --- /dev/null +++ b/features/roomdetailsedit/impl/src/main/res/values-et/translations.xml @@ -0,0 +1,7 @@ + + + "Muuda üksikasju" + "Tekkis tundmatu viga ja andmed jäid muutmata." + "Jututoa andmete muutmine ei õnnestu" + "Uuendame jututuba…" + diff --git a/features/roomdetailsedit/impl/src/main/res/values-eu/translations.xml b/features/roomdetailsedit/impl/src/main/res/values-eu/translations.xml new file mode 100644 index 0000000000..000b5856bb --- /dev/null +++ b/features/roomdetailsedit/impl/src/main/res/values-eu/translations.xml @@ -0,0 +1,7 @@ + + + "Editatu gela" + "Errore ezezaguna gertatu da eta ezin izan da informazioa aldatu." + "Ezin da gela eguneratu" + "Gela eguneratzen…" + diff --git a/features/roomdetailsedit/impl/src/main/res/values-fa/translations.xml b/features/roomdetailsedit/impl/src/main/res/values-fa/translations.xml new file mode 100644 index 0000000000..bbbd63d171 --- /dev/null +++ b/features/roomdetailsedit/impl/src/main/res/values-fa/translations.xml @@ -0,0 +1,7 @@ + + + "ویرایش اتاق" + "خطایی ناشناخته رخ داد و اطّلاعات قابل تغییر نبودند." + "ناتوان در به‌روز رسانی اتاق" + "به‌روز کردن اتاق…" + diff --git a/features/roomdetailsedit/impl/src/main/res/values-fi/translations.xml b/features/roomdetailsedit/impl/src/main/res/values-fi/translations.xml new file mode 100644 index 0000000000..eabdcf2ab1 --- /dev/null +++ b/features/roomdetailsedit/impl/src/main/res/values-fi/translations.xml @@ -0,0 +1,7 @@ + + + "Muokkaa tietoja" + "Tuntematon virhe tapahtui, eikä tietoja voitu muuttaa." + "Huoneen muokkaaminen ei onnistunut" + "Muokataan huonetta…" + diff --git a/features/roomdetailsedit/impl/src/main/res/values-fr/translations.xml b/features/roomdetailsedit/impl/src/main/res/values-fr/translations.xml new file mode 100644 index 0000000000..bd0c4b6f02 --- /dev/null +++ b/features/roomdetailsedit/impl/src/main/res/values-fr/translations.xml @@ -0,0 +1,7 @@ + + + "Modifier les détails" + "Une erreur inconnue s’est produite et les informations n’ont pas pu être modifiées." + "Impossible de mettre à jour le salon" + "Mise à jour du salon…" + diff --git a/features/roomdetailsedit/impl/src/main/res/values-hu/translations.xml b/features/roomdetailsedit/impl/src/main/res/values-hu/translations.xml new file mode 100644 index 0000000000..9685a9afbb --- /dev/null +++ b/features/roomdetailsedit/impl/src/main/res/values-hu/translations.xml @@ -0,0 +1,7 @@ + + + "Részletek szerkesztése" + "Ismeretlen hiba történt, és az információkat nem lehetett megváltoztatni." + "Nem sikerült frissíteni a szobát" + "Szoba frissítése…" + diff --git a/features/roomdetailsedit/impl/src/main/res/values-in/translations.xml b/features/roomdetailsedit/impl/src/main/res/values-in/translations.xml new file mode 100644 index 0000000000..14b3d68c74 --- /dev/null +++ b/features/roomdetailsedit/impl/src/main/res/values-in/translations.xml @@ -0,0 +1,7 @@ + + + "Sunting Ruangan" + "Terjadi kesalahan yang tidak diketahui dan informasinya tidak dapat diubah." + "Tidak dapat memperbarui ruangan" + "Memperbarui ruangan…" + diff --git a/features/roomdetailsedit/impl/src/main/res/values-it/translations.xml b/features/roomdetailsedit/impl/src/main/res/values-it/translations.xml new file mode 100644 index 0000000000..7d28c1a3e2 --- /dev/null +++ b/features/roomdetailsedit/impl/src/main/res/values-it/translations.xml @@ -0,0 +1,7 @@ + + + "Modifica dettagli" + "Si è verificato un errore sconosciuto e non è stato possibile modificare le informazioni." + "Impossibile aggiornare la stanza" + "Aggiornamento della stanza…" + diff --git a/features/roomdetailsedit/impl/src/main/res/values-ka/translations.xml b/features/roomdetailsedit/impl/src/main/res/values-ka/translations.xml new file mode 100644 index 0000000000..53ea28028b --- /dev/null +++ b/features/roomdetailsedit/impl/src/main/res/values-ka/translations.xml @@ -0,0 +1,7 @@ + + + "ოთახის რედაქტირება" + "უცნობი შეცდომა მოხდა. ინფორმაციის შეცვლა ვერ მოხერხდა." + "ოთახის განახლება შეუძლებელია" + "ოთახის განახლება…" + diff --git a/features/roomdetailsedit/impl/src/main/res/values-ko/translations.xml b/features/roomdetailsedit/impl/src/main/res/values-ko/translations.xml new file mode 100644 index 0000000000..ae51384737 --- /dev/null +++ b/features/roomdetailsedit/impl/src/main/res/values-ko/translations.xml @@ -0,0 +1,7 @@ + + + "방 편집" + "알 수 없는 오류가 발생하여 정보를 변경할 수 없습니다." + "방을 업데이트할 수 없습니다." + "방 업데이트 중…" + diff --git a/features/roomdetailsedit/impl/src/main/res/values-lt/translations.xml b/features/roomdetailsedit/impl/src/main/res/values-lt/translations.xml new file mode 100644 index 0000000000..7e28eeb16c --- /dev/null +++ b/features/roomdetailsedit/impl/src/main/res/values-lt/translations.xml @@ -0,0 +1,7 @@ + + + "Redaguoti kambarį" + "Įvyko nežinoma klaida ir informacijos pakeisti nepavyko." + "Nepavyko atnaujinti kambario" + "Atnaujinamas kambarys…" + diff --git a/features/roomdetailsedit/impl/src/main/res/values-nb/translations.xml b/features/roomdetailsedit/impl/src/main/res/values-nb/translations.xml new file mode 100644 index 0000000000..d5095ae854 --- /dev/null +++ b/features/roomdetailsedit/impl/src/main/res/values-nb/translations.xml @@ -0,0 +1,7 @@ + + + "Rediger rom" + "Det oppstod en ukjent feil, og informasjonen kunne ikke endres." + "Kan ikke oppdatere rommet" + "Oppdaterer rommet …" + diff --git a/features/roomdetailsedit/impl/src/main/res/values-nl/translations.xml b/features/roomdetailsedit/impl/src/main/res/values-nl/translations.xml new file mode 100644 index 0000000000..af6fae3a90 --- /dev/null +++ b/features/roomdetailsedit/impl/src/main/res/values-nl/translations.xml @@ -0,0 +1,7 @@ + + + "Kamer bewerken" + "Er is een onbekende fout opgetreden en de informatie kon niet worden gewijzigd." + "Kan kamer niet bijwerken" + "Kamer bijwerken…" + diff --git a/features/roomdetailsedit/impl/src/main/res/values-pl/translations.xml b/features/roomdetailsedit/impl/src/main/res/values-pl/translations.xml new file mode 100644 index 0000000000..c676ff46ed --- /dev/null +++ b/features/roomdetailsedit/impl/src/main/res/values-pl/translations.xml @@ -0,0 +1,7 @@ + + + "Edytuj pokój" + "Wystąpił nieznany błąd i nie można było zmienić informacji." + "Nie można zaktualizować pokoju" + "Aktualizuję pokój…" + diff --git a/features/roomdetailsedit/impl/src/main/res/values-pt-rBR/translations.xml b/features/roomdetailsedit/impl/src/main/res/values-pt-rBR/translations.xml new file mode 100644 index 0000000000..e8e5dfc28d --- /dev/null +++ b/features/roomdetailsedit/impl/src/main/res/values-pt-rBR/translations.xml @@ -0,0 +1,7 @@ + + + "Editar detalhes" + "Ocorreu um erro desconhecido e as informações não puderam ser alteradas." + "Não foi possível atualizar a sala" + "Atualizando a sala…" + diff --git a/features/roomdetailsedit/impl/src/main/res/values-pt/translations.xml b/features/roomdetailsedit/impl/src/main/res/values-pt/translations.xml new file mode 100644 index 0000000000..25069318a5 --- /dev/null +++ b/features/roomdetailsedit/impl/src/main/res/values-pt/translations.xml @@ -0,0 +1,7 @@ + + + "Editar sala" + "Ocorreu um erro desconhecido e não foi possível alterar a informação." + "Não foi possível atualizar a sala" + "A atualizar sala…" + diff --git a/features/roomdetailsedit/impl/src/main/res/values-ro/translations.xml b/features/roomdetailsedit/impl/src/main/res/values-ro/translations.xml new file mode 100644 index 0000000000..9d9e769196 --- /dev/null +++ b/features/roomdetailsedit/impl/src/main/res/values-ro/translations.xml @@ -0,0 +1,7 @@ + + + "Editați camera" + "A apărut o eroare la actualizarea detaliilor camerei" + "Nu s-a putut actualiza camera" + "Se actualizează camera…" + diff --git a/features/roomdetailsedit/impl/src/main/res/values-ru/translations.xml b/features/roomdetailsedit/impl/src/main/res/values-ru/translations.xml new file mode 100644 index 0000000000..91ce37e6c0 --- /dev/null +++ b/features/roomdetailsedit/impl/src/main/res/values-ru/translations.xml @@ -0,0 +1,7 @@ + + + "Редактировать комнату" + "Произошла неизвестная ошибка и информацию не удалось изменить." + "Не удалось обновить комнату" + "Обновление комнаты…" + diff --git a/features/roomdetailsedit/impl/src/main/res/values-sk/translations.xml b/features/roomdetailsedit/impl/src/main/res/values-sk/translations.xml new file mode 100644 index 0000000000..52e484f1a3 --- /dev/null +++ b/features/roomdetailsedit/impl/src/main/res/values-sk/translations.xml @@ -0,0 +1,7 @@ + + + "Upraviť podrobnosti" + "Vyskytla sa neznáma chyba a informácie nebolo možné zmeniť." + "Nepodarilo sa aktualizovať miestnosť" + "Aktualizácia miestnosti…" + diff --git a/features/roomdetailsedit/impl/src/main/res/values-sv/translations.xml b/features/roomdetailsedit/impl/src/main/res/values-sv/translations.xml new file mode 100644 index 0000000000..176aed6b00 --- /dev/null +++ b/features/roomdetailsedit/impl/src/main/res/values-sv/translations.xml @@ -0,0 +1,7 @@ + + + "Redigera rummet" + "Ett okänt fel uppstod och informationen kunde inte ändras." + "Kunde inte uppdatera rummet" + "Uppdaterar rummet …" + diff --git a/features/roomdetailsedit/impl/src/main/res/values-tr/translations.xml b/features/roomdetailsedit/impl/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..f55c55cfaf --- /dev/null +++ b/features/roomdetailsedit/impl/src/main/res/values-tr/translations.xml @@ -0,0 +1,7 @@ + + + "Odayı Düzenle" + "Bilinmeyen bir hata oluştu ve bilgiler değiştirilemedi." + "Oda güncellenemiyor" + "Oda güncelleniyor…" + diff --git a/features/roomdetailsedit/impl/src/main/res/values-uk/translations.xml b/features/roomdetailsedit/impl/src/main/res/values-uk/translations.xml new file mode 100644 index 0000000000..21a47cbd59 --- /dev/null +++ b/features/roomdetailsedit/impl/src/main/res/values-uk/translations.xml @@ -0,0 +1,7 @@ + + + "Редагувати кімнату" + "Сталася невідома помилка, й інформацію не вдалося змінити." + "Не вдалося оновити кімнату" + "Оновлення кімнати…" + diff --git a/features/roomdetailsedit/impl/src/main/res/values-ur/translations.xml b/features/roomdetailsedit/impl/src/main/res/values-ur/translations.xml new file mode 100644 index 0000000000..e0fd0e01b5 --- /dev/null +++ b/features/roomdetailsedit/impl/src/main/res/values-ur/translations.xml @@ -0,0 +1,7 @@ + + + "کمرے میں ترمیم کریں" + "ایک نامعلوم خلل تھا اور معلومات تبدیل نہیں ہوسکی۔" + "کمرے کی تجدید کرنے سے قاصر" + "کمرے کی تجدید کر رہا ہے…" + diff --git a/features/roomdetailsedit/impl/src/main/res/values-uz/translations.xml b/features/roomdetailsedit/impl/src/main/res/values-uz/translations.xml new file mode 100644 index 0000000000..e3ab69c86d --- /dev/null +++ b/features/roomdetailsedit/impl/src/main/res/values-uz/translations.xml @@ -0,0 +1,7 @@ + + + "Xonani tahrirlash" + "Nomaʼlum xatolik yuz berdi va maʼlumotni oʻzgartirib boʻlmadi." + "Xonani yangilab bo‘lmadi" + "Xona yangilanmoqda…" + diff --git a/features/roomdetailsedit/impl/src/main/res/values-zh-rTW/translations.xml b/features/roomdetailsedit/impl/src/main/res/values-zh-rTW/translations.xml new file mode 100644 index 0000000000..44955e96dd --- /dev/null +++ b/features/roomdetailsedit/impl/src/main/res/values-zh-rTW/translations.xml @@ -0,0 +1,7 @@ + + + "編輯詳細資訊" + "發生未知錯誤,無法變更資訊。" + "無法更新聊天室" + "正在更新聊天室…" + diff --git a/features/roomdetailsedit/impl/src/main/res/values-zh/translations.xml b/features/roomdetailsedit/impl/src/main/res/values-zh/translations.xml new file mode 100644 index 0000000000..6b174fcb2c --- /dev/null +++ b/features/roomdetailsedit/impl/src/main/res/values-zh/translations.xml @@ -0,0 +1,7 @@ + + + "编辑聊天室" + "出现未知错误,无法更改信息。" + "无法更新聊天室" + "正在更新聊天室……" + diff --git a/features/roomdetailsedit/impl/src/main/res/values/localazy.xml b/features/roomdetailsedit/impl/src/main/res/values/localazy.xml new file mode 100644 index 0000000000..7a70381a8b --- /dev/null +++ b/features/roomdetailsedit/impl/src/main/res/values/localazy.xml @@ -0,0 +1,7 @@ + + + "Edit details" + "There was an unknown error and the information couldn\'t be changed." + "Unable to update room" + "Updating room…" + diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditPresenterTest.kt b/features/roomdetailsedit/impl/src/test/kotlin/io/element/android/features/roomdetailsedit/impl/RoomDetailsEditPresenterTest.kt similarity index 94% rename from features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditPresenterTest.kt rename to features/roomdetailsedit/impl/src/test/kotlin/io/element/android/features/roomdetailsedit/impl/RoomDetailsEditPresenterTest.kt index f66091dd87..d19a07ab04 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditPresenterTest.kt +++ b/features/roomdetailsedit/impl/src/test/kotlin/io/element/android/features/roomdetailsedit/impl/RoomDetailsEditPresenterTest.kt @@ -1,25 +1,28 @@ /* * Copyright (c) 2025 Element Creations Ltd. - * Copyright 2023-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.features.roomdetails.impl.edit +package io.element.android.features.roomdetailsedit.impl import android.net.Uri import app.cash.turbine.ReceiveTurbine import com.google.common.truth.Truth.assertThat -import io.element.android.features.roomdetails.impl.aJoinedRoom import io.element.android.libraries.androidutils.file.TemporaryUriDeleter import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.core.mimetype.MimeTypes +import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.room.JoinedRoom import io.element.android.libraries.matrix.api.room.StateEventType import io.element.android.libraries.matrix.test.AN_AVATAR_URL import io.element.android.libraries.matrix.test.A_ROOM_NAME import io.element.android.libraries.matrix.test.A_ROOM_RAW_NAME +import io.element.android.libraries.matrix.test.A_ROOM_TOPIC +import io.element.android.libraries.matrix.test.room.FakeBaseRoom +import io.element.android.libraries.matrix.test.room.FakeJoinedRoom +import io.element.android.libraries.matrix.test.room.aRoomInfo import io.element.android.libraries.matrix.ui.media.AvatarAction import io.element.android.libraries.mediapickers.test.FakePickerProvider import io.element.android.libraries.mediaupload.api.MediaUploadInfo @@ -124,16 +127,17 @@ class RoomDetailsEditPresenterTest { @Test fun `present - sets canChangeName if user has permission`() = runTest { - val room = aJoinedRoom( - avatarUrl = AN_AVATAR_URL, - canSendStateResult = { _, stateEventType -> - when (stateEventType) { - StateEventType.ROOM_NAME -> Result.success(true) - StateEventType.ROOM_AVATAR -> Result.success(false) - StateEventType.ROOM_TOPIC -> Result.failure(RuntimeException("Oops")) - else -> lambdaError() - } - }, + val room = FakeJoinedRoom( + FakeBaseRoom( + canSendStateResult = { _, stateEventType -> + when (stateEventType) { + StateEventType.ROOM_NAME -> Result.success(true) + StateEventType.ROOM_AVATAR -> Result.success(false) + StateEventType.ROOM_TOPIC -> Result.failure(RuntimeException("Oops")) + else -> lambdaError() + } + }, + ) ) val deleteCallback = lambdaRecorder {} val presenter = createRoomDetailsEditPresenter( @@ -769,6 +773,34 @@ class RoomDetailsEditPresenterTest { ) } + private fun aJoinedRoom( + avatarUrl: String? = AN_AVATAR_URL, + displayName: String = A_ROOM_NAME, + rawName: String = displayName, + topic: String? = A_ROOM_TOPIC, + setNameResult: (String) -> Result = { Result.success(Unit) }, + setTopicResult: (String) -> Result = { Result.success(Unit) }, + updateAvatarResult: (String, ByteArray) -> Result = { _, _ -> Result.success(Unit) }, + removeAvatarResult: () -> Result = { Result.success(Unit) }, + canSendStateResult: (UserId, StateEventType) -> Result, + ): JoinedRoom { + return FakeJoinedRoom( + baseRoom = FakeBaseRoom( + canSendStateResult = canSendStateResult, + initialRoomInfo = aRoomInfo( + name = displayName, + topic = topic, + avatarUrl = avatarUrl, + rawName = rawName + ) + ), + setNameResult = setNameResult, + setTopicResult = setTopicResult, + updateAvatarResult = updateAvatarResult, + removeAvatarResult = removeAvatarResult, + ) + } + companion object { private const val ANOTHER_AVATAR_URL = "example://camera/foo.jpg" } diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditViewTest.kt b/features/roomdetailsedit/impl/src/test/kotlin/io/element/android/features/roomdetailsedit/impl/RoomDetailsEditViewTest.kt similarity index 98% rename from features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditViewTest.kt rename to features/roomdetailsedit/impl/src/test/kotlin/io/element/android/features/roomdetailsedit/impl/RoomDetailsEditViewTest.kt index c8475cbb89..dcf8a94d66 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditViewTest.kt +++ b/features/roomdetailsedit/impl/src/test/kotlin/io/element/android/features/roomdetailsedit/impl/RoomDetailsEditViewTest.kt @@ -1,12 +1,11 @@ /* * Copyright (c) 2025 Element Creations Ltd. - * Copyright 2024, 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.features.roomdetails.impl.edit +package io.element.android.features.roomdetailsedit.impl import androidx.activity.ComponentActivity import androidx.annotation.StringRes diff --git a/features/roomdetailsedit/test/build.gradle.kts b/features/roomdetailsedit/test/build.gradle.kts new file mode 100644 index 0000000000..ff9110eb49 --- /dev/null +++ b/features/roomdetailsedit/test/build.gradle.kts @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2025 Element Creations Ltd. + * 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. + */ + +plugins { + id("io.element.android-library") +} + +android { + namespace = "io.element.android.features.roomdetetailsedit.test" +} + +dependencies { + implementation(projects.features.roomdetailsedit.api) + implementation(projects.libraries.architecture) + implementation(projects.libraries.matrix.api) + implementation(projects.tests.testutils) +} diff --git a/features/roomdetailsedit/test/src/main/kotlin/io/element/android/features/roomdetailsedit/test/FakeRoomDetailsEditEntryPoint.kt b/features/roomdetailsedit/test/src/main/kotlin/io/element/android/features/roomdetailsedit/test/FakeRoomDetailsEditEntryPoint.kt new file mode 100644 index 0000000000..df890ab2c6 --- /dev/null +++ b/features/roomdetailsedit/test/src/main/kotlin/io/element/android/features/roomdetailsedit/test/FakeRoomDetailsEditEntryPoint.kt @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2025 Element Creations 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.features.roomdetailsedit.test + +import com.bumble.appyx.core.modality.BuildContext +import com.bumble.appyx.core.node.Node +import io.element.android.features.roomdetailsedit.api.RoomDetailsEditEntryPoint +import io.element.android.tests.testutils.lambda.lambdaError + +class FakeRoomDetailsEditEntryPoint : RoomDetailsEditEntryPoint { + override fun createNode(parentNode: Node, buildContext: BuildContext): Node { + lambdaError() + } +} diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/EditableAvatarView.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/EditableAvatarView.kt index 7e02cf6e07..7a005402e2 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/EditableAvatarView.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/EditableAvatarView.kt @@ -92,7 +92,8 @@ fun EditableAvatarView( radius = (editIconRadius + 4.dp).toPx(), blendMode = BlendMode.Clear, ) - }) { + } + ) { when { avatarUrl == null || avatarUrl.startsWith("mxc://") -> { Avatar( diff --git a/tools/localazy/config.json b/tools/localazy/config.json index 46908438b5..f7463a6396 100644 --- a/tools/localazy/config.json +++ b/tools/localazy/config.json @@ -209,6 +209,15 @@ "screen\\.security_and_privacy\\..*" ] }, + { + "name" : ":features:roomdetailsedit:impl", + "includeRegex" : [ + "screen_room_details_edit_room_title", + "screen_room_details_edition_error", + "screen_room_details_edition_error_title", + "screen_room_details_updating_room" + ] + }, { "name" : ":features:space:impl", "includeRegex" : [