From df89b5b9ac9eff17896f980ceabfec017ceb97f5 Mon Sep 17 00:00:00 2001 From: ganfra Date: Tue, 18 Nov 2025 21:19:08 +0100 Subject: [PATCH] change(security and privacy) : extract code to a separate module --- features/roomdetails/impl/build.gradle.kts | 2 + .../roomdetails/impl/RoomDetailsFlowNode.kt | 5 +- .../roomdetails/impl/RoomDetailsPresenter.kt | 2 +- .../impl/DefaultRoomDetailsEntryPointTest.kt | 2 + .../securityandprivacy/api/build.gradle.kts | 21 ++++++++ .../api/SecurityAndPrivacyEntryPoint.kt | 13 +++++ .../api}/SecurityAndPrivacyPermissions.kt | 4 +- .../securityandprivacy/impl/build.gradle.kts | 48 +++++++++++++++++++ .../DefaultSecurityAndPrivacyEntryPoint.kt | 23 +++++++++ .../impl}/SecurityAndPrivacyFlowNode.kt | 5 +- .../impl}/SecurityAndPrivacyNavigator.kt | 2 +- .../editroomaddress/EditRoomAddressEvents.kt | 2 +- .../editroomaddress/EditRoomAddressNode.kt | 4 +- .../EditRoomAddressPresenter.kt | 4 +- .../editroomaddress/EditRoomAddressState.kt | 2 +- .../EditRoomAddressStateProvider.kt | 2 +- .../editroomaddress/EditRoomAddressView.kt | 4 +- .../impl}/editroomaddress/RoomAlias.kt | 2 +- .../impl/root}/SecurityAndPrivacyEvents.kt | 2 +- .../impl/root}/SecurityAndPrivacyNode.kt | 3 +- .../impl/root}/SecurityAndPrivacyPresenter.kt | 7 +-- .../impl/root}/SecurityAndPrivacyState.kt | 4 +- .../root}/SecurityAndPrivacyStateProvider.kt | 4 +- .../impl/root}/SecurityAndPrivacyView.kt | 6 +-- .../src/main/res/values-be/translations.xml | 5 ++ .../src/main/res/values-bg/translations.xml | 23 +++++++++ .../src/main/res/values-cs/translations.xml | 38 +++++++++++++++ .../src/main/res/values-cy/translations.xml | 38 +++++++++++++++ .../src/main/res/values-da/translations.xml | 36 ++++++++++++++ .../src/main/res/values-de/translations.xml | 38 +++++++++++++++ .../src/main/res/values-el/translations.xml | 37 ++++++++++++++ .../src/main/res/values-es/translations.xml | 36 ++++++++++++++ .../src/main/res/values-et/translations.xml | 40 ++++++++++++++++ .../src/main/res/values-eu/translations.xml | 22 +++++++++ .../src/main/res/values-fa/translations.xml | 22 +++++++++ .../src/main/res/values-fi/translations.xml | 38 +++++++++++++++ .../src/main/res/values-fr/translations.xml | 38 +++++++++++++++ .../src/main/res/values-hu/translations.xml | 40 ++++++++++++++++ .../src/main/res/values-in/translations.xml | 35 ++++++++++++++ .../src/main/res/values-it/translations.xml | 37 ++++++++++++++ .../src/main/res/values-ko/translations.xml | 36 ++++++++++++++ .../src/main/res/values-nb/translations.xml | 36 ++++++++++++++ .../src/main/res/values-nl/translations.xml | 5 ++ .../src/main/res/values-pl/translations.xml | 38 +++++++++++++++ .../main/res/values-pt-rBR/translations.xml | 36 ++++++++++++++ .../src/main/res/values-pt/translations.xml | 38 +++++++++++++++ .../src/main/res/values-ro/translations.xml | 36 ++++++++++++++ .../src/main/res/values-ru/translations.xml | 40 ++++++++++++++++ .../src/main/res/values-sk/translations.xml | 38 +++++++++++++++ .../src/main/res/values-sv/translations.xml | 37 ++++++++++++++ .../src/main/res/values-tr/translations.xml | 38 +++++++++++++++ .../src/main/res/values-uk/translations.xml | 38 +++++++++++++++ .../src/main/res/values-uz/translations.xml | 7 +++ .../main/res/values-zh-rTW/translations.xml | 38 +++++++++++++++ .../src/main/res/values-zh/translations.xml | 38 +++++++++++++++ .../impl/src/main/res/values/localazy.xml | 40 ++++++++++++++++ .../impl}/FakeSecurityAndPrivacyNavigator.kt | 2 +- .../impl}/SecurityAndPrivacyPresenterTest.kt | 6 ++- .../impl}/SecurityAndPrivacyViewTest.kt | 10 +++- .../EditRoomAddressPresenterTest.kt} | 46 ++++++++++-------- .../EditRoomAddressViewTest.kt} | 4 +- .../securityandprivacy/test/build.gradle.kts | 22 +++++++++ .../test/FakeSecurityAndPrivacyEntryPoint.kt | 19 ++++++++ tools/localazy/config.json | 7 +++ 64 files changed, 1296 insertions(+), 55 deletions(-) create mode 100644 features/securityandprivacy/api/build.gradle.kts create mode 100644 features/securityandprivacy/api/src/main/kotlin/io/element/android/features/securityandprivacy/api/SecurityAndPrivacyEntryPoint.kt rename features/{roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/permissions => securityandprivacy/api/src/main/kotlin/io/element/android/features/securityandprivacy/api}/SecurityAndPrivacyPermissions.kt (89%) create mode 100644 features/securityandprivacy/impl/build.gradle.kts create mode 100644 features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/DefaultSecurityAndPrivacyEntryPoint.kt rename features/{roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy => securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl}/SecurityAndPrivacyFlowNode.kt (89%) rename features/{roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy => securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl}/SecurityAndPrivacyNavigator.kt (92%) rename features/{roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy => securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl}/editroomaddress/EditRoomAddressEvents.kt (83%) rename features/{roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy => securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl}/editroomaddress/EditRoomAddressNode.kt (87%) rename features/{roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy => securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl}/editroomaddress/EditRoomAddressPresenter.kt (97%) rename features/{roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy => securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl}/editroomaddress/EditRoomAddressState.kt (88%) rename features/{roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy => securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl}/editroomaddress/EditRoomAddressStateProvider.kt (94%) rename features/{roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy => securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl}/editroomaddress/EditRoomAddressView.kt (96%) rename features/{roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy => securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl}/editroomaddress/RoomAlias.kt (87%) rename features/{roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy => securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/root}/SecurityAndPrivacyEvents.kt (92%) rename features/{roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy => securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/root}/SecurityAndPrivacyNode.kt (89%) rename features/{roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy => securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/root}/SecurityAndPrivacyPresenter.kt (97%) rename features/{roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy => securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/root}/SecurityAndPrivacyState.kt (93%) rename features/{roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy => securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/root}/SecurityAndPrivacyStateProvider.kt (95%) rename features/{roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy => securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/root}/SecurityAndPrivacyView.kt (98%) create mode 100644 features/securityandprivacy/impl/src/main/res/values-be/translations.xml create mode 100644 features/securityandprivacy/impl/src/main/res/values-bg/translations.xml create mode 100644 features/securityandprivacy/impl/src/main/res/values-cs/translations.xml create mode 100644 features/securityandprivacy/impl/src/main/res/values-cy/translations.xml create mode 100644 features/securityandprivacy/impl/src/main/res/values-da/translations.xml create mode 100644 features/securityandprivacy/impl/src/main/res/values-de/translations.xml create mode 100644 features/securityandprivacy/impl/src/main/res/values-el/translations.xml create mode 100644 features/securityandprivacy/impl/src/main/res/values-es/translations.xml create mode 100644 features/securityandprivacy/impl/src/main/res/values-et/translations.xml create mode 100644 features/securityandprivacy/impl/src/main/res/values-eu/translations.xml create mode 100644 features/securityandprivacy/impl/src/main/res/values-fa/translations.xml create mode 100644 features/securityandprivacy/impl/src/main/res/values-fi/translations.xml create mode 100644 features/securityandprivacy/impl/src/main/res/values-fr/translations.xml create mode 100644 features/securityandprivacy/impl/src/main/res/values-hu/translations.xml create mode 100644 features/securityandprivacy/impl/src/main/res/values-in/translations.xml create mode 100644 features/securityandprivacy/impl/src/main/res/values-it/translations.xml create mode 100644 features/securityandprivacy/impl/src/main/res/values-ko/translations.xml create mode 100644 features/securityandprivacy/impl/src/main/res/values-nb/translations.xml create mode 100644 features/securityandprivacy/impl/src/main/res/values-nl/translations.xml create mode 100644 features/securityandprivacy/impl/src/main/res/values-pl/translations.xml create mode 100644 features/securityandprivacy/impl/src/main/res/values-pt-rBR/translations.xml create mode 100644 features/securityandprivacy/impl/src/main/res/values-pt/translations.xml create mode 100644 features/securityandprivacy/impl/src/main/res/values-ro/translations.xml create mode 100644 features/securityandprivacy/impl/src/main/res/values-ru/translations.xml create mode 100644 features/securityandprivacy/impl/src/main/res/values-sk/translations.xml create mode 100644 features/securityandprivacy/impl/src/main/res/values-sv/translations.xml create mode 100644 features/securityandprivacy/impl/src/main/res/values-tr/translations.xml create mode 100644 features/securityandprivacy/impl/src/main/res/values-uk/translations.xml create mode 100644 features/securityandprivacy/impl/src/main/res/values-uz/translations.xml create mode 100644 features/securityandprivacy/impl/src/main/res/values-zh-rTW/translations.xml create mode 100644 features/securityandprivacy/impl/src/main/res/values-zh/translations.xml create mode 100644 features/securityandprivacy/impl/src/main/res/values/localazy.xml rename features/{roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy => securityandprivacy/impl/src/test/kotlin/io/element/android/features/securityandprivacy/impl}/FakeSecurityAndPrivacyNavigator.kt (90%) rename features/{roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy => securityandprivacy/impl/src/test/kotlin/io/element/android/features/securityandprivacy/impl}/SecurityAndPrivacyPresenterTest.kt (97%) rename features/{roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy => securityandprivacy/impl/src/test/kotlin/io/element/android/features/securityandprivacy/impl}/SecurityAndPrivacyViewTest.kt (90%) rename features/{roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/EditBaseRoomAddressPresenterTest.kt => securityandprivacy/impl/src/test/kotlin/io/element/android/features/securityandprivacy/impl/editroomaddress/EditRoomAddressPresenterTest.kt} (93%) rename features/{roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/EditBaseRoomAddressViewTest.kt => securityandprivacy/impl/src/test/kotlin/io/element/android/features/securityandprivacy/impl/editroomaddress/EditRoomAddressViewTest.kt} (97%) create mode 100644 features/securityandprivacy/test/build.gradle.kts create mode 100644 features/securityandprivacy/test/src/main/kotlin/io/element/android/features/securityandprivacy/test/FakeSecurityAndPrivacyEntryPoint.kt diff --git a/features/roomdetails/impl/build.gradle.kts b/features/roomdetails/impl/build.gradle.kts index acf80c0eca..4ca260be16 100644 --- a/features/roomdetails/impl/build.gradle.kts +++ b/features/roomdetails/impl/build.gradle.kts @@ -58,6 +58,7 @@ dependencies { implementation(projects.features.reportroom.api) implementation(projects.features.roommembermoderation.api) implementation(projects.features.rolesandpermissions.api) + implementation(projects.features.securityandprivacy.api) implementation(projects.features.invitepeople.api) testCommonDependencies(libs, true) @@ -71,6 +72,7 @@ dependencies { testImplementation(projects.libraries.featureflag.test) testImplementation(projects.features.call.test) testImplementation(projects.features.rolesandpermissions.test) + testImplementation(projects.features.securityandprivacy.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 fe6c3646d9..c8ef60513c 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 @@ -40,7 +40,7 @@ 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.roomdetails.impl.securityandprivacy.SecurityAndPrivacyFlowNode +import io.element.android.features.securityandprivacy.api.SecurityAndPrivacyEntryPoint import io.element.android.features.userprofile.shared.UserProfileNodeHelper import io.element.android.features.verifysession.api.OutgoingVerificationEntryPoint import io.element.android.libraries.architecture.BackstackWithOverlayBox @@ -84,6 +84,7 @@ class RoomDetailsFlowNode( private val reportRoomEntryPoint: ReportRoomEntryPoint, private val changeRoomMemberRolesEntryPoint: ChangeRoomMemberRolesEntryPoint, private val rolesAndPermissionsEntryPoint: RolesAndPermissionsEntryPoint, + private val securityAndPrivacyEntryPoint: SecurityAndPrivacyEntryPoint, ) : BaseFlowNode( backstack = BackStack( initialElement = plugins.filterIsInstance().first().initialElement.toNavTarget(), @@ -381,7 +382,7 @@ class RoomDetailsFlowNode( knockRequestsListEntryPoint.createNode(this, buildContext) } NavTarget.SecurityAndPrivacy -> { - createNode(buildContext) + securityAndPrivacyEntryPoint.createNode(this, buildContext) } is NavTarget.VerifyUser -> { val params = OutgoingVerificationEntryPoint.Params( diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsPresenter.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsPresenter.kt index 232f4d626c..95c4f1e9e2 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsPresenter.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsPresenter.kt @@ -22,7 +22,7 @@ import io.element.android.features.leaveroom.api.LeaveRoomEvent import io.element.android.features.leaveroom.api.LeaveRoomState import io.element.android.features.roomcall.api.RoomCallState import io.element.android.features.roomdetails.impl.members.details.RoomMemberDetailsPresenter -import io.element.android.features.roomdetails.impl.securityandprivacy.permissions.securityAndPrivacyPermissionsAsState +import io.element.android.features.securityandprivacy.api.securityAndPrivacyPermissionsAsState import io.element.android.libraries.androidutils.clipboard.ClipboardHelper import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.core.coroutine.CoroutineDispatchers 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 2b336121da..cd2af112a7 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.securityandprivacy.test.FakeSecurityAndPrivacyEntryPoint import io.element.android.features.verifysession.test.FakeOutgoingVerificationEntryPoint import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId @@ -61,6 +62,7 @@ class DefaultRoomDetailsEntryPointTest { reportRoomEntryPoint = FakeReportRoomEntryPoint(), changeRoomMemberRolesEntryPoint = FakeChangeRoomMemberRolesEntryPoint(), rolesAndPermissionsEntryPoint = FakeRolesAndPermissionsEntryPoint(), + securityAndPrivacyEntryPoint = FakeSecurityAndPrivacyEntryPoint(), ) } val callback = object : RoomDetailsEntryPoint.Callback { diff --git a/features/securityandprivacy/api/build.gradle.kts b/features/securityandprivacy/api/build.gradle.kts new file mode 100644 index 0000000000..4260bea661 --- /dev/null +++ b/features/securityandprivacy/api/build.gradle.kts @@ -0,0 +1,21 @@ +/* + * 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-compose-library") + id("kotlin-parcelize") +} + +android { + namespace = "io.element.android.features.securityandprivacy.api" +} +dependencies { + implementation(projects.libraries.architecture) + implementation(projects.libraries.core) + implementation(projects.libraries.matrix.api) +} diff --git a/features/securityandprivacy/api/src/main/kotlin/io/element/android/features/securityandprivacy/api/SecurityAndPrivacyEntryPoint.kt b/features/securityandprivacy/api/src/main/kotlin/io/element/android/features/securityandprivacy/api/SecurityAndPrivacyEntryPoint.kt new file mode 100644 index 0000000000..2c7c1cfd41 --- /dev/null +++ b/features/securityandprivacy/api/src/main/kotlin/io/element/android/features/securityandprivacy/api/SecurityAndPrivacyEntryPoint.kt @@ -0,0 +1,13 @@ +/* + * 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. + */ + +package io.element.android.features.securityandprivacy.api + +import io.element.android.libraries.architecture.SimpleFeatureEntryPoint + +fun interface SecurityAndPrivacyEntryPoint : SimpleFeatureEntryPoint diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/permissions/SecurityAndPrivacyPermissions.kt b/features/securityandprivacy/api/src/main/kotlin/io/element/android/features/securityandprivacy/api/SecurityAndPrivacyPermissions.kt similarity index 89% rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/permissions/SecurityAndPrivacyPermissions.kt rename to features/securityandprivacy/api/src/main/kotlin/io/element/android/features/securityandprivacy/api/SecurityAndPrivacyPermissions.kt index e4b14c923a..82ab30581e 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/permissions/SecurityAndPrivacyPermissions.kt +++ b/features/securityandprivacy/api/src/main/kotlin/io/element/android/features/securityandprivacy/api/SecurityAndPrivacyPermissions.kt @@ -6,12 +6,12 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.securityandprivacy.permissions +package io.element.android.features.securityandprivacy.api import androidx.compose.runtime.Composable import androidx.compose.runtime.State import androidx.compose.runtime.produceState -import io.element.android.features.roomdetails.impl.securityandprivacy.permissions.SecurityAndPrivacyPermissions.Companion.DEFAULT +import io.element.android.features.securityandprivacy.api.SecurityAndPrivacyPermissions.Companion.DEFAULT import io.element.android.libraries.matrix.api.room.BaseRoom import io.element.android.libraries.matrix.api.room.StateEventType import io.element.android.libraries.matrix.api.room.powerlevels.canSendState diff --git a/features/securityandprivacy/impl/build.gradle.kts b/features/securityandprivacy/impl/build.gradle.kts new file mode 100644 index 0000000000..5a83cebd8c --- /dev/null +++ b/features/securityandprivacy/impl/build.gradle.kts @@ -0,0 +1,48 @@ +import extension.setupDependencyInjection +import extension.testCommonDependencies + +/* + * 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-compose-library") + id("kotlin-parcelize") +} + +android { + namespace = "io.element.android.features.securityandprivacy.impl" + + testOptions { + unitTests { + isIncludeAndroidResources = true + } + } +} + +setupDependencyInjection() + +dependencies { + api(projects.features.securityandprivacy.api) + implementation(projects.appnav) + implementation(projects.libraries.architecture) + implementation(projects.libraries.core) + implementation(projects.libraries.designsystem) + implementation(projects.libraries.matrix.api) + // For test fixtures used in previews + implementation(projects.libraries.previewutils) + implementation(projects.libraries.matrixui) + implementation(projects.libraries.uiStrings) + implementation(projects.services.analytics.api) + implementation(projects.libraries.featureflag.api) + + testCommonDependencies(libs, true) + testImplementation(projects.services.analytics.test) + testImplementation(projects.libraries.matrix.test) + testImplementation(projects.libraries.featureflag.test) + testImplementation(projects.libraries.testtags) +} diff --git a/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/DefaultSecurityAndPrivacyEntryPoint.kt b/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/DefaultSecurityAndPrivacyEntryPoint.kt new file mode 100644 index 0000000000..2d01ed4a83 --- /dev/null +++ b/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/DefaultSecurityAndPrivacyEntryPoint.kt @@ -0,0 +1,23 @@ +/* + * 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. + */ + +package io.element.android.features.securityandprivacy.impl + +import com.bumble.appyx.core.modality.BuildContext +import com.bumble.appyx.core.node.Node +import dev.zacsweers.metro.ContributesBinding +import io.element.android.features.securityandprivacy.api.SecurityAndPrivacyEntryPoint +import io.element.android.libraries.architecture.createNode +import io.element.android.libraries.di.RoomScope + +@ContributesBinding(RoomScope::class) +class DefaultSecurityAndPrivacyEntryPoint : SecurityAndPrivacyEntryPoint { + 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/securityandprivacy/SecurityAndPrivacyFlowNode.kt b/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/SecurityAndPrivacyFlowNode.kt similarity index 89% rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyFlowNode.kt rename to features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/SecurityAndPrivacyFlowNode.kt index 751ef01403..5dbc8dbb45 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyFlowNode.kt +++ b/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/SecurityAndPrivacyFlowNode.kt @@ -6,7 +6,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.securityandprivacy +package io.element.android.features.securityandprivacy.impl import android.os.Parcelable import androidx.compose.runtime.Composable @@ -18,7 +18,8 @@ import com.bumble.appyx.navmodel.backstack.BackStack import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode -import io.element.android.features.roomdetails.impl.securityandprivacy.editroomaddress.EditRoomAddressNode +import io.element.android.features.securityandprivacy.impl.editroomaddress.EditRoomAddressNode +import io.element.android.features.securityandprivacy.impl.root.SecurityAndPrivacyNode import io.element.android.libraries.architecture.BackstackView import io.element.android.libraries.architecture.BaseFlowNode import io.element.android.libraries.architecture.createNode diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyNavigator.kt b/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/SecurityAndPrivacyNavigator.kt similarity index 92% rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyNavigator.kt rename to features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/SecurityAndPrivacyNavigator.kt index 5a3857ee5b..3b71868bbf 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyNavigator.kt +++ b/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/SecurityAndPrivacyNavigator.kt @@ -6,7 +6,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.securityandprivacy +package io.element.android.features.securityandprivacy.impl import com.bumble.appyx.core.plugin.Plugin import com.bumble.appyx.navmodel.backstack.BackStack diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/EditRoomAddressEvents.kt b/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/editroomaddress/EditRoomAddressEvents.kt similarity index 83% rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/EditRoomAddressEvents.kt rename to features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/editroomaddress/EditRoomAddressEvents.kt index a21eaa1db3..e42236d31c 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/EditRoomAddressEvents.kt +++ b/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/editroomaddress/EditRoomAddressEvents.kt @@ -6,7 +6,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.securityandprivacy.editroomaddress +package io.element.android.features.securityandprivacy.impl.editroomaddress sealed interface EditRoomAddressEvents { data object Save : EditRoomAddressEvents diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/EditRoomAddressNode.kt b/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/editroomaddress/EditRoomAddressNode.kt similarity index 87% rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/EditRoomAddressNode.kt rename to features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/editroomaddress/EditRoomAddressNode.kt index 415654aa35..ba92cfb6d0 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/EditRoomAddressNode.kt +++ b/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/editroomaddress/EditRoomAddressNode.kt @@ -6,7 +6,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.securityandprivacy.editroomaddress +package io.element.android.features.securityandprivacy.impl.editroomaddress import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier @@ -17,7 +17,7 @@ import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode -import io.element.android.features.roomdetails.impl.securityandprivacy.SecurityAndPrivacyNavigator +import io.element.android.features.securityandprivacy.impl.SecurityAndPrivacyNavigator import io.element.android.libraries.di.RoomScope @ContributesNode(RoomScope::class) diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/EditRoomAddressPresenter.kt b/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/editroomaddress/EditRoomAddressPresenter.kt similarity index 97% rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/EditRoomAddressPresenter.kt rename to features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/editroomaddress/EditRoomAddressPresenter.kt index 79f9d21b13..8dcea0d880 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/EditRoomAddressPresenter.kt +++ b/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/editroomaddress/EditRoomAddressPresenter.kt @@ -6,7 +6,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.securityandprivacy.editroomaddress +package io.element.android.features.securityandprivacy.impl.editroomaddress import androidx.compose.runtime.Composable import androidx.compose.runtime.MutableState @@ -20,7 +20,7 @@ import androidx.compose.runtime.setValue import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedFactory import dev.zacsweers.metro.AssistedInject -import io.element.android.features.roomdetails.impl.securityandprivacy.SecurityAndPrivacyNavigator +import io.element.android.features.securityandprivacy.impl.SecurityAndPrivacyNavigator import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.architecture.runCatchingUpdatingState diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/EditRoomAddressState.kt b/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/editroomaddress/EditRoomAddressState.kt similarity index 88% rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/EditRoomAddressState.kt rename to features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/editroomaddress/EditRoomAddressState.kt index 3aabf06f0c..89315ab8ce 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/EditRoomAddressState.kt +++ b/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/editroomaddress/EditRoomAddressState.kt @@ -6,7 +6,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.securityandprivacy.editroomaddress +package io.element.android.features.securityandprivacy.impl.editroomaddress import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.matrix.ui.room.address.RoomAddressValidity diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/EditRoomAddressStateProvider.kt b/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/editroomaddress/EditRoomAddressStateProvider.kt similarity index 94% rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/EditRoomAddressStateProvider.kt rename to features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/editroomaddress/EditRoomAddressStateProvider.kt index 22b0021416..7b82175bb7 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/EditRoomAddressStateProvider.kt +++ b/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/editroomaddress/EditRoomAddressStateProvider.kt @@ -6,7 +6,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.securityandprivacy.editroomaddress +package io.element.android.features.securityandprivacy.impl.editroomaddress 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/securityandprivacy/editroomaddress/EditRoomAddressView.kt b/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/editroomaddress/EditRoomAddressView.kt similarity index 96% rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/EditRoomAddressView.kt rename to features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/editroomaddress/EditRoomAddressView.kt index 5a893c60da..da18b963fa 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/EditRoomAddressView.kt +++ b/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/editroomaddress/EditRoomAddressView.kt @@ -6,7 +6,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.securityandprivacy.editroomaddress +package io.element.android.features.securityandprivacy.impl.editroomaddress import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.consumeWindowInsets @@ -21,7 +21,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource 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.features.securityandprivacy.impl.R import io.element.android.libraries.designsystem.components.async.AsyncActionView import io.element.android.libraries.designsystem.components.async.AsyncActionViewDefaults import io.element.android.libraries.designsystem.components.button.BackButton diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/RoomAlias.kt b/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/editroomaddress/RoomAlias.kt similarity index 87% rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/RoomAlias.kt rename to features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/editroomaddress/RoomAlias.kt index 0624939177..f9ae4bf958 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/RoomAlias.kt +++ b/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/editroomaddress/RoomAlias.kt @@ -6,7 +6,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.securityandprivacy.editroomaddress +package io.element.android.features.securityandprivacy.impl.editroomaddress import io.element.android.libraries.matrix.api.core.RoomAlias diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyEvents.kt b/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/root/SecurityAndPrivacyEvents.kt similarity index 92% rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyEvents.kt rename to features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/root/SecurityAndPrivacyEvents.kt index f5afb0c335..8119ddb0c4 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyEvents.kt +++ b/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/root/SecurityAndPrivacyEvents.kt @@ -6,7 +6,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.securityandprivacy +package io.element.android.features.securityandprivacy.impl.root sealed interface SecurityAndPrivacyEvents { data object EditRoomAddress : SecurityAndPrivacyEvents diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyNode.kt b/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/root/SecurityAndPrivacyNode.kt similarity index 89% rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyNode.kt rename to features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/root/SecurityAndPrivacyNode.kt index 219e4b092f..87ba27cb02 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyNode.kt +++ b/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/root/SecurityAndPrivacyNode.kt @@ -6,7 +6,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.securityandprivacy +package io.element.android.features.securityandprivacy.impl.root import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier @@ -17,6 +17,7 @@ import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode +import io.element.android.features.securityandprivacy.impl.SecurityAndPrivacyNavigator import io.element.android.libraries.di.RoomScope @ContributesNode(RoomScope::class) diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyPresenter.kt b/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/root/SecurityAndPrivacyPresenter.kt similarity index 97% rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyPresenter.kt rename to features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/root/SecurityAndPrivacyPresenter.kt index ae093c6bc8..7c0c04f8c3 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyPresenter.kt +++ b/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/root/SecurityAndPrivacyPresenter.kt @@ -6,7 +6,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.securityandprivacy +package io.element.android.features.securityandprivacy.impl.root import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect @@ -21,8 +21,9 @@ import androidx.compose.runtime.setValue import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedFactory import dev.zacsweers.metro.AssistedInject -import io.element.android.features.roomdetails.impl.securityandprivacy.editroomaddress.matchesServer -import io.element.android.features.roomdetails.impl.securityandprivacy.permissions.securityAndPrivacyPermissionsAsState +import io.element.android.features.securityandprivacy.impl.SecurityAndPrivacyNavigator +import io.element.android.features.securityandprivacy.impl.editroomaddress.matchesServer +import io.element.android.features.securityandprivacy.api.securityAndPrivacyPermissionsAsState import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.architecture.Presenter diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyState.kt b/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/root/SecurityAndPrivacyState.kt similarity index 93% rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyState.kt rename to features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/root/SecurityAndPrivacyState.kt index cfba61341e..be9c24dc65 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyState.kt +++ b/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/root/SecurityAndPrivacyState.kt @@ -6,9 +6,9 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.securityandprivacy +package io.element.android.features.securityandprivacy.impl.root -import io.element.android.features.roomdetails.impl.securityandprivacy.permissions.SecurityAndPrivacyPermissions +import io.element.android.features.securityandprivacy.api.SecurityAndPrivacyPermissions import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.architecture.AsyncData import kotlinx.collections.immutable.toImmutableSet diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyStateProvider.kt b/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/root/SecurityAndPrivacyStateProvider.kt similarity index 95% rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyStateProvider.kt rename to features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/root/SecurityAndPrivacyStateProvider.kt index 135d6c48d6..c13fc36d34 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyStateProvider.kt +++ b/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/root/SecurityAndPrivacyStateProvider.kt @@ -6,10 +6,10 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.securityandprivacy +package io.element.android.features.securityandprivacy.impl.root import androidx.compose.ui.tooling.preview.PreviewParameterProvider -import io.element.android.features.roomdetails.impl.securityandprivacy.permissions.SecurityAndPrivacyPermissions +import io.element.android.features.securityandprivacy.api.SecurityAndPrivacyPermissions import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.architecture.AsyncData diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyView.kt b/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/root/SecurityAndPrivacyView.kt similarity index 98% rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyView.kt rename to features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/root/SecurityAndPrivacyView.kt index b32654ccb1..7eeabba3c0 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyView.kt +++ b/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/root/SecurityAndPrivacyView.kt @@ -6,7 +6,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.securityandprivacy +package io.element.android.features.securityandprivacy.impl.root import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -30,7 +30,7 @@ import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp import io.element.android.compound.theme.ElementTheme import io.element.android.compound.tokens.generated.CompoundIcons -import io.element.android.features.roomdetails.impl.R +import io.element.android.features.securityandprivacy.impl.R import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.architecture.coverage.ExcludeFromCoverage import io.element.android.libraries.designsystem.components.async.AsyncActionView @@ -143,7 +143,7 @@ private fun SecurityAndPrivacyToolbar( ) { TopAppBar( modifier = modifier, - titleStr = stringResource(R.string.screen_room_details_security_and_privacy_title), + titleStr = stringResource(R.string.screen_security_and_privacy_title), navigationIcon = { BackButton(onClick = onBackClick) }, actions = { TextButton( diff --git a/features/securityandprivacy/impl/src/main/res/values-be/translations.xml b/features/securityandprivacy/impl/src/main/res/values-be/translations.xml new file mode 100644 index 0000000000..166afb9568 --- /dev/null +++ b/features/securityandprivacy/impl/src/main/res/values-be/translations.xml @@ -0,0 +1,5 @@ + + + "Папрасіце далучыцца" + "Хто заўгодна" + \ No newline at end of file diff --git a/features/securityandprivacy/impl/src/main/res/values-bg/translations.xml b/features/securityandprivacy/impl/src/main/res/values-bg/translations.xml new file mode 100644 index 0000000000..7ae4ba25cf --- /dev/null +++ b/features/securityandprivacy/impl/src/main/res/values-bg/translations.xml @@ -0,0 +1,23 @@ + + + "Добавяне на адрес на стаята" + "Да, включване на шифроването" + "Да се включи ли шифроването?" + "Веднъж включено, шифроването не може да бъде изключено." + "Включване на шифроване от край до край" + "Всеки може да намери и да се присъедини" + "Хората могат да се присъединят само ако са поканени" + "Само с покана" + "Достъп до стаята" + "Пространствата в момента не се поддържат" + "Членове на пространството" + "Ще ви е необходим адрес на стаята, за да я направите видима в директорията на стаите." + "Видима в директорията на обществените стаи" + "Кой може да чете историята" + "Само за членове откакто са поканени" + "Само за членове от избирането на тази опция" + "Защита и поверителност" + "Шифроване" + "Всеки" + "Видимост на стаята" + \ No newline at end of file diff --git a/features/securityandprivacy/impl/src/main/res/values-cs/translations.xml b/features/securityandprivacy/impl/src/main/res/values-cs/translations.xml new file mode 100644 index 0000000000..299ac2b643 --- /dev/null +++ b/features/securityandprivacy/impl/src/main/res/values-cs/translations.xml @@ -0,0 +1,38 @@ + + + "Aby byla místnost v adresáři viditelná, je třeba zadat její adresu." + "Adresa místnosti" + "Přidat adresu místnosti" + "Kdokoli může požádat o vstup do místnosti, ale správce nebo moderátor bude muset žádost přijmout." + "Ano, povolit šifrování" + "Po aktivaci nelze šifrování místnosti deaktivovat. Historie zpráv bude viditelná pouze pro členy místnosti od doby, kdy byli pozváni nebo od té doby, co do místnosti vstoupili. +Nikdo kromě členů místnosti nebude moci číst zprávy. To může bránit správnému fungování robotů a propojení. +Nedoporučujeme povolovat šifrování pro místnosti, které může kdokoli najít a vstoupit do nich." + "Povolit šifrování?" + "Jakmile je povoleno, šifrování nelze zakázat." + "Povolit koncové šifrování" + "Každý může najít a vstoupit" + "Kdokoliv" + "Lidé mohou vstoupit, pouze pokud jsou pozváni" + "Pouze pro zvané" + "Přístup do místnosti" + "Prostory nejsou aktuálně podporovány" + "Členové prostoru" + "Budete potřebovat adresu místnosti, aby byla viditelná v adresáři místností." + "Adresa místnosti" + "Umožněte nalezení této místnosti prohledáním adresáře veřejných místností na %1$s" + "Viditelné v adresáři veřejných místností" + "Kdo může číst historii" + "Pouze členové od té doby, co byli pozváni" + "Pouze členové od výběru této možnosti" + "Adresy místností představují způsoby, jak najít místnosti a získat k nim přístup. Díky tomu můžete svoji místnost snadno sdílet s ostatními. +Můžete se rozhodnout publikovat svou místnost ve veřejném adresáři místnosti vašeho domovského serveru." + "Publikování místnosti" + "Adresy místností představují způsoby, jak najít místnosti a získat k nim přístup. Díky tomu můžete svoji místnost snadno sdílet s ostatními. +Adresa je také vyžadována pro zobrazení místnosti v adresáři veřejných místností %1$s." + "Zabezpečení a soukromí" + "Požádat o připojení" + "Šifrování" + "Kdokoliv" + "Viditelnost místnosti" + \ No newline at end of file diff --git a/features/securityandprivacy/impl/src/main/res/values-cy/translations.xml b/features/securityandprivacy/impl/src/main/res/values-cy/translations.xml new file mode 100644 index 0000000000..249fa6a1da --- /dev/null +++ b/features/securityandprivacy/impl/src/main/res/values-cy/translations.xml @@ -0,0 +1,38 @@ + + + "Bydd angen cyfeiriad ystafell arnoch i\'w wneud yn weladwy yn y cyfeiriadur." + "Cyfeiriad yr ystafell" + "Ychwanegu cyfeiriad ystafell" + "Gall unrhyw un ofyn am gael ymuno â\'r ystafell ond bydd rhaid i weinyddwr neu gymedrolwr dderbyn y cais." + "Iawn, galluogi amgryptio" + "Unwaith y bydd wedi\'i alluogi, does dim modd analluogi amgryptio ar gyfer ystafell, dim ond ar gyfer aelodau\'r ystafell y bydd hanes neges yn weladwy ers iddyn nhw gael eu gwahodd neu ers iddyn nhw ymuno â\'r ystafell. +Fydd neb ar wahân i aelodau\'r ystafell yn gallu darllen negeseuon. Gall hyn atal botiau a phontydd i weithio\'n gywir. +Nid ydym yn argymell galluogi amgryptio ar gyfer ystafelloedd y gall unrhyw un ddod o hyd iddynt ac ymuno â nhw." + "Galluogi amgryptio?" + "Unwaith y bydd wedi\'i alluogi, does dim modd analluogi amgryptio." + "Galluogi amgryptio o\'r dechrau i\'r diwedd" + "Gall unrhyw un ddod o hyd iddo ac ymuno" + "Unrhyw un" + "Dim ond os cawn nhw wahoddiad gall pobl ymuno" + "Gwahoddiad yn unig" + "Mynediad ystafell" + "Nid yw gofodau\'n cael eu cefnogi ar hyn o bryd" + "Aelodau gofod" + "Bydd angen cyfeiriad ystafell arnoch er mwyn ei wneud yn weladwy yn y cyfeiriadur ystafelloedd." + "Cyfeiriad yr ystafell" + "Caniatáu i\'r ystafell hon gael ei chanfod trwy chwilio cyfeiriadur ystafelloedd cyhoeddus %1$s" + "Gweladwy yn y cyfeiriadur ystafelloedd cyhoeddus" + "Pwy all ddarllen hanes" + "Yn aelodau ond dim ond ers cael eu gwahodd" + "Yn aelodau dim ond ers dewis y dewis hwn" + "Mae cyfeiriadau ystafelloedd yn ffyrdd o ddod o hyd i ystafelloedd a chael mynediad iddyn nhw. Mae hyn hefyd yn sicrhau y gallwch chi rannu\'ch ystafell yn hawdd ag eraill. +Gallwch ddewis cyhoeddi eich ystafell yng ngweinydd cartref eich cyfeiriadur ystafelloedd cyhoeddus." + "Cyhoeddi ystafell" + "Mae cyfeiriadau ystafelloedd yn ffyrdd o ddod o hyd i ystafelloedd a chael mynediad iddyn nhw. Mae hyn hefyd yn sicrhau y gallwch chi rannu\'ch ystafell yn hawdd ag eraill. +Mae angen y cyfeiriad hefyd i wneud yr ystafell yn weladwy yng nghyfeiriadur ystafell gyhoeddus %1$s." + "Diogelwch a phreifatrwydd" + "Gofyn i gael ymuno" + "Amgryptiad" + "Unrhyw un" + "Gwelededd yr ystafell" + \ No newline at end of file diff --git a/features/securityandprivacy/impl/src/main/res/values-da/translations.xml b/features/securityandprivacy/impl/src/main/res/values-da/translations.xml new file mode 100644 index 0000000000..1a8a9046b6 --- /dev/null +++ b/features/securityandprivacy/impl/src/main/res/values-da/translations.xml @@ -0,0 +1,36 @@ + + + "Du skal bruge en rum-adresse for at gøre den synlig i kataloget." + "Rummets adresse" + "Tilføj adresse på rum" + "Alle kan bede om at deltage i lokalet, men en administrator eller moderator skal acceptere anmodningen." + "Ja, aktivér kryptering" + "Når det først er aktiveret, kan kryptering for et rum ikke deaktiveres igen. Beskedhistorik vil kun være synlig for rummedlemmer, siden de blev inviteret, eller siden de blev medlem af rummet. +Ingen udover medlemmer af rummet vil være i stand til at læse beskeder. Dette kan forhindre bots og broer i at fungere korrekt. +Vi anbefaler ikke at aktivere kryptering for rum, som alle kan finde og deltage i." + "Aktivér kryptering?" + "Når kryptering først er aktiveret, kan den ikke deaktiveres igen." + "Aktivér end-to-end-kryptering" + "Alle kan finde og deltage" + "Andre kan kun deltage, hvis de bliver inviteret" + "Kun med invitation" + "Adgang til rummet" + "Grupper understøttes ikke i øjeblikket" + "Medlemmer af gruppen" + "Du skal bruge en adresse til rummet, for at gøre den synlig i rum-registeret." + "Tillad, at dette rum kan findes ved at søge i %1$s fortegnelse over offentlige rum" + "Synlig i det offentlige register over rum" + "Hvem kan læse historikken?" + "Kun medlemmer, efter de blev inviteret" + "Kun medlemmer siden valg af denne mulighed" + "Rum-adresser er en måde at finde og få adgang til værelser på. Dette sikrer også, at du nemt kan dele dit rum med andre. +Du kan vælge at offentliggøre dit rum i din hjemmeservers offentlige katalog over rum." + "Udgivelse af rum" + "Rum-adresser er måder at finde og få adgang til rum på. Dette sikrer også, at du nemt kan dele dit rum med andre. +Adressen er også påkrævet for at gøre rummet synligt i det %1$s offentlige register." + "Sikkerhed og privatliv" + "Spørg om at deltage" + "Kryptering" + "Enhver" + "Rummets synlighed" + \ No newline at end of file diff --git a/features/securityandprivacy/impl/src/main/res/values-de/translations.xml b/features/securityandprivacy/impl/src/main/res/values-de/translations.xml new file mode 100644 index 0000000000..cc311a70f4 --- /dev/null +++ b/features/securityandprivacy/impl/src/main/res/values-de/translations.xml @@ -0,0 +1,38 @@ + + + "Du benötigst eine Chat-Adresse, um den Chat im Verzeichnis sichtbar zu machen." + "Chat-Adresse" + "Chat-Adresse hinzufügen" + "Jeder kann den Beitritt zum Chat anfragen, aber ein Admin oder Moderator müssen die Anfrage akzeptieren." + "Ja, Verschlüsselung aktivieren" + "Einmal angeschaltet kann die Verschlüsselung für einen Chat nicht mehr deaktiviert werden. Der Nachrichtenverlauf ist für Mitglieder nur sichtbar, seit sie eingeladen wurden oder dem Chat beigetreten sind. +Niemand außer den Chat Mitgliedern kann Nachrichten lesen. Dies kann verhindern, dass Bots und Bridges richtig funktionieren. +Wir empfehlen keine Verschlüsselung für Chats zu aktivieren, die jeder finden und denen jeder beitreten darf." + "Verschlüsselung aktivieren?" + "Einmal angeschaltet kann die Verschlüsselung nicht mehr deaktiviert werden." + "Ende-zu-Ende-Verschlüsselung aktivieren" + "Jeder kann diesen Chat finden und ihm beitreten" + "Alle" + "Personen können nur beitreten, wenn sie eingeladen werden." + "Nur auf Einladung" + "Chat Zugang" + "Spaces werden zur Zeit nicht unterstützt." + "Spacemitglieder" + "Du benötigst eine Chat-Adresse, um den Chat im Verzeichnis sichtbar zu machen." + "Chatroomadresse" + "Erlaube das Auffinden dieses Chats durch Suche im öffentlichen Verzeichnis von %1$s" + "Sichtbar im öffentlichen Verzeichnis" + "Wer hat Zugriff auf den Nachrichtenverlauf" + "Nur Mitglieder, aber erst seit deren Einladung" + "Nur Mitglieder seit Auswahl dieser Option" + "Chat-Adressen machen es möglich, Chats zu finden und ihnen beizutreten. Dies erleichtert es, Chats mit anderen zu teilen. +Auf Wunsch kannst du deinen Chat im öffentlichen Verzeichnis deines Homeservers veröffentlichen." + "Veröffentlichung von Chats" + "Chat-Adressen machen es möglich, Chats zu finden und ihnen beizutreten. Dies erleichtert es, Chats mit anderen zu teilen. +Die Adresse ist auch erforderlich, um den Chat im öffentlichen Verzeichnis von %1$s zu veröffentlichen." + "Sicherheit & Datenschutz" + "Beitritt beantragen" + "Verschlüsselung" + "Jeder" + " Sichtbarkeit des Chats" + \ No newline at end of file diff --git a/features/securityandprivacy/impl/src/main/res/values-el/translations.xml b/features/securityandprivacy/impl/src/main/res/values-el/translations.xml new file mode 100644 index 0000000000..8e2f0ad361 --- /dev/null +++ b/features/securityandprivacy/impl/src/main/res/values-el/translations.xml @@ -0,0 +1,37 @@ + + + "Θα χρειαστείτε μια διεύθυνση αίθουσας για να την κάνετε ορατή στον κατάλογο." + "Διεύθυνση αίθουσας" + "Προσθήκη διεύθυνσης αίθουσας" + "Οποιοσδήποτε μπορεί να ζητήσει να συμμετάσχει στην αίθουσα, αλλά ένας διαχειριστής ή συντονιστής θα πρέπει να αποδεχτεί το αίτημα." + "Ναι, ενεργοποιήστε την κρυπτογράφηση" + "Μόλις ενεργοποιηθεί, η κρυπτογράφηση για μια αίθουσα δεν μπορεί να απενεργοποιηθεί, το ιστορικό μηνυμάτων θα είναι ορατό μόνο για τα μέλη της αίθουσας από τότε που προσκλήθηκαν ή από τότε που συμμετείχαν στην αίθουσα. +Κανείς άλλος εκτός από τα μέλη της αίθουσας δεν θα μπορεί να διαβάσει τα μηνύματα. Αυτό μπορεί να εμποδίσει τη σωστή λειτουργία των bots και των γεφυρών. +Δεν συνιστούμε την ενεργοποίηση της κρυπτογράφησης για αίθουσες που μπορεί να βρει και να συμμετάσχει ο καθένας." + "Ενεργοποίηση κρυπτογράφησης;" + "Μόλις ενεργοποιηθεί, η κρυπτογράφηση δεν μπορεί να απενεργοποιηθεί." + "Ενεργοποίηση κρυπτογράφησης από άκρο σε άκρο" + "Οποιοσδήποτε μπορεί να βρει και να συμμετάσχει" + "Οποιοσδήποτε" + "Τα άτομα μπορούν να συμμετάσχουν μόνο εάν έχουν προσκληθεί" + "Μόνο πρόσκληση" + "Πρόσβαση στην αίθουσα" + "Οι χώροι δεν υποστηρίζονται προς το παρόν" + "Μέλη χώρου" + "Θα χρειαστείτε μια διεύθυνση αίθουσας για να την κάνετε ορατή στον κατάλογο αιθουσών." + "Επιστρέψτε την εύρεση αυτής της αίθουσας με αναζήτηση στον κατάλογο %1$s δημοσίων αιθουσών" + "Ορατή στον κατάλογο δημόσιων αιθουσών" + "Ποιος μπορεί να διαβάσει το ιστορικό" + "Μόνο μέλη από τη στιγμή που προσκλήθηκαν" + "Μόνο για μέλη μετά από αυτήν την επιλογή" + "Οι διευθύνσεις αιθουσών είναι τρόποι εύρεσης και πρόσβασης σε αίθουσες. Αυτό διασφαλίζει επίσης ότι μπορείτε εύκολα να μοιραστείτε την αίθουσα με άλλους. +Μπορείτε να επιλέξετε να δημοσιεύσετε την αίθουσά σας στον δημόσιο κατάλογο αιθουσών του αρχικού διακομιστή σας." + "Δημοσίευση αίθουσας" + "Οι διευθύνσεις αιθουσών είναι τρόποι εύρεσης και πρόσβασης σε αίθουσες. Αυτό εξασφαλίζει επίσης ότι μπορείτε εύκολα να μοιραστείτε την αίθουσα με άλλους. +Η διεύθυνση απαιτείται επίσης για να γίνει η αίθουσα ορατή στον δημόσιο κατάλογο αιθουσών %1$s." + "Ασφάλεια & απόρρητο" + "Αίτημα συμμετοχής" + "Κρυπτογράφηση" + "Οποιοσδήποτε" + "Ορατότητα αίθουσας" + \ No newline at end of file diff --git a/features/securityandprivacy/impl/src/main/res/values-es/translations.xml b/features/securityandprivacy/impl/src/main/res/values-es/translations.xml new file mode 100644 index 0000000000..912ab9db68 --- /dev/null +++ b/features/securityandprivacy/impl/src/main/res/values-es/translations.xml @@ -0,0 +1,36 @@ + + + "Necesitarás una dirección de sala para que sea visible en el directorio." + "Dirección de la sala" + "Agregar dirección de sala" + "Cualquiera puede solicitar unirse a la sala, pero un administrador o moderador tendrá que aceptar la solicitud." + "Sí, activar cifrado" + "Una vez activado, el cifrado de una sala no se puede desactivar. El historial de mensajes solo será visible para los miembros de la sala desde que fueron invitados o desde que se unieron a la sala. +Nadie más que los miembros de la sala podrán leer los mensajes. Esto puede impedir que los bots y los puentes funcionen correctamente. +No recomendamos habilitar el cifrado para las salas que cualquiera pueda encontrar y unirse." + "¿Activar cifrado?" + "Una vez activado, el cifrado no se puede desactivar." + "Activar el cifrado de extremo a extremo" + "Cualquiera puede encontrarla y unirse" + "Las personas solo pueden unirse si están invitadas" + "Solo por invitación" + "Acceso a la sala" + "No se admiten los espacios por el momento." + "Miembros del espacio" + "Necesitarás una dirección de sala para que esta sea visible en el directorio de salas." + "Permite encontrar esta sala buscando en el directorio de salas públicas de %1$s" + "Visible en el directorio de salas públicas" + "Quién puede leer el historial" + "Solo participantes desde que fueron invitados" + "Solo participantes desde que se selecciona esta opción" + "Las direcciones de sala son formas de buscar salas y acceder a ellas. Esto también garantiza que puedas compartir fácilmente tu sala con otras personas. +Puedes optar por publicar tu sala en el directorio de salas públicas de tu servidor base." + "Publicación de la sala" + "Las direcciones de sala son un medio para buscar y acceder a salas. También te permiten compartir fácilmente tu sala con otras personas. +La dirección también es necesaria para hacer visible la sala en el directorio de salas públicas de %1$s." + "Seguridad y privacidad" + "Solicitud para unirse" + "Cifrado" + "Cualquiera" + "Visibilidad de la sala" + \ No newline at end of file diff --git a/features/securityandprivacy/impl/src/main/res/values-et/translations.xml b/features/securityandprivacy/impl/src/main/res/values-et/translations.xml new file mode 100644 index 0000000000..77dd390f52 --- /dev/null +++ b/features/securityandprivacy/impl/src/main/res/values-et/translations.xml @@ -0,0 +1,40 @@ + + + "Selleks, et jututuba oleks nähtav jututubade avalikus kataloogis, vajab ta aadressi." + "Muuda aadressi" + "Lisa jututoa aadress" + "Kõik võivad paluda jututoaga liitumist, kuid peakasutaja peab sellega nõustuma." + "Jah, lülita krüptimine sisse" + "Kui jututoa krüptimine on kord sisse lülitatud, siis seda välja lülitada ei saa. Sõnumite ajalugu on nähtav vaid jututoa liikmetele alates kutse saamise või liitumise hetkest. +Keegi teine peale jututoa liikmete ei saa sõnumeid lugeda. See võib takistada suhtlusrobotite ja/või võrgusildade toimimist. +Me ei soovita krüptimise kasutamist selliste avalike jututubade puhul, millega kõik võivad liituda." + "Kas võtame krüptimise kasutusele?" + "Kui krüptimine on kasutusel, siis seda enam väljalülitada ei saa." + "Võta läbiv krüptimine kasutusele" + "Kõik võivad jututoaga liituda" + "Avalik" + "Liituda saab vaid kutse olemasolul" + "Privaatne" + "Ligipääs" + "Kogukondade tugi veel puudub" + "Kogukonna liikmed" + "Et jututuba oleks nähtav avalikus kataloogis, peab tal olema aadress." + "Selleks, et jututuba oleks nähtav jututubade kataloogis, vajab ta aadressi." + "Avaldatud aadress" + "Võimalda leida seda jututuba avalikust kataloogist otsides „%1$s“" + "Luba leitavus avaliku kataloogi otsingust." + "Nähtav avalikus kataloogis" + "Kes võivad lugeda jututoa ajalugu" + "Liikmed peale kutse saamist" + "Liikmed peale selle valiku sisselülitamist" + "Jututoa aadressid annavad võimaluse neid leida ning saada neile ligi. Samuti võimaldab see jututuba teistele huvilistele jagada. +Lisaks võid sa jututoa avaldada oma koduserveri avalikus jututubade kataloogis." + "Jututoa avaldamine" + "Jututoa aadressid annavad võimaluse neid leida ning saada neile ligi. Samuti võimaldab see jututuba teistele huvilistele jagada. +Lisaks on aadress vajalik, et jututuba oleks %1$s serveri avalikus jututubade kataloogis nähtav." + "Turvalisus ja privaatsus" + "Küsi võimalust liitumiseks" + "Krüptimine" + "Kõik" + "Jututoa nähtavus" + \ No newline at end of file diff --git a/features/securityandprivacy/impl/src/main/res/values-eu/translations.xml b/features/securityandprivacy/impl/src/main/res/values-eu/translations.xml new file mode 100644 index 0000000000..d7758c1f81 --- /dev/null +++ b/features/securityandprivacy/impl/src/main/res/values-eu/translations.xml @@ -0,0 +1,22 @@ + + + "Gelaren helbidea" + "Gehitu gelaren helbidea" + "Bai, gaitu zifratzea" + "Edonork aurkitu eta bat egin dezake" + "Gonbidatutako pertsonak bakarrik sartu ahal izango dira" + "Gonbidapen bidez" + "Gelarako sarbidea" + "Gaur-gaurkoz ez da guneekin bateragarria" + "Guneko kideak" + "Gelarako helbideren bat beharko duzu gelen direktorioan ikusgai egon dadila nahi baduzu." + "Gelaren helbidea" + "Gela publikoen direktorioan ikusgai" + "Nork irakur dezake historia" + "Kideek bakarrik, gonbidatu zituztenetik" + "Kideek bakarrik, aukera hau hautatu zenetik" + "Segurtasuna eta pribatutasuna" + "Zifratzea" + "Edonork" + "Gelaren ikusgarritasuna" + \ No newline at end of file diff --git a/features/securityandprivacy/impl/src/main/res/values-fa/translations.xml b/features/securityandprivacy/impl/src/main/res/values-fa/translations.xml new file mode 100644 index 0000000000..d3e96712de --- /dev/null +++ b/features/securityandprivacy/impl/src/main/res/values-fa/translations.xml @@ -0,0 +1,22 @@ + + + "نشانی اتاق" + "افزودن نشانی اتاق" + "بله. به کار انداختن رمزنگاری" + "رمزگذاری فعال شود؟" + "پس از به کار افتادن، رمزنگاری قابل از کار انداختن نیست." + "هرکسی می‌تواند یافته و بپیوندد" + "هرکسی" + "افراد فقط در صورت دعوت می‌توانند بپیوندند" + "فقط دعوتی" + "دسترسی اتاق" + "در حال حاضر فضاها پشتیبانی نمی‌شوند" + "اعضای فضا" + "نشانی اتاق" + "انتشار اتاق" + "امنیت و محرمانگی" + "درخواست دعوت" + "رمزنگاری" + "هرکسی" + "نمایانی اتاق" + \ No newline at end of file diff --git a/features/securityandprivacy/impl/src/main/res/values-fi/translations.xml b/features/securityandprivacy/impl/src/main/res/values-fi/translations.xml new file mode 100644 index 0000000000..87440b626a --- /dev/null +++ b/features/securityandprivacy/impl/src/main/res/values-fi/translations.xml @@ -0,0 +1,38 @@ + + + "Tarvitset huoneen osoitteen, jotta se näkyy hakemistossa." + "Huoneen osoite" + "Lisää huoneen osoite" + "Kuka tahansa voi pyytää saada liittyä huoneeseen, mutta ylläpitäjän tai valvojan on hyväksyttävä pyyntö." + "Kyllä, ota salaus käyttöön" + "Kun salaus on kerran otettu käyttöön, sitä ei voi poistaa käytöstä. Viestihistoria näkyy vain huoneen jäsenille kutsusta tai liittymisestä lähtien. +Kukaan muu kuin huoneen jäsenet eivät pysty lukemaan viestejä. Tämä voi estää botteja tai siltoja toimimasta oikein. +Emme suosittele salauksen ottamista käyttöön huoneissa, jotka kuka tahansa voi löytää ja joihin kuka tahansa voi liittyä." + "Otetaanko salaus käyttöön?" + "Kun salaus on kerran otettu käyttöön, sitä ei voi poistaa käytöstä." + "Ota päästä päähän -salaus käyttöön" + "Kuka tahansa voi löytää ja liittyä." + "Kuka tahansa" + "Vain kutsutut henkilöt voivat liittyä" + "Vain kutsutut" + "Huoneeseen pääsy" + "Tiloja ei tällä hetkellä tueta" + "Tilan jäsenet" + "Tarvitset huoneen osoitteen, jotta se näkyy huonehakemistossa." + "Huoneen osoite" + "Salli tämän huoneen löytäminen hakemalla %1$s -palvelimen julkisesta huonehakemistosta." + "Näkyy julkisessa huonehakemistossa" + "Kuka voi lukea viestihistoriaa" + "Jäsenet vasta kutsusta lähtien" + "Jäsenet tämän vaihtoehdon valinnan jälkeen" + "Huoneosoitteet ovat tapoja löytää ja käyttää huoneita. Näin voit myös helposti jakaa huoneesi muiden kanssa. +Voit halutessasi julkaista huoneesi kotipalvelimesi julkisessa huonehakemistossa." + "Huoneen julkaiseminen" + "Huoneosoitteet ovat tapoja löytää ja käyttää huoneita. Näin voit myös helposti jakaa huoneesi muiden kanssa. +Osoitetta tarvitaan myös, jotta huone näkyy %1$s -palvelimen julkisessa huonehakemistossa." + "Turvallisuus ja yksityisyys" + "Pyydä liittymistä" + "Salaus" + "Kuka tahansa" + "Huoneen näkyvyys" + \ No newline at end of file diff --git a/features/securityandprivacy/impl/src/main/res/values-fr/translations.xml b/features/securityandprivacy/impl/src/main/res/values-fr/translations.xml new file mode 100644 index 0000000000..7a4be5d37a --- /dev/null +++ b/features/securityandprivacy/impl/src/main/res/values-fr/translations.xml @@ -0,0 +1,38 @@ + + + "Vous aurez besoin d\'une adresse de salon pour le rendre visible dans le répertoire." + "Adresse du salon" + "Ajouter l\'adresse du salon" + "N\'importe qui peut demander à rejoindre le salon, mais un administrateur ou un modérateur devra accepter la demande." + "Oui, activer le chiffrement" + "Une fois activé, le chiffrement d\'un salon ne peut pas être désactivé. L\'historique des messages ne sera visible que pour les membres depuis qu\'ils ont été invités ou depuis qu\'ils ont rejoint le salon. +Personne d\'autre que les membres du salon ne pourra lire les messages. Cela peut empêcher les bots et les bridges de fonctionner correctement. +Nous ne recommandons pas d\'activer le chiffrement pour les salons que tout le monde peut trouver et rejoindre." + "Activer le chiffrement ?" + "Une fois activé, le chiffrement ne peut pas être désactivé." + "Activer le chiffrement de bout en bout" + "Tout le monde peut le trouver et le rejoindre" + "Tout le monde" + "Le salon ne peut être joint que par les personnes invitées" + "Sur invitation uniquement" + "Accès au salon" + "Les Espaces ne sont pas encore supportés" + "Membres de l\'espace" + "Vous aurez besoin de l\'adresse du salon pour le rendre visible dans le répertoire des salons." + "Adresse du salon" + "Autoriser le salon à apparaître dans les résultats de recherche dans le répertoire %1$s des salons publics" + "Visible dans le répertoire des salons publics" + "Qui peux lire l\'historique" + "Les membres uniquement depuis qu\'ils ont été invités" + "Les membres uniquement depuis la sélection de cette option" + "Les adresses de salon sont un moyen de trouver et d\'accéder aux salons. Cela vous permet également de partager facilement votre salon avec d\'autres personnes. +Vous pouvez choisir de publier votre salon dans l\'annuaire des salons publics de votre serveur d’accueil." + "Publication du salon" + "Les adresses de salon sont un moyen de trouver et d\'accéder aux salons. Cela vous permet également de partager facilement votre salon avec d\'autres personnes. +L\'adresse est également requise pour que le salon soit visible dans le répertoire %1$s des salons publics." + "Sécurité & confidentialité" + "Demander à rejoindre" + "Chiffrement" + "Tout le monde" + "Visibilité du salon" + \ No newline at end of file diff --git a/features/securityandprivacy/impl/src/main/res/values-hu/translations.xml b/features/securityandprivacy/impl/src/main/res/values-hu/translations.xml new file mode 100644 index 0000000000..b32923dba6 --- /dev/null +++ b/features/securityandprivacy/impl/src/main/res/values-hu/translations.xml @@ -0,0 +1,40 @@ + + + "Szüksége lesz egy szobacímre, hogy láthatóvá tegye a szobakatalógusban." + "Cím szerkesztése" + "Szobacím hozzáadása" + "Bárki kérhet hozzáférést, de a kérést egy adminisztrátornak kell jóváhagynia." + "Igen, engedélyezze a titkosítást" + "Az engedélyezés után a szoba titkosítása nem tiltható le. Az üzenetek előzményei csak a szobatagok számára láthatók, amikor meghívást kaptak, vagy mióta csatlakoztak a szobához. +A szobatagokon kívül senki sem tudja olvasni az üzeneteket. Ez megakadályozhatja a botok és a hidak megfelelő működését. +Nem javasoljuk a titkosítás engedélyezését az olyan szobákban, amelyeket bárki megtalálhat és csatlakozhat." + "Engedélyezi a titkosítást?" + "Engedélyezés után a titkosítás nem tiltható le." + "Végpontok közötti titkosítás engedélyezése" + "Bárki csatlakozhat." + "Nyilvános" + "Csak a meghívott emberek léphetnek be." + "Privát" + "Hozzáférés" + "A terek jelenleg nem támogatottak" + "A tér tagjai" + "Szüksége lesz egy szobacímre, hogy láthatóvá tegye a szobakatalógusban." + "Szüksége lesz egy szobacímre, hogy láthatóvá váljon a szobakatalógusban." + "Közzétett cím" + "A szoba megtalálhatóvá tétele a(z) %1$s nyilvános szobakatalógusában való kereséssel." + "Lehetővé teszi, hogy a nyilvános szobakatalógusban megtalálható legyen." + "Látható a nyilvános szobakatalógusban" + "Ki olvashatja az előzményeket" + "Csak a tagok, a meghívásuktól kezdődően" + "Csak a tagok, a beállítás választásától kezdődően" + "A szobacímek a szobák megtalálásának és elérésnek módjai. Ez azt is biztosítja, hogy könnyen megoszthatja a szobáját másokkal. +Kiválaszthatja, hogy szobáját közzéteszi-e a Matrix-kiszolgáló nyilvános szobakatalógusában." + "Szoba közzététele" + "A szobacímek a szobák megtalálásának és elérésnek módjai. Ez azt is biztosítja, hogy könnyen megoszthatja a szobáját másokkal. +A cím szükséges ahhoz is, hogy a nyilvános szoba láthatóvá váljon a(z) %1$s kiszolgáló nyilvános szobakatalógusában." + "Biztonság és adatvédelem" + "Csatlakozás kérése" + "Titkosítás" + "Bárki" + "Szoba láthatósága" + \ No newline at end of file diff --git a/features/securityandprivacy/impl/src/main/res/values-in/translations.xml b/features/securityandprivacy/impl/src/main/res/values-in/translations.xml new file mode 100644 index 0000000000..836ad66302 --- /dev/null +++ b/features/securityandprivacy/impl/src/main/res/values-in/translations.xml @@ -0,0 +1,35 @@ + + + "Anda akan memerlukan alamat ruangan untuk membuatnya terlihat dalam direktori." + "Alamat ruangan" + "Tambahkan alamat ruangan" + "Siapa pun dapat meminta untuk bergabung dengan ruangan tetapi administrator atau moderator harus menerima permintaan tersebut." + "Ya, aktifkan enkripsi" + "Setelah diaktifkan, encryption untuk sebuah ruangan tidak dapat dinonaktifkan, Riwayat pesan hanya akan terlihat oleh anggota ruangan sejak mereka diundang atau sejak mereka bergabung dengan ruangan tersebut. +Tidak ada orang lain selain anggota ruangan yang dapat membaca pesan. Hal ini dapat mencegah bot dan jembatan bekerja dengan benar. +Kami tidak menyarankan untuk mengaktifkan enkripsi untuk ruangan yang dapat ditemukan dan diikuti oleh siapa pun." + "Aktifkan enkripsi?" + "Setelah diaktifkan, enkripsi tidak dapat dinonaktifkan." + "Aktifkan enkripsi ujung ke ujung" + "Siapa pun dapat menemukan dan bergabung" + "Orang hanya dapat bergabung jika mereka diundang" + "Hanya undangan" + "Akses ruangan" + "Space saat ini tidak didukung" + "Anggota space" + "Anda memerlukan alamat ruangan agar dapat membuatnya terlihat di direktori ruangan." + "Izinkan ruangan ini ditemukan dengan mencari direktori ruangan %1$s publik" + "Terlihat di direktori ruangan publik" + "Siapa yang bisa membaca riwayat" + "Hanya anggota sejak mereka diundang" + "Hanya anggota sejak memilih opsi ini" + "Alamat ruangan adalah cara untuk menemukan dan mengakses ruangan. Ini juga memastikan Anda dapat dengan mudah berbagi ruangan dengan orang lain. Anda dapat memilih untuk menerbitkan ruangan Anda di direktori ruangan publik homeserver Anda." + "Penerbitan ruangan" + "Alamat ruangan adalah cara untuk menemukan dan mengakses ruangan. Hal ini juga memastikan Anda dapat dengan mudah berbagi ruangan dengan orang lain. +Alamat ini juga diperlukan untuk membuat ruangan terlihat di %1$s direktori ruangan publik." + "Keamanan & privasi" + "Minta untuk bergabung" + "Enkripsi" + "Siapa pun" + "Keterlihatan ruangan" + \ No newline at end of file diff --git a/features/securityandprivacy/impl/src/main/res/values-it/translations.xml b/features/securityandprivacy/impl/src/main/res/values-it/translations.xml new file mode 100644 index 0000000000..2148691b24 --- /dev/null +++ b/features/securityandprivacy/impl/src/main/res/values-it/translations.xml @@ -0,0 +1,37 @@ + + + "Avrai bisogno di un indirizzo della stanza per renderla visibile nell\'elenco." + "Indirizzo della stanza" + "Aggiungi l\'indirizzo della stanza" + "Chiunque può chiedere di entrare nella stanza, ma un amministratore o un moderatore dovrà accettare la richiesta." + "Sì, attiva la crittografia" + "Una volta attivata, la crittografia di una stanza non può essere disattivata, la cronologia dei messaggi sarà visibile solo ai membri della stanza da quando sono stati invitati o da quando sono entrati nella stanza. +Nessuno, oltre ai membri della stanza, sarà in grado di leggere i messaggi. Ciò potrebbe impedire ai bot e ai bridge di funzionare correttamente. +Non consigliamo di attivare la crittografia per le stanze che chiunque può trovare e in cui può entrare." + "Attivare la crittografia?" + "Una volta attivata, la crittografia non può essere disattivata." + "Attiva la crittografia end-to-end" + "Chiunque può trovare ed entrare" + "Chiunque" + "Le persone possono partecipare solo se invitate" + "Solo su invito" + "Accesso alla stanza" + "Gli spazi non sono attualmente supportati" + "Membri dello spazio" + "Per rendere visibile la stanza nell\'elenco delle stanze, è necessario l\'indirizzo della stanza." + "Indirizzo della stanza" + "Consenti la ricerca di questa stanza effettuando una ricerca nell\'elenco delle stanze pubbliche di %1$s" + "Visibile nell\'elenco delle stanze pubbliche" + "Chi può leggere la cronologia messaggi" + "Solo membri da quando sono stati invitati" + "Solo membri da dopo aver selezionato questa opzione" + "Gli indirizzi delle stanze sono modi per trovare e accedervi. In questo modo puoi anche condividere facilmente la tua stanze con altri. +Puoi scegliere di pubblicare la tua stanza nell\'elenco delle stanza pubbliche dell\'homeserver." + "Pubblicazione della stanza" + "Gli indirizzi delle stanze sono modi per trovare e accedere a queste ultime. Questo assicura anche che tu possa condividere facilmente la tua stanza con altri. L\'indirizzo è anche necessario per rendere la stanza visibile in %1$s nell\'elenco delle stanze pubbliche." + "Sicurezza e privacy" + "Chiedi di entrare" + "Crittografia" + "Chiunque" + "Visibilità della stanza" + \ No newline at end of file diff --git a/features/securityandprivacy/impl/src/main/res/values-ko/translations.xml b/features/securityandprivacy/impl/src/main/res/values-ko/translations.xml new file mode 100644 index 0000000000..b144b6bdde --- /dev/null +++ b/features/securityandprivacy/impl/src/main/res/values-ko/translations.xml @@ -0,0 +1,36 @@ + + + "디렉토리에 표시하려면 방 주소가 필요합니다." + "방 주소" + "방 주소 추가" + "누구나 방에 참여 요청을 할 수 있지만, 관리자나 운영자가 요청을 수락해야 합니다." + "예, 암호화 활성화" + "일단 활성화되면, 방의 암호화는 비활성화할 수 없습니다. 메시지 기록은 방에 초대된 후 또는 방에 참여한 이후부터 방 구성원만 볼 수 있습니다. +방 구성원 외에는 아무도 메시지를 읽을 수 없습니다. 이로 인해 봇과 브리지가 제대로 작동하지 않을 수 있습니다. +누구나 찾고 참여할 수 있는 방에는 암호화를 활성화하지 않는 것이 좋습니다." + "암호화 활성화?" + "일단 활성화되면, 암호화는 비활성화할 수 없습니다." + "종단간 암호화 활성화" + "누구나 찾을 수 있고 참여할 수 있습니다." + "초대받은 사용자만 가입할 수 있습니다." + "초대 전용" + "방 액세스" + "스페이스는 현재 지원되지 않습니다" + "스페이스 멤버들" + "방 디렉토리에 표시하려면 방 주소가 필요합니다." + "%1$s 공개 방 디렉토리에서 이 방을 검색할 수 있도록 허용합니다" + "공개 룸 디렉토리에 표시됨" + "누가 기록을 읽을 수 있는가" + "초대받은 회원만 이용 가능합니다" + "이 옵션을 선택한 회원만 이용 가능합니다." + "방 주소는 방을 찾고 액세스하는 방법입니다. 이를 통해 다른 사람들과 방을 쉽게 공유할 수 있습니다. +홈서버의 공개 방 디렉토리에 방을 공개할지 여부를 선택할 수 있습니다." + "방 게시" + "방 주소는 방을 찾고 액세스하는 방법입니다. 또한 이 주소를 사용하면 다른 사람들과 방을 쉽게 공유할 수 있습니다. +%1$s 의 공개 방 디렉토리에서 방을 표시하려면 이 주소도 필요합니다." + "보안 및 개인정보 보호" + "참가 요청" + "암호화" + "누구나" + "방 표시 여부" + \ No newline at end of file diff --git a/features/securityandprivacy/impl/src/main/res/values-nb/translations.xml b/features/securityandprivacy/impl/src/main/res/values-nb/translations.xml new file mode 100644 index 0000000000..02f2163c51 --- /dev/null +++ b/features/securityandprivacy/impl/src/main/res/values-nb/translations.xml @@ -0,0 +1,36 @@ + + + "Du trenger en adresse til rommet for å gjøre det synlig i katalogen." + "Romadresse" + "Legg til romadresse" + "Alle kan be om å bli med i rommet, men en administrator eller moderator må godta forespørselen." + "Ja, aktiver kryptering" + "Når kryptering for et rom er aktivert, kan den ikke deaktiveres. Meldingshistorikken vil bare være synlig for rommedlemmer siden de ble invitert eller siden de ble med i rommet. +Ingen andre enn rommedlemmene vil kunne lese meldingene. Dette kan føre til at bots og broer ikke fungerer som de skal. +Vi anbefaler ikke å aktivere kryptering for rom som hvem som helst kan finne og bli med i." + "Vil du aktivere kryptering?" + "Når kryptering er aktivert, kan det ikke deaktiveres." + "Aktiver ende-til-ende-kryptering" + "Alle kan finne og bli med" + "Folk kan bare bli med hvis de er invitert" + "Kun for inviterte" + "Tilgang til rom" + "Områder støttes ikke for øyeblikket" + "Medlemmer av område" + "Du trenger en adresse til rommet for å gjøre rommet synlig i romkatalogen." + "Tillat at dette rommet blir funnet ved å søke %1$s offentlig romkatalog" + "Synlig i offentlig romkatalog" + "Hvem kan lese historikk" + "Medlemmer bare siden de ble invitert" + "Kun medlemmer siden du valgte dette alternativet" + "Romadresser er måter å finne og få tilgang til rom på. Dette sikrer også at du enkelt kan dele rommet ditt med andre. +Du kan velge å publisere rommet ditt i hjemeserverens offentlige romkatalog." + "Publisering av rom" + "Romadresser er en måte å finne og få tilgang til rommene på. Dette sikrer også at du enkelt kan dele rommet ditt med andre. +Adressen er også nødvendig for å gjøre rommet synlig i den offentlige romkatalogen på %1$s." + "Sikkerhet og personvern" + "Be om å bli med" + "Kryptering" + "Alle" + "Romsynlighet" + \ No newline at end of file diff --git a/features/securityandprivacy/impl/src/main/res/values-nl/translations.xml b/features/securityandprivacy/impl/src/main/res/values-nl/translations.xml new file mode 100644 index 0000000000..3913599edb --- /dev/null +++ b/features/securityandprivacy/impl/src/main/res/values-nl/translations.xml @@ -0,0 +1,5 @@ + + + "Vraag om toe te treden" + "Iedereen" + \ No newline at end of file diff --git a/features/securityandprivacy/impl/src/main/res/values-pl/translations.xml b/features/securityandprivacy/impl/src/main/res/values-pl/translations.xml new file mode 100644 index 0000000000..8cad565318 --- /dev/null +++ b/features/securityandprivacy/impl/src/main/res/values-pl/translations.xml @@ -0,0 +1,38 @@ + + + "Aby pokój był widoczny w katalogu, potrzebny jest adres pokoju." + "Adres pokoju" + "Dodaj adres pokoju" + "Każdy może poprosić o dołączenie do pokoju, ale administrator lub moderator będzie musiał zatwierdzić żądanie." + "Tak, włącz szyfrowanie" + "Po włączeniu szyfrowanie pokoju nie może zostać wyłączone, a historia wiadomości będzie widoczna tylko dla członków od momentu, w którym dołączyli lub zostali zaproszeni. +Nikt poza członkami pokoju nie będzie mógł czytać wiadomości. Może to wpłynąć na prawidłowe działanie botów lub mostków. +Odradzamy włączanie szyfrowania dla pokoi, które każdy może znaleźć i do których każdy może dołączyć." + "Włączyć szyfrowanie?" + "Po włączeniu szyfrowania nie można wyłączyć." + "Włącz szyfrowanie end-to-end" + "Każdy może znaleźć i dołączyć" + "Każdy" + "Tylko osoby z zaproszeniem mogą dołączyć" + "Tylko zaproszenie" + "Dostęp do pokoju" + "Przestrzenie nie są obecnie wspierane" + "Członkowie przestrzeni" + "Aby pokój był widoczny w katalogu pokoi, potrzebny jest adres pokoju." + "Adres pokoju" + "Zezwól na znalezienie tego pokoju wyszukując %1$s w katalogu pokoi publicznych" + "Widoczny w katalogu pokoi publicznych" + "Kto może czytać historię" + "Od momentu kiedy członkowie zostali zaproszeni" + "Członkowie od momentu włączenia tej opcji" + "Adresy pokoju umożliwiają łatwe znalezienie i dołączenie do pokojów. +Również możesz się zdecydować na upublicznienie Twojego serwera w katalogu pokoi publicznych." + "Publikowanie pokoju" + "Adresy pokoju umożliwiają łatwe znalezienie i dołączenie do pokojów. +Dodatkowo adres pokoju jest wymagany, aby pomieszczenie było widoczne w katalogu pokoi publicznych %1$s." + "Bezpieczeństwo i prywatność" + "Poproś o dołączenie" + "Szyfrowanie" + "Wszyscy" + "Widoczność pomieszczenia" + \ No newline at end of file diff --git a/features/securityandprivacy/impl/src/main/res/values-pt-rBR/translations.xml b/features/securityandprivacy/impl/src/main/res/values-pt-rBR/translations.xml new file mode 100644 index 0000000000..980fb118fb --- /dev/null +++ b/features/securityandprivacy/impl/src/main/res/values-pt-rBR/translations.xml @@ -0,0 +1,36 @@ + + + "Você precisará de um endereço de sala para torná-la visível no diretório." + "Endereço da sala" + "Adicionar endereço da sala" + "Qualquer pessoa pode pedir para entrar na sala, mas um administrador ou moderador terá que aceitar o pedido." + "Sim, ativar a criptografia" + "Uma vez ativada, a criptografia de uma sala não pode ser desativada. O histórico de mensagens só será visível para os membros da sala desde que foram convidados ou desde que entraram na sala. +Ninguém além dos membros da sala poderá ler as mensagens. Isso pode impedir que os bots e as pontes funcionem corretamente. +Não recomendamos que você ative a criptografia para salas que qualquer pessoa possa encontrar e participar." + "Ativar a criptografia?" + "Uma vez ativada, a criptografia não poderá ser desativada." + "Ativar a criptografia de ponta a ponta" + "Qualquer um pode encontrar e entrar" + "As pessoas só podem participar se forem convidadas" + "Somente para convidados" + "Acesso à sala" + "No momento, não há suporte aos espaços" + "Membros do espaço" + "Você precisará de um endereço de sala para torná-la visível no diretório de salas." + "Permitir que esta sala seja encontrada pesquisando diretório de salas públicas de %1$s" + "Visível no diretório de salas públicas" + "Quem pode ler o histórico" + "Somente membros, desde que foram convidados" + "Somente para membros após selecionar esta opção" + "Os endereços das salas são formas de encontrar e acessar as salas. Isso também garante que você possa compartilhar facilmente sua sala com outras pessoas. +Você pode optar por publicar sua sala no diretório público de salas do seu servidor-casa." + "Publicação da sala" + "Os endereços das salas são formas de encontrar e acessar as salas. Isso também garante que você possa compartilhar facilmente sua sala com outras pessoas. +O endereço também é necessário para que você possa ver a sala no diretório público de salas do %1$s." + "Segurança e privacidade" + "Pedir para entrar" + "Criptografia" + "Qualquer pessoa" + "Visibilidade da sala" + \ No newline at end of file diff --git a/features/securityandprivacy/impl/src/main/res/values-pt/translations.xml b/features/securityandprivacy/impl/src/main/res/values-pt/translations.xml new file mode 100644 index 0000000000..cdf157ab11 --- /dev/null +++ b/features/securityandprivacy/impl/src/main/res/values-pt/translations.xml @@ -0,0 +1,38 @@ + + + "É necessário um endereço para tornar a sala visível no diretório." + "Endereço da sala" + "Adicionar endereço de sala" + "Qualquer pessoa pode pedir para entrar na sala, mas um administrador ou moderador tem que aceitar o pedido." + "Sim, ativar cifragem" + "Uma vez ativada, a cifragem não pode ser desativada. O histórico de mensagens só será visível a membros a partir do momento em que foram convidados ou que entraram na sala. +Ninguém além dos membros poderão ler quaisquer mensagens. Isto pode impedir que robôs (\"bots\") e pontes (\"bridges\") funcionem devidamente. +Não recomendamos ativar a cifragem em salas que qualquer pessoa possa encontrar e entrar." + "Ativar cifragem?" + "Uma vez ativada, a cifragem não pode ser desativada." + "Ativar cifragem ponta-a-ponta" + "Qualquer pessoa pode encontrar a sala e entrar" + "Qualquer pessoa" + "Só é possível entrar tendo um convite" + "Apenas por convite" + "Acesso à sala" + "Os espaços ainda não estão implementados" + "Membros do espaço" + "É necessário um endereço para tornar a sala visível no diretório." + "Endereço da sala" + "Permite que esta sala seja encontrada através do diretório público do %1$s." + "Visível no diretório público de salas" + "Quem pode ler o histórico de mensagens" + "Apenas membros, desde o momento em que forem convidados" + "Apenas membros, desde o memento em que esta opção for selecionada" + "Estes endereços permitem encontrar e aceder a sala, bem como a sua fácil partilha com outros. +Podes escolher publicar a sala no diretório público do teu servidor." + "Publicar sala" + "Estes endereços permitem encontrar e aceder a sala, bem como a sua fácil partilha com outros. +Além disso, é necessário ter endereço para publicar a sala no diretório público do %1$s." + "Segurança e privacidade" + "Pedir para participar" + "Cifragem" + "Qualquer pessoa" + "Visibilidade da sala" + \ No newline at end of file diff --git a/features/securityandprivacy/impl/src/main/res/values-ro/translations.xml b/features/securityandprivacy/impl/src/main/res/values-ro/translations.xml new file mode 100644 index 0000000000..2bd0e41582 --- /dev/null +++ b/features/securityandprivacy/impl/src/main/res/values-ro/translations.xml @@ -0,0 +1,36 @@ + + + "Veți avea nevoie de o adresă de cameră pentru a o face vizibilă în director." + "Adresa camerei" + "Adăugați adresa camerei" + "Oricine poate cere să se alăture camerei, dar un administrator sau moderator va trebui să accepte cererea." + "Da, activați criptarea" + "Odată activată, criptarea pentru o cameră nu poate fi dezactivată. Mesajele anterioare vor fi vizibile numai pentru membrii camerei de la momentul la care au fost invitați sau de la momentul la care s-au alăturat camerei. +Nimeni în afară de membrii camerei nu va putea citi messaje. Acest lucru poate împiedica funcționarea corectă a boților și a punților. +Nu recomandăm activarea criptării pentru camerele pe care oricine le poate găsi și la care se poate alătura." + "Activați criptarea?" + "Odată activată, criptarea nu poate fi dezactivată." + "Activați criptarea end-to-end" + "Oricine poate găsi și alătura camerei" + "Persoanele se pot alătura numai dacă invitate" + "Doar pe bază de invitație" + "Acces la cameră" + "Spațiile nu sunt momentan suportate." + "Membrii spațiului" + "Veți avea nevoie de o adresă de cameră pentru a o face vizibilă în directorul de camere." + "Permiteți găsirea acestei camere prin căutarea în directorul de camere publice al %1$s" + "Vizibilă în directorul de camere publice" + "Cine poate citi mesajele anterioare" + "Doar pentru membri, de la momentul în care au fost invitați" + "Doar pentru membri, după selectarea acestei opțiuni" + "Adresele camerelor sunt modalități de a găsi și accesa camere. Acest lucru vă asigură, de asemenea, că puteți partaja cu ușurință camera dumneavoastră cu alte persoane. +Puteți alege să publicați camera în directorul public al camerelor serverului dumneavoastră." + "Publicare cameră" + "Adresele camerelor sunt modalități de a găsi și accesa camerele. Acest lucru vă asigură, de asemenea, că puteți partaja cu ușurință camera dvs. cu alte persoane. +Adresa este necesară și pentru ca camera să fie vizibilă în directorul public de camere al %1$s." + "Securitate & confidențialitate" + "Cereți să vă alăturați" + "Criptare" + "Oricine" + "Vizibilitatea camerei" + \ No newline at end of file diff --git a/features/securityandprivacy/impl/src/main/res/values-ru/translations.xml b/features/securityandprivacy/impl/src/main/res/values-ru/translations.xml new file mode 100644 index 0000000000..1a54034ee5 --- /dev/null +++ b/features/securityandprivacy/impl/src/main/res/values-ru/translations.xml @@ -0,0 +1,40 @@ + + + "Вам понадобится адрес комнаты, чтобы сделать ее видимой в каталоге." + "Редактировать адрес комнаты" + "Добавить адрес комнаты" + "Любой желающий может подать заявку на присоединение к комнате, но администратор должен будет принять запрос." + "Да, включить шифрование" + "Шифрование комнаты нельзя будет отключить, история сообщений будет видна только участникам комнаты с момента их приглашения или с момента присоединения к комнате. +Никто, кроме членов комнаты, не сможет читать сообщения. Это может помешать ботам и мостам работать корректно. +Мы не рекомендуем включать шифрование для комнат, в которые может найти и присоединиться любой желающий." + "Включить шифрование?" + "После включения, шифрование не может быть отключено." + "Включить сквозное шифрование" + "Любой желающий может найти и присоединиться" + "Публичный" + "Присоединиться могут только приглашенные люди." + "Только по приглашению" + "Доступ" + "Пространства в настоящее время не поддерживаются." + "Участники пространства" + "Вам необходимо добавить адрес комнаты, чтобы сделать ее видимой в каталоге." + "Вам понадобится адрес комнаты, чтобы сделать ее видимой в каталоге комнат." + "Опубликованный адрес" + "Опубликовать %1$s в каталоге публичных комнат" + "Разрешить поиск в публичном каталоге." + "Доступна в списке публичных комнат" + "Кто может читать историю" + "Участники только с тех пор, как они были приглашены" + "Только для участников с момента выбора этой опции" + "Адреса комнат — это способ найти комнату и получить к ней доступ. Это также гарантирует, что вы сможете легко поделиться своей комнатой с другими. +Вы можете опубликовать свою комнату в каталоге общедоступных комнат на домашнем сервере." + "Публикация комнат" + "Адреса комнат — это способ найти комнату и получить к ним доступ. Это также гарантирует, что вы сможете легко поделиться своей комнатой с другими. +Адрес также необходим для отображения комнаты в каталоге %1$s общедоступных комнат." + "Безопасность и конфиденциальность" + "Попросить присоединиться" + "Шифрование" + "Любой" + "Видимость комнаты" + \ No newline at end of file diff --git a/features/securityandprivacy/impl/src/main/res/values-sk/translations.xml b/features/securityandprivacy/impl/src/main/res/values-sk/translations.xml new file mode 100644 index 0000000000..287fa1f442 --- /dev/null +++ b/features/securityandprivacy/impl/src/main/res/values-sk/translations.xml @@ -0,0 +1,38 @@ + + + "Budete potrebovať adresu miestnosti, aby bola viditeľná v adresári." + "Adresa miestnosti" + "Pridať adresu miestnosti" + "Ktokoľvek môže požiadať o pripojenie do miestnosti, ale správca alebo moderátor bude musieť žiadosť prijať." + "Áno, povoliť šifrovanie" + "Po aktivácii nie je možné zakázať šifrovanie pre miestnosť. História správ bude viditeľná len pre členov miestnosti, odkedy boli pozvaní alebo keď vstúpili do miestnosti. +Nikto okrem členov miestnosti nebude môcť čítať správy. +To môže brániť správnemu fungovaniu robotov a premostení. Neodporúčame povoliť šifrovanie pre miestnosti, ktoré môže ktokoľvek nájsť a pripojiť sa k nim." + "Povoliť šifrovanie?" + "Po zapnutí už šifrovanie nie je možné vypnúť." + "Povoliť end-to-end šifrovanie" + "Ktokoľvek môže nájsť a pripojiť sa" + "Ktokoľvek" + "Ľudia sa môžu pripojiť len vtedy, ak sú pozvaní" + "Iba na pozvánku" + "Prístup do miestnosti" + "Priestory momentálne nie sú podporované" + "Členovia priestoru" + "Budete potrebovať adresu miestnosti, aby bola viditeľná v adresári miestností." + "Adresa miestnosti" + "Umožniť vyhľadanie tejto miestnosti v adresári verejných miestností %1$s" + "Viditeľné v adresári verejných miestností" + "Kto môže čítať históriu" + "Len pre členov, odkedy boli pozvaní" + "Len členovia od zvolenia tejto možnosti" + "Adresy miestností predstavujú spôsoby, ako nájsť a získať prístup k miestnostiam. To tiež zaisťuje, že môžete jednoducho zdieľať svoju miestnosť s ostatnými. +Môžete sa rozhodnúť zverejniť svoju miestnosť v adresári verejných miestností vášho domovského servera." + "Zverejnenie miestnosti" + "Adresy miestností predstavujú spôsoby, ako nájsť a získať prístup k miestnostiam. Toto tiež zaisťuje, že môžete jednoducho zdieľať svoju miestnosť s ostatnými. +Adresa je tiež potrebná, aby bola miestnosť viditeľná v adresári verejných miestností %1$s." + "Bezpečnosť a súkromie" + "Požiadať o pripojenie" + "Šifrovanie" + "Ktokoľvek" + "Viditeľnosť miestnosti" + \ No newline at end of file diff --git a/features/securityandprivacy/impl/src/main/res/values-sv/translations.xml b/features/securityandprivacy/impl/src/main/res/values-sv/translations.xml new file mode 100644 index 0000000000..b8d76de9bf --- /dev/null +++ b/features/securityandprivacy/impl/src/main/res/values-sv/translations.xml @@ -0,0 +1,37 @@ + + + "Du behöver en rumsadress för att göra den synlig i katalogen." + "Rumsadress" + "Lägg till rumsadress" + "Vem som helst kan be om att gå med i rummet men en administratör eller moderator måste acceptera begäran." + "Ja, aktivera kryptering" + "När det är aktiverat kan kryptering för ett rum inte inaktiveras, meddelandehistoriken visas bara för rumsmedlemmar sedan de blev inbjudna eller sedan de gick med i rummet. +Ingen förutom rumsmedlemmarna kommer att kunna läsa meddelanden. Detta kan förhindra att bots och bridges fungerar korrekt. +Vi rekommenderar inte att aktivera kryptering för rum som vem som helst kan hitta och gå med i." + "Aktivera kryptering?" + "Efter aktivering kan kryptering inte inaktiveras." + "Aktivera totalsträckskryptering" + "Vem som helst kan hitta och gå med" + "Vem som helst" + "Användare kan bara gå med om de är inbjudna" + "Endast inbjudan" + "Tillgång till rum" + "Utrymmen stöds för närvarande inte" + "Utrymmesmedlemmar" + "Du behöver en rumsadress för att göra den synlig i rumskatalogen." + "Tillåt att detta rum hittas genom att söka i den offentliga rumskatalogen på %1$s" + "Synlig i katalogen för offentliga rum" + "Vem kan läsa historik" + "Endast medlemmar sedan de bjöds in" + "Endast medlemmar sedan det här alternativet har valts" + "Rumsadresser är sätt att hitta och komma åt rum. Detta säkerställer också att du enkelt kan dela ditt rum med andra. +Du kan välja att publicera ditt rum i din hemservers offentliga rumskatalog." + "Rumspublicering" + "Rumsadresser är sätt att hitta och komma åt rum. Detta säkerställer också att du enkelt kan dela ditt rum med andra. +Adressen krävs också för att göra rummet synligt i%1$s katalog för offentliga rum." + "Säkerhet och sekretess" + "Be om att gå med" + "Kryptering" + "Vem som helst" + "Rumssynlighet" + \ No newline at end of file diff --git a/features/securityandprivacy/impl/src/main/res/values-tr/translations.xml b/features/securityandprivacy/impl/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..959833c7b6 --- /dev/null +++ b/features/securityandprivacy/impl/src/main/res/values-tr/translations.xml @@ -0,0 +1,38 @@ + + + "Dizinde görünür hale getirmek için bir oda adresine ihtiyacınız olacak." + "Oda adresi" + "Oda adresi ekle" + "Herkes odaya katılma isteğinde bulunabilir ancak bir yönetici veya moderatörün isteği kabul etmesi gerekir." + "Evet, şifrelemeyi etkinleştir" + "Etkinleştirildikten sonra, bir oda için şifreleme devre dışı bırakılamaz, Mesaj geçmişi yalnızca davet edildiklerinden veya odaya katıldıklarından beri oda üyeleri için görünür olacaktır. +Oda üyeleri dışında hiç kimse mesajları okuyamayacaktır. Bu, botların ve köprülerin düzgün çalışmasını engelleyebilir. +Herkesin bulabileceği ve katılabileceği odalar için şifrelemenin etkinleştirilmesini önermiyoruz." + "Şifrelemeyi etkinleştir?" + "Açıldıktan donra şifreleme kapatılamaz." + "Uçtan uca şifrelemeyi etkinleştir" + "Herkes bulabilir ve katılabilir" + "Herkes" + "İnsanlar yalnızca davet edildiklerinde katılabilirler" + "Yalnızca davet" + "Oda Erişimi" + "Alanlar şu anda desteklenmiyor" + "Alan üyeleri" + "Oda dizininde görünür kılmak için bir oda adresine ihtiyacınız olacaktır." + "Oda adresi" + "Bu odanın %1$s genel oda dizininde arama yapılarak bulunmasına izin verin" + "Genel oda dizininde görünür" + "Geçmişi kimler okuyabilir ?" + "Sadece üyeler (davet edildiklerinden beri)" + "Bu seçeneği seçtiğinden beri yalnızca üyeler" + "Oda adresleri, odaları bulmanın ve odalara erişmenin yoludur. Bu aynı zamanda odanızı başkalarıyla kolayca paylaşabilmenizi sağlar. +Odanızı ana sunucunuzun genel oda dizininde yayınlamayı seçebilirsiniz." + "Oda yayınlama" + "Oda adresleri, odaları bulmanın ve odalara erişmenin yollarıdır. Bu aynı zamanda odanızı başkalarıyla kolayca paylaşabilmenizi sağlar. +Adres, odayı %1$s genel oda dizininde görünür kılmak için de gereklidir." + "Güvenlik ve gizlilik" + "Katılmak için sor" + "Şifreleme" + "Herkes" + "Oda görünürlüğü" + \ No newline at end of file diff --git a/features/securityandprivacy/impl/src/main/res/values-uk/translations.xml b/features/securityandprivacy/impl/src/main/res/values-uk/translations.xml new file mode 100644 index 0000000000..b631ee092b --- /dev/null +++ b/features/securityandprivacy/impl/src/main/res/values-uk/translations.xml @@ -0,0 +1,38 @@ + + + "Вам знадобиться адреса кімнати, щоб зробити її видимою в каталозі." + "Адреса кімнати" + "Додати адресу кімнати" + "Будь-хто може надіслати запит приєднатися до кімнати, але адміністратор або модератор повинні прийняти запит." + "Так, увімкнути шифрування" + "Після ввімкнення шифрування кімнати, його неможливо вимкнути, історію повідомлень бачитимуть лише учасники кімнати, яких було запрошено або які приєдналися до кімнати. +Ніхто, крім учасників кімнати, не зможе прочитати повідомлення. Це може перешкоджати коректній роботі ботів і мостів. +Ми не радимо вмикати шифрування для кімнат, які будь-хто може знайти та до яких може приєднатися всі." + "Увімкнути шифрування?" + "Після ввімкнення шифрування неможливо вимкнути." + "Увімкнути наскрізне шифрування" + "Будь-хто може знайти та приєднатися." + "Будь-хто" + "Люди можуть приєднатися, лише якщо їх запросили" + "Лише запрошені" + "Доступ до кімнати" + "Простори наразі не підтримуються" + "Учасники простору" + "Вам знадобиться адреса кімнати, щоб зробити її видимою в каталозі кімнат." + "Адреса кімнати" + "Дозвольте, щоб цю кімнату можна було знайти за допомогою пошуку в каталозі загальнодоступних кімнат %1$s " + "Видима в каталозі загальнодоступних кімнат" + "Хто може читати історію" + "Лише учасники з моменту запрошення" + "Лише учасники після вибору цього параметра" + "Адреси кімнат — це спосіб знайти кімнату та отримати до неї доступ. Це також гарантує, що ви можете легко поділитися своєю кімнатою з іншими. +Ви можете опублікувати свою кімнату в каталозі загальнодоступних кімнат вашого домашнього сервера." + "Публікація в кімнаті" + "Адреси кімнат — це спосіб знайти та отримати доступ до кімнат. Це також гарантує, що ви зможете легко поділитися своєю кімнатою з іншими. +Адреса також необхідна, щоб зробити кімнату видимою в каталозі загальнодоступних кімнат %1$s." + "Безпека й приватність" + "Запросити приєднатися" + "Шифрування" + "Кожний" + "Видимість кімнати" + \ No newline at end of file diff --git a/features/securityandprivacy/impl/src/main/res/values-uz/translations.xml b/features/securityandprivacy/impl/src/main/res/values-uz/translations.xml new file mode 100644 index 0000000000..157e8f8418 --- /dev/null +++ b/features/securityandprivacy/impl/src/main/res/values-uz/translations.xml @@ -0,0 +1,7 @@ + + + "Qo‘shilishni so‘rang" + "Shifrlash" + "Har kim" + "Xonaning ko‘rinishi" + \ No newline at end of file diff --git a/features/securityandprivacy/impl/src/main/res/values-zh-rTW/translations.xml b/features/securityandprivacy/impl/src/main/res/values-zh-rTW/translations.xml new file mode 100644 index 0000000000..44a21456f4 --- /dev/null +++ b/features/securityandprivacy/impl/src/main/res/values-zh-rTW/translations.xml @@ -0,0 +1,38 @@ + + + "您需要聊天室地址才能在目錄中顯示它。" + "聊天室地址" + "新增聊天室地址" + "任何人都可以要求加入聊天室,但管理員必須接受請求。" + "是的,啟用加密" + "啟用後就無法停用聊天室的加密,只有受邀的聊天室成員或加入聊天室後才能看到訊息歷史紀錄。 +除了聊天室成員以外,任何人都不能讀取訊息。這可能會讓機器人與橋接無法正常運作。 +我們不建議對任何人都可以找到並加入的聊天室啟用加密。" + "啟用加密?" + "一旦啟用就無法停用加密。" + "啟用端到端加密" + "任何人都可以找到並加入" + "任何人" + "人們僅有受到邀請時才能加入" + "僅限邀請" + "聊天室存取權" + "目前不支援空間" + "空間成員" + "您需要聊天室地址才能在聊天室目錄中顯示。" + "聊天室地址" + "允許透過搜尋 %1$s 公開聊天室目錄找到此聊天室" + "在公開聊天室目錄中可見" + "誰可以讀取歷史紀錄" + "僅在成員被邀請後" + "選取此選項後僅限成員" + "聊天室地址是尋找與存取聊天室的方法。也確保您可以輕鬆與其他人分享聊天室。 +您可以選擇在家伺服器公開聊天室目錄中發佈您的聊天室。" + "聊天室發佈" + "聊天室地址是尋找與存取聊天室的方法。也確保您可以輕鬆與其他人分享聊天室。 +若要讓聊天室在 %1$s 公開聊天室目錄中可見,地址也是必要的。" + "安全與隱私" + "要求加入" + "加密" + "任何人" + "聊天室能見度" + \ No newline at end of file diff --git a/features/securityandprivacy/impl/src/main/res/values-zh/translations.xml b/features/securityandprivacy/impl/src/main/res/values-zh/translations.xml new file mode 100644 index 0000000000..1dd91a684d --- /dev/null +++ b/features/securityandprivacy/impl/src/main/res/values-zh/translations.xml @@ -0,0 +1,38 @@ + + + "你需要房间地址才能使其在目录中可见。" + "房间地址" + "添加房间地址" + "任何人都可以请求加入房间,但必须由管理员或版主接受请求。" + "是的,启用加密" + "一旦启用,就不能再禁用房间的加密功能。消息历史记录只能在房间成员被邀请或加入房间后才可见。 +除房间成员外,任何人都无法阅读信息。这可能会妨碍机器人和网桥正常工作。 +我们不建议对任何人都能找到并加入的房间启用加密。" + "启用加密?" + "加密一旦启用,就无法禁用。" + "启用端到端加密" + "任何人都可以找到并加入" + "任何人" + "只有受邀者才能加入" + "仅限邀请" + "房间访问权限" + "目前不支持空间" + "空间成员" + "你需要有房间地址才能使其在房间目录中可见。" + "房间地址" + "允许通过搜索 %1$s 的公共房间目录来发现此房间" + "在公共房间目录中可见" + "谁可以读取历史记录" + "仅限被邀请的成员" + "仅自选择此选项以来的成员" + "房间地址是查找和访问房间的方式。这也确保你可以轻松地向他人分享房间。 +你可以选择在你服务器的公共房间目录中发布你的房间。" + "房间发布" + "房间地址是查找和访问房间的方式。这也确保你可以轻松地向他人分享房间。 +在 %1$s 的公共房间目录中显示该房间时也需要地址。" + "安全与隐私" + "请求加入" + "加密" + "任何人" + "房间可见性" + \ No newline at end of file diff --git a/features/securityandprivacy/impl/src/main/res/values/localazy.xml b/features/securityandprivacy/impl/src/main/res/values/localazy.xml new file mode 100644 index 0000000000..b0e8195733 --- /dev/null +++ b/features/securityandprivacy/impl/src/main/res/values/localazy.xml @@ -0,0 +1,40 @@ + + + "You’ll need an address in order to make it visible in the public directory." + "Edit address" + "Add room address" + "Anyone can request access but an administrator must accept the request." + "Ask to join" + "Yes, enable encryption" + "Once enabled, encryption for a room cannot be disabled, Message history will only be visible for room members since they were invited or since they joined the room. +No one besides the room members will be able to read messages. This may prevent bots and bridges to work correctly. +We do not recommend enabling encryption for rooms that anyone can find and join." + "Enable encryption?" + "Once enabled, encryption cannot be disabled." + "Encryption" + "Enable end-to-end encryption" + "Anyone can join." + "Public" + "Only invited people can join." + "Private" + "Access" + "Spaces are not currently supported" + "Space members" + "You’ll need an address in order to make it visible in the public directory." + "You’ll need a room address in order to make it visible in the room directory." + "Published address" + "Allow for this room to be found by searching %1$s public room directory" + "Allow to be found by searching the public directory." + "Visible in public directory" + "Anyone" + "Who can read history" + "Members only since they were invited" + "Members only since selecting this option" + "Room addresses are ways to find and access rooms. This also ensures you can easily share your room with others. +You can choose to publish your room in your homeserver public room directory." + "Room publishing" + "Room addresses are ways to find and access rooms. This also ensures you can easily share your room with others. +The address is also required to make the room visible in %1$s public room directory." + "Room visibility" + "Security & privacy" + diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/FakeSecurityAndPrivacyNavigator.kt b/features/securityandprivacy/impl/src/test/kotlin/io/element/android/features/securityandprivacy/impl/FakeSecurityAndPrivacyNavigator.kt similarity index 90% rename from features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/FakeSecurityAndPrivacyNavigator.kt rename to features/securityandprivacy/impl/src/test/kotlin/io/element/android/features/securityandprivacy/impl/FakeSecurityAndPrivacyNavigator.kt index 4ba6019f77..9ca3cc5288 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/FakeSecurityAndPrivacyNavigator.kt +++ b/features/securityandprivacy/impl/src/test/kotlin/io/element/android/features/securityandprivacy/impl/FakeSecurityAndPrivacyNavigator.kt @@ -6,7 +6,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.securityandprivacy +package io.element.android.features.securityandprivacy.impl import io.element.android.tests.testutils.lambda.lambdaError diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyPresenterTest.kt b/features/securityandprivacy/impl/src/test/kotlin/io/element/android/features/securityandprivacy/impl/SecurityAndPrivacyPresenterTest.kt similarity index 97% rename from features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyPresenterTest.kt rename to features/securityandprivacy/impl/src/test/kotlin/io/element/android/features/securityandprivacy/impl/SecurityAndPrivacyPresenterTest.kt index 34edea50fb..bdae5274f0 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyPresenterTest.kt +++ b/features/securityandprivacy/impl/src/test/kotlin/io/element/android/features/securityandprivacy/impl/SecurityAndPrivacyPresenterTest.kt @@ -6,9 +6,13 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.securityandprivacy +package io.element.android.features.securityandprivacy.impl import com.google.common.truth.Truth.assertThat +import io.element.android.features.securityandprivacy.impl.root.SecurityAndPrivacyEvents +import io.element.android.features.securityandprivacy.impl.root.SecurityAndPrivacyHistoryVisibility +import io.element.android.features.securityandprivacy.impl.root.SecurityAndPrivacyPresenter +import io.element.android.features.securityandprivacy.impl.root.SecurityAndPrivacyRoomAccess import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.featureflag.api.FeatureFlagService diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyViewTest.kt b/features/securityandprivacy/impl/src/test/kotlin/io/element/android/features/securityandprivacy/impl/SecurityAndPrivacyViewTest.kt similarity index 90% rename from features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyViewTest.kt rename to features/securityandprivacy/impl/src/test/kotlin/io/element/android/features/securityandprivacy/impl/SecurityAndPrivacyViewTest.kt index 93d644121c..c7ab57a577 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyViewTest.kt +++ b/features/securityandprivacy/impl/src/test/kotlin/io/element/android/features/securityandprivacy/impl/SecurityAndPrivacyViewTest.kt @@ -6,7 +6,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.securityandprivacy +package io.element.android.features.securityandprivacy.impl import androidx.activity.ComponentActivity import androidx.compose.ui.test.junit4.AndroidComposeTestRule @@ -14,7 +14,13 @@ import androidx.compose.ui.test.junit4.createAndroidComposeRule import androidx.compose.ui.test.onNodeWithText import androidx.compose.ui.test.performClick import androidx.test.ext.junit.runners.AndroidJUnit4 -import io.element.android.features.roomdetails.impl.R +import io.element.android.features.securityandprivacy.impl.root.SecurityAndPrivacyEvents +import io.element.android.features.securityandprivacy.impl.root.SecurityAndPrivacyHistoryVisibility +import io.element.android.features.securityandprivacy.impl.root.SecurityAndPrivacyRoomAccess +import io.element.android.features.securityandprivacy.impl.root.SecurityAndPrivacyState +import io.element.android.features.securityandprivacy.impl.root.SecurityAndPrivacyView +import io.element.android.features.securityandprivacy.impl.root.aSecurityAndPrivacySettings +import io.element.android.features.securityandprivacy.impl.root.aSecurityAndPrivacyState import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.ui.strings.CommonStrings import io.element.android.tests.testutils.EnsureNeverCalled diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/EditBaseRoomAddressPresenterTest.kt b/features/securityandprivacy/impl/src/test/kotlin/io/element/android/features/securityandprivacy/impl/editroomaddress/EditRoomAddressPresenterTest.kt similarity index 93% rename from features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/EditBaseRoomAddressPresenterTest.kt rename to features/securityandprivacy/impl/src/test/kotlin/io/element/android/features/securityandprivacy/impl/editroomaddress/EditRoomAddressPresenterTest.kt index 75d7b44a95..aac25ec018 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/EditBaseRoomAddressPresenterTest.kt +++ b/features/securityandprivacy/impl/src/test/kotlin/io/element/android/features/securityandprivacy/impl/editroomaddress/EditRoomAddressPresenterTest.kt @@ -6,12 +6,11 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.securityandprivacy.editroomaddress +package io.element.android.features.securityandprivacy.impl.editroomaddress import com.google.common.truth.Truth.assertThat -import io.element.android.features.roomdetails.impl.aJoinedRoom -import io.element.android.features.roomdetails.impl.securityandprivacy.FakeSecurityAndPrivacyNavigator -import io.element.android.features.roomdetails.impl.securityandprivacy.SecurityAndPrivacyNavigator +import io.element.android.features.securityandprivacy.impl.FakeSecurityAndPrivacyNavigator +import io.element.android.features.securityandprivacy.impl.SecurityAndPrivacyNavigator import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.matrix.api.core.RoomAlias import io.element.android.libraries.matrix.api.room.JoinedRoom @@ -21,6 +20,7 @@ import io.element.android.libraries.matrix.test.AN_EXCEPTION import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.test.FakeMatrixClient import io.element.android.libraries.matrix.test.room.FakeJoinedRoom +import io.element.android.libraries.matrix.test.room.aRoomInfo import io.element.android.libraries.matrix.test.room.alias.FakeRoomAliasHelper import io.element.android.libraries.matrix.ui.room.address.RoomAddressValidity import io.element.android.tests.testutils.lambda.assert @@ -31,11 +31,13 @@ import kotlinx.coroutines.test.runTest import org.junit.Test import java.util.Optional -class EditBaseRoomAddressPresenterTest { +class EditRoomAddressPresenterTest { @Test fun `present - initial state no address`() = runTest { val presenter = createEditRoomAddressPresenter( - room = aJoinedRoom(displayName = "") + room = FakeJoinedRoom().apply { + givenRoomInfo(aRoomInfo(name = "")) + } ) presenter.test { with(awaitItem()) { @@ -50,9 +52,9 @@ class EditBaseRoomAddressPresenterTest { @Test fun `present - initial state address matching own homeserver`() = runTest { - val room = aJoinedRoom( - canonicalAlias = RoomAlias("#canonical:matrix.org"), - ) + val room = FakeJoinedRoom().apply { + givenRoomInfo(aRoomInfo(canonicalAlias = RoomAlias("#canonical:matrix.org"))) + } val presenter = createEditRoomAddressPresenter(room = room) presenter.test { with(awaitItem()) { @@ -67,10 +69,14 @@ class EditBaseRoomAddressPresenterTest { @Test fun `present - initial state address not matching own homeserver`() = runTest { - val room = aJoinedRoom( - displayName = "", - canonicalAlias = RoomAlias("#canonical:notmatrix.org"), - ) + val room = FakeJoinedRoom().apply { + givenRoomInfo( + aRoomInfo( + name = "", + canonicalAlias = RoomAlias("#canonical:notmatrix.org") + ) + ) + } val presenter = createEditRoomAddressPresenter(room = room) presenter.test { with(awaitItem()) { @@ -196,12 +202,13 @@ class EditBaseRoomAddressPresenterTest { val navigator = FakeSecurityAndPrivacyNavigator(closeEditRoomAddressLambda = closeEditAddressLambda) val canonicalAlias = RoomAlias("#canonical:matrix.org") - val room = aJoinedRoom( - canonicalAlias = canonicalAlias, + val room = FakeJoinedRoom( updateCanonicalAliasResult = updateCanonicalAliasResult, publishRoomAliasInRoomDirectoryResult = publishAliasInRoomDirectoryResult, removeRoomAliasFromRoomDirectoryResult = removeAliasFromRoomDirectoryResult - ) + ).apply { + givenRoomInfo(aRoomInfo(canonicalAlias = canonicalAlias)) + } val presenter = createEditRoomAddressPresenter(room = room, navigator = navigator) presenter.test { with(awaitItem()) { @@ -246,12 +253,13 @@ class EditBaseRoomAddressPresenterTest { val navigator = FakeSecurityAndPrivacyNavigator(closeEditRoomAddressLambda = closeEditAddressLambda) val canonicalAlias = RoomAlias("#canonical:notmatrix.org") - val room = aJoinedRoom( - canonicalAlias = canonicalAlias, + val room = FakeJoinedRoom( updateCanonicalAliasResult = updateCanonicalAliasResult, publishRoomAliasInRoomDirectoryResult = publishAliasInRoomDirectoryResult, removeRoomAliasFromRoomDirectoryResult = removeAliasFromRoomDirectoryResult - ) + ).apply { + givenRoomInfo(aRoomInfo(canonicalAlias = canonicalAlias)) + } val presenter = createEditRoomAddressPresenter(room = room, navigator = navigator) presenter.test { with(awaitItem()) { diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/EditBaseRoomAddressViewTest.kt b/features/securityandprivacy/impl/src/test/kotlin/io/element/android/features/securityandprivacy/impl/editroomaddress/EditRoomAddressViewTest.kt similarity index 97% rename from features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/EditBaseRoomAddressViewTest.kt rename to features/securityandprivacy/impl/src/test/kotlin/io/element/android/features/securityandprivacy/impl/editroomaddress/EditRoomAddressViewTest.kt index ff6a75881b..17d6f3a88d 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/EditBaseRoomAddressViewTest.kt +++ b/features/securityandprivacy/impl/src/test/kotlin/io/element/android/features/securityandprivacy/impl/editroomaddress/EditRoomAddressViewTest.kt @@ -6,7 +6,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.securityandprivacy.editroomaddress +package io.element.android.features.securityandprivacy.impl.editroomaddress import androidx.activity.ComponentActivity import androidx.compose.ui.test.junit4.AndroidComposeTestRule @@ -29,7 +29,7 @@ import org.junit.rules.TestRule import org.junit.runner.RunWith @RunWith(AndroidJUnit4::class) -class EditBaseRoomAddressViewTest { +class EditRoomAddressViewTest { @get:Rule val rule = createAndroidComposeRule() @Test diff --git a/features/securityandprivacy/test/build.gradle.kts b/features/securityandprivacy/test/build.gradle.kts new file mode 100644 index 0000000000..903ef6d194 --- /dev/null +++ b/features/securityandprivacy/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.securityandprivacy.test" +} + +dependencies { + implementation(projects.features.securityandprivacy.api) + implementation(projects.libraries.architecture) + implementation(projects.libraries.matrix.api) + implementation(projects.tests.testutils) +} diff --git a/features/securityandprivacy/test/src/main/kotlin/io/element/android/features/securityandprivacy/test/FakeSecurityAndPrivacyEntryPoint.kt b/features/securityandprivacy/test/src/main/kotlin/io/element/android/features/securityandprivacy/test/FakeSecurityAndPrivacyEntryPoint.kt new file mode 100644 index 0000000000..f316b2fe96 --- /dev/null +++ b/features/securityandprivacy/test/src/main/kotlin/io/element/android/features/securityandprivacy/test/FakeSecurityAndPrivacyEntryPoint.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.securityandprivacy.test + +import com.bumble.appyx.core.modality.BuildContext +import com.bumble.appyx.core.node.Node +import io.element.android.features.securityandprivacy.api.SecurityAndPrivacyEntryPoint +import io.element.android.tests.testutils.lambda.lambdaError + +class FakeSecurityAndPrivacyEntryPoint : SecurityAndPrivacyEntryPoint { + override fun createNode(parentNode: Node, buildContext: BuildContext): Node { + lambdaError() + } +} diff --git a/tools/localazy/config.json b/tools/localazy/config.json index 8cb1228b94..46908438b5 100644 --- a/tools/localazy/config.json +++ b/tools/localazy/config.json @@ -377,6 +377,13 @@ "screen_room_member_list.*", "screen\\.room_member_list\\..*" ] + }, + { + "name" : ":features:securityandprivacy:impl", + "includeRegex" : [ + "screen\\.edit_room_address\\..*", + "screen\\.security_and_privacy\\..*" + ] } ] }