From fced40d15e38e4174f001f962c4beca7e8137f7f Mon Sep 17 00:00:00 2001 From: yostyle Date: Sat, 10 Aug 2024 01:49:56 +0200 Subject: [PATCH 01/14] Add certificate pinning security --- .../res/xml/network_security_config.xml | 0 .../gplay/res/raw/certignaservicesrootca.cer | Bin 0 -> 1562 bytes .../gplay/res/xml/network_security_config.xml | 27 ++++++++++++++++++ .../crash/VectorUncaughtExceptionHandler.kt | 2 +- settings.gradle.kts | 2 +- 5 files changed, 29 insertions(+), 2 deletions(-) rename app/src/{main => fdroid}/res/xml/network_security_config.xml (100%) create mode 100644 app/src/gplay/res/raw/certignaservicesrootca.cer create mode 100644 app/src/gplay/res/xml/network_security_config.xml diff --git a/app/src/main/res/xml/network_security_config.xml b/app/src/fdroid/res/xml/network_security_config.xml similarity index 100% rename from app/src/main/res/xml/network_security_config.xml rename to app/src/fdroid/res/xml/network_security_config.xml diff --git a/app/src/gplay/res/raw/certignaservicesrootca.cer b/app/src/gplay/res/raw/certignaservicesrootca.cer new file mode 100644 index 0000000000000000000000000000000000000000..992cd7cc7193266de3b6d09bf0ab0e87f1ca8931 GIT binary patch literal 1562 zcmXqLViPlHV)?g#nTe5!Ng%)Jm&TfF-&=M^3vsU~PG4)l%f_kI=F#?@mywa1mBGNo zklTQhjX9KsO_<3o$WX{Y0L0KyT#534X#y|>WDmRa?fq{XMf{BHpiJ7s1 zg&~kNDtx@;wK6UHemtCA8dnMLbteLF;*-EYI&|`hwX<5c^ zp3Hh8*=QJ*suH5RFS+-{{V18;H;nCDPE0k7;H|xs#*tsRc=6|Q@Y-96% z^L9k0ZeH<8ut4chY4-K*&`|RYI&1l&&IPGdxoFMjmpB&4XICqftiQ;0!FMh3>kO^i1Uni#Jd2mw=?tS}?v ze-;h{HXsE|AO?IOF@BI33oswC8OVb8d@N!tB5U5X^?RGk?5G!)mb|d;h2LY77$Jic zkhC&OtU+{xh}7GEj+PU)s6_5#{1kN6^;?wX9l?bbOU%g2YE7IB|L#0yw1~oACjEpP=26+Z1Funm(n+8ZfP&-UHiWzY8Qc{Zy%#d_xq3cS4 z6(D-a`MLTi`Vv7Nk!OiAh%nGxpuRx0O&O{=xhMy_Z9oYF?FB%^ZK_C0aaaLTj9Sbw zH!(6YB;DV>gJVbX&Cnkvg~oQWwi_8I`t$Dp_UlCZcG^I$7TnzFoBT&$^Wp?c-mWc?HfXxmxj9?Z#v&i~5x^I&SO3KZ*TnbeY$2bDC7j z#&*MXUo?cZmN0WGRv!|&u{u&_sRP&Ux>#+K>D-^*Fddsw*7}A|`t)+ih;D~BJCZ+^ zuKa!4QN`l7T)SXycHtT4<`U^mMoh(Go0E&*SF3v;|FhQazQ(hOXI^TZ@L~4$`Ejr| z#+did=?!asPKij~UsJJ4j#cxs*1V{jrStnFk9l%kyYJ@CkqJlh literal 0 HcmV?d00001 diff --git a/app/src/gplay/res/xml/network_security_config.xml b/app/src/gplay/res/xml/network_security_config.xml new file mode 100644 index 0000000000..45ccb8cd7e --- /dev/null +++ b/app/src/gplay/res/xml/network_security_config.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + firebaseinstallations.googleapis.com + + + + + + + + + + + + diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/crash/VectorUncaughtExceptionHandler.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/crash/VectorUncaughtExceptionHandler.kt index b71c8af372..ba44478d80 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/crash/VectorUncaughtExceptionHandler.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/crash/VectorUncaughtExceptionHandler.kt @@ -47,7 +47,7 @@ class VectorUncaughtExceptionHandler( override fun uncaughtException(thread: Thread, throwable: Throwable) { Timber.v("Uncaught exception: $throwable") val bugDescription = buildString { - val appName = "ElementX" + val appName = "TchapX" // append(appName + " Build : " + versionCodeProvider.getVersionCode() + "\n") append("$appName Version : 1.0") // ${versionProvider.getVersion(longFormat = true)}\n") // append("SDK Version : ${Matrix.getSdkVersion()}\n") diff --git a/settings.gradle.kts b/settings.gradle.kts index 7bb0543c01..cb010edb59 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -67,7 +67,7 @@ dependencyResolutionManagement { enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") -rootProject.name = "ElementX" +rootProject.name = "TchapX" include(":app") include(":appnav") include(":appconfig") From 4e6d1f76569e0e7eab941d381f579bee0b3f842c Mon Sep 17 00:00:00 2001 From: yostyle Date: Wed, 21 Aug 2024 11:31:22 +0200 Subject: [PATCH 02/14] Hide user ids --- .../suggestions/SuggestionsPickerView.kt | 20 +- .../reactionsummary/ReactionSummaryView.kt | 18 +- .../user/editprofile/EditUserProfileView.kt | 15 +- .../roomdetails/impl/RoomDetailsView.kt | 2 +- .../moderation/RoomMembersModerationView.kt | 31 ++- .../changeroles/ChangeRolesView.kt | 21 +- .../impl/components/RoomSummaryRow.kt | 2 +- .../shared/UserProfileHeaderSection.kt | 19 +- .../userprofile/shared/UserProfileView.kt | 3 +- libraries/designsystem/build.gradle.kts | 1 + .../components/avatar/AvatarData.kt | 3 +- libraries/matrix/api/build.gradle.kts | 1 + .../libraries/matrix/api/core/UserIdExt.kt | 30 +++ .../libraries/matrix/api/room/RoomMember.kt | 5 +- libraries/matrixui/build.gradle.kts | 1 + .../matrix/ui/components/MatrixUserHeader.kt | 21 +- .../libraries/matrix/ui/components/UserRow.kt | 21 +- .../matrix/ui/messages/sender/SenderName.kt | 8 +- .../libraries/matrix/ui/model/InviteSender.kt | 2 +- .../matrix/ui/model/MatrixUserExtensions.kt | 3 +- libraries/tchaputils/build.gradle.kts | 11 + .../libraries/tchaputils/TchapPatterns.kt | 225 ++++++++++++++++++ .../libraries/tchaputils/TchapPatternsTest.kt | 123 ++++++++++ .../model/MarkdownTextEditorState.kt | 2 +- 24 files changed, 498 insertions(+), 90 deletions(-) create mode 100644 libraries/matrix/api/src/main/kotlin/fr/gouv/tchap/android/libraries/matrix/api/core/UserIdExt.kt create mode 100644 libraries/tchaputils/build.gradle.kts create mode 100644 libraries/tchaputils/src/main/java/fr/gouv/tchap/libraries/tchaputils/TchapPatterns.kt create mode 100644 libraries/tchaputils/src/test/java/fr/gouv/tchap/libraries/tchaputils/TchapPatternsTest.kt diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/suggestions/SuggestionsPickerView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/suggestions/SuggestionsPickerView.kt index c52ef4771c..bf8497adc8 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/suggestions/SuggestionsPickerView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/suggestions/SuggestionsPickerView.kt @@ -45,6 +45,7 @@ import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.room.RoomMember import io.element.android.libraries.matrix.api.room.RoomMembershipState +import io.element.android.libraries.matrix.api.room.getBestName import io.element.android.libraries.matrix.ui.components.aRoomSummaryDetails import io.element.android.libraries.matrix.ui.model.getAvatarData import io.element.android.libraries.textcomposer.mentions.ResolvedSuggestion @@ -109,7 +110,7 @@ private fun SuggestionItemView( } val title = when (suggestion) { is ResolvedSuggestion.AtRoom -> stringResource(R.string.screen_room_mentions_at_room_title) - is ResolvedSuggestion.Member -> suggestion.roomMember.displayName + is ResolvedSuggestion.Member -> suggestion.roomMember.getBestName() // TCHAP should be applied in Element X is ResolvedSuggestion.Alias -> suggestion.roomSummary.name } val subtitle = when (suggestion) { @@ -134,13 +135,16 @@ private fun SuggestionItemView( overflow = TextOverflow.Ellipsis, ) } - Text( - text = subtitle, - style = ElementTheme.typography.fontBodySmRegular, - color = ElementTheme.colors.textSecondary, - maxLines = 1, - overflow = TextOverflow.Ellipsis, - ) + // TCHAP hide the Matrix Id + if (subtitle != null) { + Text( + text = subtitle, + style = ElementTheme.typography.fontBodySmRegular, + color = ElementTheme.colors.textSecondary, + maxLines = 1, + overflow = TextOverflow.Ellipsis, + ) + } } } } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryView.kt index c21d0deaa5..e4ba35b296 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryView.kt @@ -76,6 +76,7 @@ import io.element.android.libraries.matrix.api.media.MediaSource import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.matrix.ui.media.MediaRequestData import io.element.android.libraries.matrix.ui.model.getAvatarData +import io.element.android.libraries.matrix.ui.model.getBestName import kotlinx.coroutines.launch internal val REACTION_SUMMARY_LINE_HEIGHT = 25.sp @@ -156,7 +157,7 @@ private fun SheetContent( SenderRow( avatarData = user.getAvatarData(AvatarSize.UserListItem), - name = user.displayName ?: user.userId.value, + name = user.getBestName(), // TCHAP should be applied in Element X userId = user.userId.value, sentTime = sender.sentTime ) @@ -270,13 +271,14 @@ private fun SenderRow( style = ElementTheme.typography.fontBodySmRegular, ) } - Text( - text = userId, - color = MaterialTheme.colorScheme.secondary, - maxLines = 1, - overflow = TextOverflow.Ellipsis, - style = ElementTheme.typography.fontBodySmRegular, - ) + // TCHAP hide the Matrix Id +// Text( +// text = userId, +// color = MaterialTheme.colorScheme.secondary, +// maxLines = 1, +// overflow = TextOverflow.Ellipsis, +// style = ElementTheme.typography.fontBodySmRegular, +// ) } } } diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfileView.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfileView.kt index d191ef2eee..6ab85a55ab 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfileView.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfileView.kt @@ -113,13 +113,14 @@ fun EditUserProfileView( onAvatarClick = { onAvatarClick() }, modifier = Modifier.align(Alignment.CenterHorizontally), ) - Spacer(modifier = Modifier.height(16.dp)) - Text( - modifier = Modifier.fillMaxWidth(), - text = state.userId.value, - style = ElementTheme.typography.fontBodyLgRegular, - textAlign = TextAlign.Center, - ) + // TCHAP hide the Matrix Id +// Spacer(modifier = Modifier.height(16.dp)) +// Text( +// modifier = Modifier.fillMaxWidth(), +// text = state.userId.value, +// style = ElementTheme.typography.fontBodyLgRegular, +// textAlign = TextAlign.Center, +// ) Spacer(modifier = Modifier.height(40.dp)) LabelledOutlinedTextField( label = stringResource(R.string.screen_edit_profile_display_name), diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsView.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsView.kt index fc2a051dc6..632b0fb386 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsView.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsView.kt @@ -368,7 +368,7 @@ private fun DmHeaderSection( ) TitleAndSubtitle( title = roomName, - subtitle = otherMember.userId.value, + subtitle = null, // TCHAP hide the Matrix Id ) } } diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/moderation/RoomMembersModerationView.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/moderation/RoomMembersModerationView.kt index a96e4ef46f..2d89d313fa 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/moderation/RoomMembersModerationView.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/moderation/RoomMembersModerationView.kt @@ -222,29 +222,28 @@ private fun RoomMemberActionsBottomSheet( .padding(bottom = 28.dp) .align(Alignment.CenterHorizontally) ) - roomMember.displayName?.let { - Text( - text = it, - style = ElementTheme.typography.fontHeadingLgBold, - maxLines = 1, - overflow = TextOverflow.Ellipsis, - textAlign = TextAlign.Center, - modifier = Modifier - .padding(start = 16.dp, end = 16.dp, bottom = 8.dp) - .fillMaxWidth() - ) - } + // TCHAP hide the Matrix Id Text( - text = roomMember.userId.toString(), - style = ElementTheme.typography.fontBodyLgRegular, - color = ElementTheme.colors.textSecondary, + text = roomMember.getBestName(), + style = ElementTheme.typography.fontHeadingLgBold, maxLines = 1, overflow = TextOverflow.Ellipsis, textAlign = TextAlign.Center, modifier = Modifier - .padding(horizontal = 16.dp) + .padding(start = 16.dp, end = 16.dp, bottom = 8.dp) .fillMaxWidth() ) +// Text( +// text = roomMember.userId.toString(), +// style = ElementTheme.typography.fontBodyLgRegular, +// color = ElementTheme.colors.textSecondary, +// maxLines = 1, +// overflow = TextOverflow.Ellipsis, +// textAlign = TextAlign.Center, +// modifier = Modifier +// .padding(horizontal = 16.dp) +// .fillMaxWidth() +// ) Spacer(modifier = Modifier.height(32.dp)) for (action in actions) { diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesView.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesView.kt index d89ad29b78..541638d753 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesView.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesView.kt @@ -378,16 +378,17 @@ private fun MemberRow( ) } } - // Id - userId?.let { - Text( - text = userId, - color = MaterialTheme.colorScheme.secondary, - maxLines = 1, - overflow = TextOverflow.Ellipsis, - style = ElementTheme.typography.fontBodySmRegular, - ) - } + // TCHAP hide the Matrix Id +// // Id +// userId?.let { +// Text( +// text = userId, +// color = MaterialTheme.colorScheme.secondary, +// maxLines = 1, +// overflow = TextOverflow.Ellipsis, +// style = ElementTheme.typography.fontBodySmRegular, +// ) +// } } trailingContent?.invoke() } diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/RoomSummaryRow.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/RoomSummaryRow.kt index d80f1c7334..bf111aeb6b 100644 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/RoomSummaryRow.kt +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/RoomSummaryRow.kt @@ -212,7 +212,7 @@ private fun InviteSubtitle( modifier: Modifier = Modifier ) { val subtitle = if (isDm) { - inviteSender?.userId?.value + null // TCHAP hide the Matrix Id } else { canonicalAlias?.value } diff --git a/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileHeaderSection.kt b/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileHeaderSection.kt index 78d87c275d..0a02326842 100644 --- a/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileHeaderSection.kt +++ b/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileHeaderSection.kt @@ -70,15 +70,16 @@ fun UserProfileHeaderSection( ) Spacer(modifier = Modifier.height(6.dp)) } - Text( - text = userId.value, - style = ElementTheme.typography.fontBodyLgRegular, - color = MaterialTheme.colorScheme.secondary, - modifier = Modifier - .fillMaxWidth() - .padding(horizontal = 16.dp), - textAlign = TextAlign.Center, - ) + // TCHAP hide the Matrix Id +// Text( +// text = userId.value, +// style = ElementTheme.typography.fontBodyLgRegular, +// color = MaterialTheme.colorScheme.secondary, +// modifier = Modifier +// .fillMaxWidth() +// .padding(horizontal = 16.dp), +// textAlign = TextAlign.Center, +// ) Spacer(Modifier.height(40.dp)) } } diff --git a/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileView.kt b/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileView.kt index f147798b19..911a3a59f2 100644 --- a/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileView.kt +++ b/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileView.kt @@ -30,6 +30,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 fr.gouv.tchap.android.libraries.matrix.api.core.toDisplayName import io.element.android.features.userprofile.shared.blockuser.BlockUserDialogs import io.element.android.features.userprofile.shared.blockuser.BlockUserSection import io.element.android.libraries.designsystem.components.async.AsyncActionView @@ -69,7 +70,7 @@ fun UserProfileView( UserProfileHeaderSection( avatarUrl = state.avatarUrl, userId = state.userId, - userName = state.userName, + userName = state.userName ?: state.userId.toDisplayName(), // TCHAP hide the Matrix Id openAvatarPreview = { avatarUrl -> openAvatarPreview(state.userName ?: state.userId.value, avatarUrl) }, diff --git a/libraries/designsystem/build.gradle.kts b/libraries/designsystem/build.gradle.kts index 81abc3127f..0085c6e6ac 100644 --- a/libraries/designsystem/build.gradle.kts +++ b/libraries/designsystem/build.gradle.kts @@ -42,6 +42,7 @@ android { implementation(libs.vanniktech.blurhash) implementation(projects.libraries.architecture) implementation(projects.libraries.preferences.api) + implementation(projects.libraries.tchaputils) implementation(projects.libraries.testtags) implementation(projects.libraries.uiStrings) diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/avatar/AvatarData.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/avatar/AvatarData.kt index 331c0fad4a..1d77c77729 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/avatar/AvatarData.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/avatar/AvatarData.kt @@ -17,6 +17,7 @@ package io.element.android.libraries.designsystem.components.avatar import androidx.compose.runtime.Immutable +import fr.gouv.tchap.libraries.tchaputils.TchapPatterns.toDisplayName @Immutable data class AvatarData( @@ -60,5 +61,5 @@ data class AvatarData( } fun AvatarData.getBestName(): String { - return name?.takeIf { it.isNotEmpty() } ?: id + return name?.takeIf { it.isNotEmpty() } ?: id.toDisplayName() } diff --git a/libraries/matrix/api/build.gradle.kts b/libraries/matrix/api/build.gradle.kts index b551dfa919..b54902ff3c 100644 --- a/libraries/matrix/api/build.gradle.kts +++ b/libraries/matrix/api/build.gradle.kts @@ -35,6 +35,7 @@ anvil { dependencies { implementation(projects.libraries.di) + implementation(projects.libraries.tchaputils) implementation(libs.dagger) implementation(projects.libraries.androidutils) implementation(projects.libraries.core) diff --git a/libraries/matrix/api/src/main/kotlin/fr/gouv/tchap/android/libraries/matrix/api/core/UserIdExt.kt b/libraries/matrix/api/src/main/kotlin/fr/gouv/tchap/android/libraries/matrix/api/core/UserIdExt.kt new file mode 100644 index 0000000000..cb00bb4ac5 --- /dev/null +++ b/libraries/matrix/api/src/main/kotlin/fr/gouv/tchap/android/libraries/matrix/api/core/UserIdExt.kt @@ -0,0 +1,30 @@ +/* + * MIT License + * + * Copyright (c) 2024. DINUM + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE + * OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package fr.gouv.tchap.android.libraries.matrix.api.core + +import fr.gouv.tchap.libraries.tchaputils.TchapPatterns.toDisplayName +import io.element.android.libraries.matrix.api.core.UserId + +fun UserId.toDisplayName() = this.value.toDisplayName() diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomMember.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomMember.kt index 4415e51327..2ef227b777 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomMember.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomMember.kt @@ -16,6 +16,7 @@ package io.element.android.libraries.matrix.api.room +import fr.gouv.tchap.android.libraries.matrix.api.core.toDisplayName import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.user.MatrixUser @@ -56,7 +57,7 @@ data class RoomMember( * Otherwise, the display name is returned. */ val disambiguatedDisplayName: String = when { - displayName == null -> userId.value + displayName == null -> userId.toDisplayName() // TCHAP hide the Matrix Id isNameAmbiguous -> "$displayName ($userId)" else -> displayName } @@ -77,7 +78,7 @@ enum class RoomMembershipState { * If the [RoomMember.displayName] is present and not empty it'll be used, otherwise the [RoomMember.userId] will be used. */ fun RoomMember.getBestName(): String { - return displayName?.takeIf { it.isNotEmpty() } ?: userId.value + return displayName?.takeIf { it.isNotEmpty() } ?: userId.toDisplayName() // TCHAP hide the Matrix Id } fun RoomMember.toMatrixUser() = MatrixUser( diff --git a/libraries/matrixui/build.gradle.kts b/libraries/matrixui/build.gradle.kts index 6a8a799cf3..ca64dd341b 100644 --- a/libraries/matrixui/build.gradle.kts +++ b/libraries/matrixui/build.gradle.kts @@ -43,6 +43,7 @@ dependencies { implementation(projects.libraries.designsystem) implementation(projects.libraries.core) implementation(projects.libraries.uiStrings) + implementation(projects.libraries.tchaputils) implementation(projects.libraries.testtags) implementation(libs.coil.compose) implementation(libs.coil.gif) diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserHeader.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserHeader.kt index 581b70dfb1..91ad15bd7a 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserHeader.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserHeader.kt @@ -88,16 +88,17 @@ private fun MatrixUserHeaderContent( overflow = TextOverflow.Ellipsis, color = ElementTheme.materialColors.primary, ) - // Id - if (matrixUser.displayName.isNullOrEmpty().not()) { - Text( - text = matrixUser.userId.value, - style = ElementTheme.typography.fontBodyMdRegular, - color = ElementTheme.materialColors.secondary, - maxLines = 1, - overflow = TextOverflow.Ellipsis - ) - } + // TCHAP hide the Matrix Id +// // Id +// if (matrixUser.displayName.isNullOrEmpty().not()) { +// Text( +// text = matrixUser.userId.value, +// style = ElementTheme.typography.fontBodyMdRegular, +// color = ElementTheme.materialColors.secondary, +// maxLines = 1, +// overflow = TextOverflow.Ellipsis +// ) +// } } } } diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/UserRow.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/UserRow.kt index f9eef6b990..96a18624f2 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/UserRow.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/UserRow.kt @@ -63,16 +63,17 @@ internal fun UserRow( color = MaterialTheme.colorScheme.primary, style = ElementTheme.typography.fontBodyLgRegular, ) - // Id - subtext?.let { - Text( - text = subtext, - color = MaterialTheme.colorScheme.secondary, - maxLines = 1, - overflow = TextOverflow.Ellipsis, - style = ElementTheme.typography.fontBodySmRegular, - ) - } + // TCHAP hide the Matrix Id +// // Id +// subtext?.let { +// Text( +// text = subtext, +// color = MaterialTheme.colorScheme.secondary, +// maxLines = 1, +// overflow = TextOverflow.Ellipsis, +// style = ElementTheme.typography.fontBodySmRegular, +// ) +// } } trailingContent?.invoke() } diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/messages/sender/SenderName.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/messages/sender/SenderName.kt index 5ff84ff292..e1bdee4739 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/messages/sender/SenderName.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/messages/sender/SenderName.kt @@ -27,6 +27,8 @@ import androidx.compose.ui.draw.clipToBounds import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp +import fr.gouv.tchap.android.libraries.matrix.api.core.toDisplayName +import fr.gouv.tchap.libraries.tchaputils.TchapPatterns.toDisplayName import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight @@ -51,16 +53,16 @@ fun SenderName( is ProfileTimelineDetails.Error, ProfileTimelineDetails.Pending, ProfileTimelineDetails.Unavailable -> { - MainText(text = senderId.value, mode = senderNameMode) + MainText(text = senderId.toDisplayName(), mode = senderNameMode) // TCHAP hide the Matrix Id } is ProfileTimelineDetails.Ready -> { val displayName = senderProfile.displayName if (displayName.isNullOrEmpty()) { - MainText(text = senderId.value, mode = senderNameMode) + MainText(text = senderId.toDisplayName(), mode = senderNameMode) // TCHAP hide the Matrix Id } else { MainText(text = displayName, mode = senderNameMode) if (senderProfile.displayNameAmbiguous) { - SecondaryText(text = senderId.value, mode = senderNameMode) + SecondaryText(text = senderId.toDisplayName(), mode = senderNameMode) // TCHAP hide the Matrix Id } } } diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/model/InviteSender.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/model/InviteSender.kt index dcc8e6e327..8920c5f5c8 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/model/InviteSender.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/model/InviteSender.kt @@ -39,7 +39,7 @@ data class InviteSender( @Composable fun annotatedString(): AnnotatedString { return stringResource(R.string.screen_invites_invited_you, displayName, userId.value).let { text -> - val senderNameStart = LocalContext.current.getString(R.string.screen_invites_invited_you).indexOf("%1\$s") + val senderNameStart = LocalContext.current.getString(R.string.screen_invites_invited_you).indexOf("%1\$s") // TCHAP text should be changed to hide the user id AnnotatedString( text = text, spanStyles = listOf( diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/model/MatrixUserExtensions.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/model/MatrixUserExtensions.kt index 813f4744b0..31e65ecc38 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/model/MatrixUserExtensions.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/model/MatrixUserExtensions.kt @@ -16,6 +16,7 @@ package io.element.android.libraries.matrix.ui.model +import fr.gouv.tchap.android.libraries.matrix.api.core.toDisplayName import io.element.android.libraries.designsystem.components.avatar.AvatarData import io.element.android.libraries.designsystem.components.avatar.AvatarSize import io.element.android.libraries.matrix.api.user.MatrixUser @@ -28,5 +29,5 @@ fun MatrixUser.getAvatarData(size: AvatarSize) = AvatarData( ) fun MatrixUser.getBestName(): String { - return displayName?.takeIf { it.isNotEmpty() } ?: userId.value + return displayName?.takeIf { it.isNotEmpty() } ?: userId.toDisplayName() // TCHAP hide the Matrix Id } diff --git a/libraries/tchaputils/build.gradle.kts b/libraries/tchaputils/build.gradle.kts new file mode 100644 index 0000000000..65de17dceb --- /dev/null +++ b/libraries/tchaputils/build.gradle.kts @@ -0,0 +1,11 @@ +plugins { + id("io.element.android-compose-library") +} + +android { + namespace = "fr.gouv.tchap.libraries.tchaputils" +} + +dependencies { + testImplementation(libs.test.junit) +} diff --git a/libraries/tchaputils/src/main/java/fr/gouv/tchap/libraries/tchaputils/TchapPatterns.kt b/libraries/tchaputils/src/main/java/fr/gouv/tchap/libraries/tchaputils/TchapPatterns.kt new file mode 100644 index 0000000000..e8822c208b --- /dev/null +++ b/libraries/tchaputils/src/main/java/fr/gouv/tchap/libraries/tchaputils/TchapPatterns.kt @@ -0,0 +1,225 @@ +/* + * MIT License + * + * Copyright (c) 2024. DINUM + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE + * OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package fr.gouv.tchap.libraries.tchaputils + +import java.util.Locale + +object TchapPatterns { + + /** + * Get the homeserver name of a matrix identifier. + * The identifier type may be any matrix identifier type: user id, room id, ... + * For example in case of "@jean-philippe.martin-modernisation.fr:matrix.test.org", this will return "matrix.test.org". + * in case of "!AAAAAAA:matrix.test.org", this will return "matrix.test.org". + * + * @param mxId the matrix identifier. + * @return the homeserver name, if any. + */ + fun getHomeserverNameFromMxId(mxId: String): String = mxId.substringAfter(":", "") + + /** + * Get the Tchap display name of the homeserver mentioned in a matrix identifier. + * The identifier type may be any matrix identifier type: user id, room id, ... + * The returned name is capitalize. + * The Tchap HS display name is the component mentioned before the suffix "tchap.gouv.fr" + * For example in case of "@jean-philippe.martin-modernisation.fr:name1.tchap.gouv.fr", this will return "Name1". + * in case of "@jean-philippe.martin-modernisation.fr:agent.name2.tchap.gouv.fr", this will return "Name2". + * + * @param mxId the matrix identifier. + * @return the Tchap display name of the homeserver. + */ + fun getHomeserverDisplayNameFromMxId(mxId: String): String { + var homeserverName = getHomeserverNameFromMxId(mxId) + if (homeserverName.contains("tchap.gouv.fr")) { + homeserverName.split("\\.".toRegex()).let { + if (it.size >= 4) homeserverName = it[it.size - 4] + } + } + return homeserverName.replaceFirstChar { if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString() } + } + + /** + * Tells whether a homeserver name corresponds to an external server or not. + * + * @param homeServerName the homeserver name to check. + * @return true if external. + */ + fun String.isExternalTchapServer() = this.isEmpty() || this.startsWith("e.") || this.startsWith("agent.externe.") + + /** + * Get name part of a display name by removing the domain part if any. + * For example in case of "Jean Martin `[Modernisation]`", this will return "Jean Martin". + * + * @param displayName the display name to compute. + * @return displayName without domain (or the display name itself if no domain has been found). + */ + fun getNameFromDisplayName(displayName: String): String { + return displayName.split(DISPLAY_NAME_FIRST_DELIMITER) + .first() + .trim() + } + + /** + * Get the room name from a display name according to the given room type. + * In the case of a direct message, it will remove the domain part of the display name. + * For example in case of "Jean Martin `[Modernisation]`", this will return "Jean Martin". + * + * Otherwise, it will keep the initial name. + * + * @param displayName the display name to compute. + * @param roomType the room type associated with the given display name. + * + * @return displayName without domain (or the display name itself if the room is not a DM). + */ +// fun getRoomNameFromDisplayName(displayName: String, roomType: TchapRoomType): String { +// return when (roomType) { +// TchapRoomType.DIRECT -> getNameFromDisplayName(displayName) +// else -> displayName +// } +// } + + /** + * Get the potential domain name from a display name. + * For example in case of "Jean Martin `[Modernisation]`", this will return "Modernisation". + * + * @param displayName the display name to compute. + * @return displayName without name, empty string if no domain is available. + */ + fun getDomainFromDisplayName(displayName: String): String { + return displayName.split(DISPLAY_NAME_FIRST_DELIMITER) + .elementAtOrNull(1) + ?.split(DISPLAY_NAME_SECOND_DELIMITER) + ?.first() + ?.trim() + ?: DEFAULT_EMPTY_STRING + } + + /** + * Build a display name from the tchap user identifier. + * We don't extract the domain for the moment in order to not display unexpected information. + * For example in case of "@jean-philippe.martin-modernisation.fr:matrix.org", this will return "Jean-Philippe Martin". + * Note: in case of an external user identifier, we return the local part of the id which corresponds to their email. + * + * @return displayName without domain, or null if the user identifier is not valid. + */ + fun String.toDisplayName(): String { + // Extract identifier from user ID. + val identifier = this.substringAfter('@').substringBefore(':') + val lastHyphenIndex = identifier.lastIndexOf('-') + + // Return the identifier as-is if no transformations were needed. + if (lastHyphenIndex == -1) return identifier + + return if (this.isExternalTchapUser()) { + // Handle external Tchap user case: replace single hyphen with '@'. + if (identifier.indexOf('-') == lastHyphenIndex) { + identifier.replaceRange(lastHyphenIndex..lastHyphenIndex, "@") + } else identifier + } else { + // Handle internal user case. + buildString { + var capitalizeNext = true + for (i in 0 until lastHyphenIndex) { + val char = identifier[i] + when { + (capitalizeNext && (char == '.' || char == '-')) -> continue + char == '.' -> { + // Replace the dot character by space character + append(' ') + capitalizeNext = true + } + char == '-' -> { + append(char) + capitalizeNext = true + } + capitalizeNext -> { + append(char.uppercaseChar()) + capitalizeNext = false + } + else -> append(char) + } + } + } + } + } + + /** + * Tells whether the provided tchap identifier corresponds to an extern user. + * Note: invalid tchap identifier will be considered as external. + * + * @param tchapUserId user identifier (ie. the matrix identifier). + * @return true if external. + */ + fun String.isExternalTchapUser(): Boolean { + val homeServerName = getHomeserverNameFromMxId(this) + return homeServerName.isExternalTchapServer() + } + + /** + * Create a room alias name with a prefix. + * + * @param prefix the alias name prefix. + * @return the suggested alias name. + */ + fun createRoomAliasName(prefix: String): String { + return prefix.trim().replace("[^a-zA-Z0-9]".toRegex(), "") + getRandomString(10) + } + + /** + * Create a room alias with a prefix. + * + * @param session the user's session. + * @param prefix the alias name prefix. + * @return the suggested alias. + */ + fun createRoomAlias(sessionId: String, prefix: String): String { + return "#${createRoomAliasName(prefix)}:${getHomeserverNameFromMxId(sessionId)}" + } + + /** + * Extract the local part of the given room alias. + * + * @param roomAlias the room alias to parse. + * @return the alias local part. + */ + fun extractRoomAliasName(roomAlias: String): String { + return roomAlias.substringAfter("#").substringBefore(":") + } + + /** + * Generate a random string of the given number of characters. + * + * @param length the random string length. + * @return the resulting random string. + */ + fun getRandomString(length: Int): String { + val charPool = ('a'..'z') + ('A'..'Z') + ('0'..'9') + return (1..length).map { charPool.random() }.joinToString("") + } + + private const val DISPLAY_NAME_FIRST_DELIMITER = "[" + private const val DISPLAY_NAME_SECOND_DELIMITER = "]" + private const val DEFAULT_EMPTY_STRING = "" +} diff --git a/libraries/tchaputils/src/test/java/fr/gouv/tchap/libraries/tchaputils/TchapPatternsTest.kt b/libraries/tchaputils/src/test/java/fr/gouv/tchap/libraries/tchaputils/TchapPatternsTest.kt new file mode 100644 index 0000000000..16d9673c2b --- /dev/null +++ b/libraries/tchaputils/src/test/java/fr/gouv/tchap/libraries/tchaputils/TchapPatternsTest.kt @@ -0,0 +1,123 @@ +/* + * MIT License + * + * Copyright (c) 2024. DINUM + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE + * OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package fr.gouv.tchap.libraries.tchaputils + +import fr.gouv.tchap.libraries.tchaputils.TchapPatterns.toDisplayName +import org.junit.Assert.assertEquals +import org.junit.Test + +class TchapPatternsTest { + + /** + * Test getting full name without domain. + */ + + @Test + fun `given a displayName if it contains brackets then return its first element after split`() { + // Given + val displayNameTest = "Nom Prenom [Modernisation]" + + // When + val result = fr.gouv.tchap.libraries.tchaputils.TchapPatterns.getNameFromDisplayName(displayNameTest) + + // Then + assertEquals(result, "Nom Prenom") + } + + @Test + fun `given a displayName if it doesn't contain brackets then return the original display name`() { + // Given + val displayNameTest = "Nom Prenom" + + // When + val result = fr.gouv.tchap.libraries.tchaputils.TchapPatterns.getNameFromDisplayName(displayNameTest) + + // Then + assertEquals(result, "Nom Prenom") + } + + /** + * Test getting domain only. + */ + + @Test + fun `given a displayName if it contains brackets then return domain name inside`() { + // Given + val displayNameTest = "Nom Prenom [Modernisation]" + + // When + val result = fr.gouv.tchap.libraries.tchaputils.TchapPatterns.getDomainFromDisplayName(displayNameTest) + + // Then + assertEquals(result, "Modernisation") + } + + @Test + fun `given a displayName if it doesn't contain brackets then return empty string`() { + // Given + val displayNameTest = "Nom Prenom" + + // When + val result = fr.gouv.tchap.libraries.tchaputils.TchapPatterns.getDomainFromDisplayName(displayNameTest) + + // Then + assertEquals(result, "") + } + + @Test + fun computeDisplayNameFromUserId_simple() { + assertEquals("Jean Martin", "@jean.martin-modernisation.fr:matrix.org".toDisplayName()) + } + + @Test + fun computeDisplayNameFromUserId_dash() { + assertEquals("Jean-Philippe Martin", "@jean-philippe.martin-modernisation.fr:matrix.org".toDisplayName()) + } + + @Test + fun computeDisplayNameFromUserId_dashes() { + assertEquals("Jean Martin De-La-Rampe", "@jean.martin.de-la-rampe-modernisation.gouv.fr:a.tchap.gouv.fr".toDisplayName()) + } + + @Test + fun computeDisplayNameFromUserId_emptydashes() { + assertEquals("Jean Martin De-La-Rampe", "@jean..martin..de--la--rampe-modernisation.gouv.fr:a.tchap.gouv.fr".toDisplayName()) + } + + @Test + fun computeDisplayNameFromUserId_dash_in_domain() { + assertEquals("Jerome Ploquin4-Developpement", "@jerome.ploquin4-developpement-durable.gouv.fr:a.tchap.gouv.fr".toDisplayName()) + } + + @Test + fun computeDisplayNameFromUserId_external_user() { + assertEquals("jerome.ploquin@otherdomain.fr", "@jerome.ploquin-otherdomain.fr:agent.externe.gouv.fr".toDisplayName()) + } + + @Test + fun computeDisplayNameFromUserId_external_user_dashes() { + assertEquals("jean-philippe.martin-other-domain.fr", "@jean-philippe.martin-other-domain.fr:agent.externe.gouv.fr".toDisplayName()) + } +} diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/MarkdownTextEditorState.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/MarkdownTextEditorState.kt index f1437ee1f5..af95d60176 100644 --- a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/MarkdownTextEditorState.kt +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/MarkdownTextEditorState.kt @@ -73,7 +73,7 @@ class MarkdownTextEditorState( } is ResolvedSuggestion.Member -> { val currentText = SpannableStringBuilder(text.value()) - val text = resolvedSuggestion.roomMember.displayName?.prependIndent("@") ?: resolvedSuggestion.roomMember.userId.value + val text = resolvedSuggestion.roomMember.displayName?.prependIndent("@") ?: resolvedSuggestion.roomMember.userId.value // TCHAP check needed about mxid displaying val link = permalinkBuilder.permalinkForUser(resolvedSuggestion.roomMember.userId).getOrNull() ?: return val mentionPill = mentionSpanProvider.getMentionSpanFor(text, link) currentText.replace(suggestion.start, suggestion.end, "@ ") From b235759540531b88c49b9f95b7b18cc4c5dd7182 Mon Sep 17 00:00:00 2001 From: yostyle Date: Wed, 21 Aug 2024 20:33:39 +0200 Subject: [PATCH 03/14] Refactoring --- .../components/avatar/AvatarData.kt | 4 +- .../libraries/matrix/api/core/UserIdExt.kt | 4 +- .../matrix/ui/messages/sender/SenderName.kt | 1 - .../libraries/tchaputils/TchapPatterns.kt | 62 ++++++------------- .../libraries/tchaputils/TchapPatternsTest.kt | 58 ++++++----------- 5 files changed, 42 insertions(+), 87 deletions(-) diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/avatar/AvatarData.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/avatar/AvatarData.kt index 1d77c77729..bdb9e499fd 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/avatar/AvatarData.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/avatar/AvatarData.kt @@ -17,7 +17,7 @@ package io.element.android.libraries.designsystem.components.avatar import androidx.compose.runtime.Immutable -import fr.gouv.tchap.libraries.tchaputils.TchapPatterns.toDisplayName +import fr.gouv.tchap.libraries.tchaputils.TchapPatterns.toUserDisplayName @Immutable data class AvatarData( @@ -61,5 +61,5 @@ data class AvatarData( } fun AvatarData.getBestName(): String { - return name?.takeIf { it.isNotEmpty() } ?: id.toDisplayName() + return name?.takeIf { it.isNotEmpty() } ?: id.toUserDisplayName() } diff --git a/libraries/matrix/api/src/main/kotlin/fr/gouv/tchap/android/libraries/matrix/api/core/UserIdExt.kt b/libraries/matrix/api/src/main/kotlin/fr/gouv/tchap/android/libraries/matrix/api/core/UserIdExt.kt index cb00bb4ac5..dcc7ab0543 100644 --- a/libraries/matrix/api/src/main/kotlin/fr/gouv/tchap/android/libraries/matrix/api/core/UserIdExt.kt +++ b/libraries/matrix/api/src/main/kotlin/fr/gouv/tchap/android/libraries/matrix/api/core/UserIdExt.kt @@ -24,7 +24,7 @@ package fr.gouv.tchap.android.libraries.matrix.api.core -import fr.gouv.tchap.libraries.tchaputils.TchapPatterns.toDisplayName +import fr.gouv.tchap.libraries.tchaputils.TchapPatterns.toUserDisplayName import io.element.android.libraries.matrix.api.core.UserId -fun UserId.toDisplayName() = this.value.toDisplayName() +fun UserId.toDisplayName() = this.value.toUserDisplayName() diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/messages/sender/SenderName.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/messages/sender/SenderName.kt index e1bdee4739..b139cf4be5 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/messages/sender/SenderName.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/messages/sender/SenderName.kt @@ -28,7 +28,6 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp import fr.gouv.tchap.android.libraries.matrix.api.core.toDisplayName -import fr.gouv.tchap.libraries.tchaputils.TchapPatterns.toDisplayName import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight diff --git a/libraries/tchaputils/src/main/java/fr/gouv/tchap/libraries/tchaputils/TchapPatterns.kt b/libraries/tchaputils/src/main/java/fr/gouv/tchap/libraries/tchaputils/TchapPatterns.kt index e8822c208b..42a548447b 100644 --- a/libraries/tchaputils/src/main/java/fr/gouv/tchap/libraries/tchaputils/TchapPatterns.kt +++ b/libraries/tchaputils/src/main/java/fr/gouv/tchap/libraries/tchaputils/TchapPatterns.kt @@ -37,7 +37,7 @@ object TchapPatterns { * @param mxId the matrix identifier. * @return the homeserver name, if any. */ - fun getHomeserverNameFromMxId(mxId: String): String = mxId.substringAfter(":", "") + fun String.toHomeserverName() = this.substringAfter(":", "") /** * Get the Tchap display name of the homeserver mentioned in a matrix identifier. @@ -50,10 +50,10 @@ object TchapPatterns { * @param mxId the matrix identifier. * @return the Tchap display name of the homeserver. */ - fun getHomeserverDisplayNameFromMxId(mxId: String): String { - var homeserverName = getHomeserverNameFromMxId(mxId) + fun String.toHomeserverDisplayName(): String { + var homeserverName = this.toHomeserverName() if (homeserverName.contains("tchap.gouv.fr")) { - homeserverName.split("\\.".toRegex()).let { + homeserverName.split('.').let { if (it.size >= 4) homeserverName = it[it.size - 4] } } @@ -68,19 +68,6 @@ object TchapPatterns { */ fun String.isExternalTchapServer() = this.isEmpty() || this.startsWith("e.") || this.startsWith("agent.externe.") - /** - * Get name part of a display name by removing the domain part if any. - * For example in case of "Jean Martin `[Modernisation]`", this will return "Jean Martin". - * - * @param displayName the display name to compute. - * @return displayName without domain (or the display name itself if no domain has been found). - */ - fun getNameFromDisplayName(displayName: String): String { - return displayName.split(DISPLAY_NAME_FIRST_DELIMITER) - .first() - .trim() - } - /** * Get the room name from a display name according to the given room type. * In the case of a direct message, it will remove the domain part of the display name. @@ -100,6 +87,15 @@ object TchapPatterns { // } // } + /** + * Get name part of a display name by removing the domain part if any. + * For example in case of "Jean Martin `[Modernisation]`", this will return "Jean Martin". + * + * @param displayName the display name to compute. + * @return displayName without domain (or the display name itself if no domain has been found). + */ + fun String.getUserName() = this.substringBefore('[').trim() + /** * Get the potential domain name from a display name. * For example in case of "Jean Martin `[Modernisation]`", this will return "Modernisation". @@ -107,14 +103,7 @@ object TchapPatterns { * @param displayName the display name to compute. * @return displayName without name, empty string if no domain is available. */ - fun getDomainFromDisplayName(displayName: String): String { - return displayName.split(DISPLAY_NAME_FIRST_DELIMITER) - .elementAtOrNull(1) - ?.split(DISPLAY_NAME_SECOND_DELIMITER) - ?.first() - ?.trim() - ?: DEFAULT_EMPTY_STRING - } + fun String.getUserDomain() = this.substringBeforeLast(']', "").substringAfterLast('[', "").trim() /** * Build a display name from the tchap user identifier. @@ -124,7 +113,7 @@ object TchapPatterns { * * @return displayName without domain, or null if the user identifier is not valid. */ - fun String.toDisplayName(): String { + fun String.toUserDisplayName(): String { // Extract identifier from user ID. val identifier = this.substringAfter('@').substringBefore(':') val lastHyphenIndex = identifier.lastIndexOf('-') @@ -172,10 +161,7 @@ object TchapPatterns { * @param tchapUserId user identifier (ie. the matrix identifier). * @return true if external. */ - fun String.isExternalTchapUser(): Boolean { - val homeServerName = getHomeserverNameFromMxId(this) - return homeServerName.isExternalTchapServer() - } + fun String.isExternalTchapUser() = this.toHomeserverName().isExternalTchapServer() /** * Create a room alias name with a prefix. @@ -183,9 +169,7 @@ object TchapPatterns { * @param prefix the alias name prefix. * @return the suggested alias name. */ - fun createRoomAliasName(prefix: String): String { - return prefix.trim().replace("[^a-zA-Z0-9]".toRegex(), "") + getRandomString(10) - } + fun createRoomAliasName(prefix: String) = "${prefix.trim().replace("[^a-zA-Z0-9]".toRegex(), "")}${getRandomString(10)}" /** * Create a room alias with a prefix. @@ -194,9 +178,7 @@ object TchapPatterns { * @param prefix the alias name prefix. * @return the suggested alias. */ - fun createRoomAlias(sessionId: String, prefix: String): String { - return "#${createRoomAliasName(prefix)}:${getHomeserverNameFromMxId(sessionId)}" - } + fun createRoomAlias(sessionId: String, prefix: String) = "#${createRoomAliasName(prefix)}:${sessionId.toHomeserverName()}" /** * Extract the local part of the given room alias. @@ -204,9 +186,7 @@ object TchapPatterns { * @param roomAlias the room alias to parse. * @return the alias local part. */ - fun extractRoomAliasName(roomAlias: String): String { - return roomAlias.substringAfter("#").substringBefore(":") - } + fun extractRoomAliasName(roomAlias: String) = roomAlias.substringAfter("#").substringBefore(":") /** * Generate a random string of the given number of characters. @@ -218,8 +198,4 @@ object TchapPatterns { val charPool = ('a'..'z') + ('A'..'Z') + ('0'..'9') return (1..length).map { charPool.random() }.joinToString("") } - - private const val DISPLAY_NAME_FIRST_DELIMITER = "[" - private const val DISPLAY_NAME_SECOND_DELIMITER = "]" - private const val DEFAULT_EMPTY_STRING = "" } diff --git a/libraries/tchaputils/src/test/java/fr/gouv/tchap/libraries/tchaputils/TchapPatternsTest.kt b/libraries/tchaputils/src/test/java/fr/gouv/tchap/libraries/tchaputils/TchapPatternsTest.kt index 16d9673c2b..cd0d6aba2b 100644 --- a/libraries/tchaputils/src/test/java/fr/gouv/tchap/libraries/tchaputils/TchapPatternsTest.kt +++ b/libraries/tchaputils/src/test/java/fr/gouv/tchap/libraries/tchaputils/TchapPatternsTest.kt @@ -24,7 +24,10 @@ package fr.gouv.tchap.libraries.tchaputils -import fr.gouv.tchap.libraries.tchaputils.TchapPatterns.toDisplayName +import fr.gouv.tchap.libraries.tchaputils.TchapPatterns.getUserDomain +import fr.gouv.tchap.libraries.tchaputils.TchapPatterns.getUserName +import fr.gouv.tchap.libraries.tchaputils.TchapPatterns.toUserDisplayName +import fr.gouv.tchap.libraries.tchaputils.TchapPatterns.toHomeserverDisplayName import org.junit.Assert.assertEquals import org.junit.Test @@ -36,26 +39,12 @@ class TchapPatternsTest { @Test fun `given a displayName if it contains brackets then return its first element after split`() { - // Given - val displayNameTest = "Nom Prenom [Modernisation]" - - // When - val result = fr.gouv.tchap.libraries.tchaputils.TchapPatterns.getNameFromDisplayName(displayNameTest) - - // Then - assertEquals(result, "Nom Prenom") + assertEquals( "Nom Prenom", "Nom Prenom [Modernisation]".getUserName()) } @Test fun `given a displayName if it doesn't contain brackets then return the original display name`() { - // Given - val displayNameTest = "Nom Prenom" - - // When - val result = fr.gouv.tchap.libraries.tchaputils.TchapPatterns.getNameFromDisplayName(displayNameTest) - - // Then - assertEquals(result, "Nom Prenom") + assertEquals("Nom Prenom", "Nom Prenom ".getUserName()) } /** @@ -64,60 +53,51 @@ class TchapPatternsTest { @Test fun `given a displayName if it contains brackets then return domain name inside`() { - // Given - val displayNameTest = "Nom Prenom [Modernisation]" - - // When - val result = fr.gouv.tchap.libraries.tchaputils.TchapPatterns.getDomainFromDisplayName(displayNameTest) - - // Then - assertEquals(result, "Modernisation") + assertEquals("Modernisation", "Nom Prenom [Modernisation]".getUserDomain()) } @Test fun `given a displayName if it doesn't contain brackets then return empty string`() { - // Given - val displayNameTest = "Nom Prenom" - - // When - val result = fr.gouv.tchap.libraries.tchaputils.TchapPatterns.getDomainFromDisplayName(displayNameTest) + assertEquals("", "Nom Prenom ".getUserDomain()) + } - // Then - assertEquals(result, "") + @Test + fun `given a display name of a homeserver mentioned in a matrix identifier`() { + assertEquals("A", "@jean-philippe.martin-modernisation.fr:a.tchap.gouv.fr".toHomeserverDisplayName()) } @Test fun computeDisplayNameFromUserId_simple() { - assertEquals("Jean Martin", "@jean.martin-modernisation.fr:matrix.org".toDisplayName()) + assertEquals("Jean Martin", "@jean.martin-modernisation.fr:matrix.org".toUserDisplayName()) } @Test fun computeDisplayNameFromUserId_dash() { - assertEquals("Jean-Philippe Martin", "@jean-philippe.martin-modernisation.fr:matrix.org".toDisplayName()) + assertEquals("Jean-Philippe Martin", "@jean-philippe.martin-modernisation.fr:matrix.org".toUserDisplayName()) } @Test fun computeDisplayNameFromUserId_dashes() { - assertEquals("Jean Martin De-La-Rampe", "@jean.martin.de-la-rampe-modernisation.gouv.fr:a.tchap.gouv.fr".toDisplayName()) + assertEquals("Jean Martin De-La-Rampe", "@jean.martin.de-la-rampe-modernisation.gouv.fr:a.tchap.gouv.fr".toUserDisplayName()) } @Test fun computeDisplayNameFromUserId_emptydashes() { - assertEquals("Jean Martin De-La-Rampe", "@jean..martin..de--la--rampe-modernisation.gouv.fr:a.tchap.gouv.fr".toDisplayName()) + assertEquals("Jean Martin De-La-Rampe", "@jean..martin..de--la--rampe-modernisation.gouv.fr:a.tchap.gouv.fr".toUserDisplayName()) } @Test fun computeDisplayNameFromUserId_dash_in_domain() { - assertEquals("Jerome Ploquin4-Developpement", "@jerome.ploquin4-developpement-durable.gouv.fr:a.tchap.gouv.fr".toDisplayName()) + assertEquals("Jerome Ploquin4-Developpement", "@jerome.ploquin4-developpement-durable.gouv.fr:a.tchap.gouv.fr".toUserDisplayName()) } @Test fun computeDisplayNameFromUserId_external_user() { - assertEquals("jerome.ploquin@otherdomain.fr", "@jerome.ploquin-otherdomain.fr:agent.externe.gouv.fr".toDisplayName()) + assertEquals("jerome.ploquin@otherdomain.fr", "@jerome.ploquin-otherdomain.fr:agent.externe.gouv.fr".toUserDisplayName()) } @Test fun computeDisplayNameFromUserId_external_user_dashes() { - assertEquals("jean-philippe.martin-other-domain.fr", "@jean-philippe.martin-other-domain.fr:agent.externe.gouv.fr".toDisplayName()) + assertEquals("jean-philippe.martin-other-domain.fr", "@jean-philippe.martin-other-domain.fr:agent.externe.gouv.fr".toUserDisplayName()) } } From dd759c2d22ac71ccc938a64a4d8b7f0538502072 Mon Sep 17 00:00:00 2001 From: yostyle Date: Thu, 29 Aug 2024 17:15:48 +0200 Subject: [PATCH 04/14] hide matrix id in release mode --- .../ic_launcher.xml | 0 .../ic_launcher_round.xml | 0 .../SearchMultipleUsersResultItem.kt | 6 ++++ .../components/SearchSingleUserResultItem.kt | 4 +++ .../impl/components/SearchUserBar.kt | 3 ++ .../impl/components/UserListView.kt | 2 ++ .../impl/root/CreateRoomRootPresenter.kt | 1 + .../impl/root/CreateRoomRootState.kt | 1 + .../impl/root/CreateRoomRootStateProvider.kt | 1 + .../impl/root/CreateRoomRootView.kt | 1 + .../impl/userlist/DefaultUserListPresenter.kt | 3 ++ .../createroom/impl/userlist/UserListState.kt | 1 + .../impl/userlist/UserListStateProvider.kt | 1 + .../userlist/DefaultUserListPresenterTest.kt | 8 +++++ .../messages/impl/MessagesPresenter.kt | 1 + .../features/messages/impl/MessagesState.kt | 1 + .../messages/impl/MessagesStateProvider.kt | 2 ++ .../features/messages/impl/MessagesView.kt | 2 ++ .../suggestions/SuggestionsPickerView.kt | 10 ++++-- .../ReactionSummaryPresenter.kt | 3 ++ .../reactionsummary/ReactionSummaryState.kt | 1 + .../ReactionSummaryStateProvider.kt | 1 + .../reactionsummary/ReactionSummaryView.kt | 19 ++++++----- .../bottomsheet/ReadReceiptBottomSheet.kt | 1 + .../ReadReceiptBottomSheetPresenter.kt | 6 +++- .../ReadReceiptBottomSheetState.kt | 1 + .../ReadReceiptBottomSheetStateProvider.kt | 1 + .../messages/impl/MessagesPresenterTest.kt | 4 +-- .../ReactionSummaryPresenterTest.kt | 4 ++- .../ReadReceiptBottomSheetPresenterTest.kt | 3 +- .../blockedusers/BlockedUsersPresenter.kt | 3 ++ .../impl/blockedusers/BlockedUsersState.kt | 1 + .../BlockedUsersStatePreviewProvider.kt | 1 + .../impl/blockedusers/BlockedUsersView.kt | 3 ++ .../impl/root/PreferencesRootPresenter.kt | 3 ++ .../impl/root/PreferencesRootState.kt | 1 + .../impl/root/PreferencesRootStateProvider.kt | 1 + .../impl/root/PreferencesRootView.kt | 1 + .../preferences/impl/user/UserPreferences.kt | 4 ++- .../editprofile/EditUserProfilePresenter.kt | 3 ++ .../user/editprofile/EditUserProfileState.kt | 1 + .../EditUserProfileStateProvider.kt | 1 + .../user/editprofile/EditUserProfileView.kt | 34 ++++++++++--------- .../blockedusers/BlockedUsersPresenterTest.kt | 4 +++ .../impl/root/PreferencesRootPresenterTest.kt | 3 ++ .../EditUserProfilePresenterTest.kt | 4 +++ .../roomdetails/impl/RoomDetailsPresenter.kt | 3 ++ .../roomdetails/impl/RoomDetailsState.kt | 1 + .../impl/RoomDetailsStateProvider.kt | 1 + .../roomdetails/impl/RoomDetailsView.kt | 4 ++- .../roomdetails/impl/di/RoomMemberModule.kt | 4 ++- .../impl/invite/RoomInviteMembersPresenter.kt | 3 ++ .../impl/invite/RoomInviteMembersState.kt | 1 + .../invite/RoomInviteMembersStateProvider.kt | 1 + .../impl/invite/RoomInviteMembersView.kt | 3 ++ .../impl/members/RoomMemberListPresenter.kt | 3 ++ .../impl/members/RoomMemberListState.kt | 1 + .../members/RoomMemberListStateProvider.kt | 1 + .../impl/members/RoomMemberListView.kt | 14 ++++++++ .../details/RoomMemberDetailsPresenter.kt | 3 ++ .../DefaultRoomMembersModerationPresenter.kt | 3 ++ .../RoomMembersModerationPresenter.kt | 1 + .../moderation/RoomMembersModerationState.kt | 1 + ...omMembersModerationStatePreviewProvider.kt | 1 + .../moderation/RoomMembersModerationView.kt | 30 +++++++++------- .../changeroles/ChangeRolesPresenter.kt | 3 ++ .../changeroles/ChangeRolesState.kt | 1 + .../changeroles/ChangeRolesStateProvider.kt | 1 + .../changeroles/ChangeRolesView.kt | 33 ++++++++++++------ .../roomdetails/RoomDetailsPresenterTest.kt | 5 ++- .../invite/RoomInviteMembersPresenterTest.kt | 11 ++++++ .../members/RoomMemberListPresenterTest.kt | 4 +++ .../details/RoomMemberDetailsPresenterTest.kt | 4 +++ ...faultRoomMembersModerationPresenterTest.kt | 4 +++ .../changeroles/ChangeRolesPresenterTest.kt | 4 +++ .../impl/RoomListContentStateProvider.kt | 1 + .../roomlist/impl/RoomListPresenter.kt | 3 ++ .../features/roomlist/impl/RoomListState.kt | 1 + .../impl/components/RoomListContentView.kt | 1 + .../impl/components/RoomSummaryRow.kt | 7 ++-- .../impl/search/RoomListSearchPresenter.kt | 3 ++ .../impl/search/RoomListSearchState.kt | 1 + .../search/RoomListSearchStateProvider.kt | 1 + .../impl/search/RoomListSearchView.kt | 1 + .../roomlist/impl/RoomListPresenterTest.kt | 4 +++ .../search/RoomListSearchPresenterTest.kt | 10 ++++-- .../userprofile/impl/di/UserProfileModule.kt | 4 ++- .../impl/root/UserProfilePresenter.kt | 3 ++ .../impl/UserProfilePresenterTest.kt | 4 +++ .../shared/UserProfileHeaderSection.kt | 23 +++++++------ .../userprofile/shared/UserProfileState.kt | 1 + .../shared/UserProfileStateProvider.kt | 1 + .../userprofile/shared/UserProfileView.kt | 3 +- .../matrix/ui/components/CheckableUserRow.kt | 10 ++++++ .../matrix/ui/components/MatrixUserHeader.kt | 26 +++++++------- .../matrix/ui/components/MatrixUserRow.kt | 4 ++- .../libraries/matrix/ui/components/UserRow.kt | 24 +++++++------ .../libraries/tchaputils/TchapPatterns.kt | 2 +- .../android/samples/minimal/RoomListScreen.kt | 2 ++ 99 files changed, 348 insertions(+), 101 deletions(-) rename appicon/enterprise/src/main/res/{mipmap-anydpi => mipmap-anydpi-v26}/ic_launcher.xml (100%) rename appicon/enterprise/src/main/res/{mipmap-anydpi => mipmap-anydpi-v26}/ic_launcher_round.xml (100%) diff --git a/appicon/enterprise/src/main/res/mipmap-anydpi/ic_launcher.xml b/appicon/enterprise/src/main/res/mipmap-anydpi-v26/ic_launcher.xml similarity index 100% rename from appicon/enterprise/src/main/res/mipmap-anydpi/ic_launcher.xml rename to appicon/enterprise/src/main/res/mipmap-anydpi-v26/ic_launcher.xml diff --git a/appicon/enterprise/src/main/res/mipmap-anydpi/ic_launcher_round.xml b/appicon/enterprise/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml similarity index 100% rename from appicon/enterprise/src/main/res/mipmap-anydpi/ic_launcher_round.xml rename to appicon/enterprise/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/components/SearchMultipleUsersResultItem.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/components/SearchMultipleUsersResultItem.kt index 37ae6bd2fc..18dcb2205d 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/components/SearchMultipleUsersResultItem.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/components/SearchMultipleUsersResultItem.kt @@ -32,6 +32,7 @@ import io.element.android.libraries.usersearch.api.UserSearchResult @Composable fun SearchMultipleUsersResultItem( + isDebugBuild: Boolean, searchResult: UserSearchResult, isUserSelected: Boolean, onCheckedChange: (Boolean) -> Unit, @@ -50,6 +51,7 @@ fun SearchMultipleUsersResultItem( ) } CheckableUserRow( + isDebugBuild = isDebugBuild, checked = isUserSelected, modifier = modifier, data = data, @@ -62,6 +64,7 @@ fun SearchMultipleUsersResultItem( internal fun SearchMultipleUsersResultItemPreview() = ElementThemedPreview { Column { SearchMultipleUsersResultItem( + isDebugBuild = false, searchResult = UserSearchResult( aMatrixUser(), isUnresolved = false @@ -71,6 +74,7 @@ internal fun SearchMultipleUsersResultItemPreview() = ElementThemedPreview { ) HorizontalDivider() SearchMultipleUsersResultItem( + isDebugBuild = false, searchResult = UserSearchResult( aMatrixUser(), isUnresolved = false @@ -80,6 +84,7 @@ internal fun SearchMultipleUsersResultItemPreview() = ElementThemedPreview { ) HorizontalDivider() SearchMultipleUsersResultItem( + isDebugBuild = false, searchResult = UserSearchResult( aMatrixUser(), isUnresolved = true @@ -89,6 +94,7 @@ internal fun SearchMultipleUsersResultItemPreview() = ElementThemedPreview { ) HorizontalDivider() SearchMultipleUsersResultItem( + isDebugBuild = false, searchResult = UserSearchResult( aMatrixUser(), isUnresolved = true diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/components/SearchSingleUserResultItem.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/components/SearchSingleUserResultItem.kt index c71ef06b99..d0d90564eb 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/components/SearchSingleUserResultItem.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/components/SearchSingleUserResultItem.kt @@ -32,6 +32,7 @@ import io.element.android.libraries.usersearch.api.UserSearchResult @Composable fun SearchSingleUserResultItem( + isDebugBuild: Boolean, searchResult: UserSearchResult, onClick: () -> Unit, modifier: Modifier = Modifier, @@ -44,6 +45,7 @@ fun SearchSingleUserResultItem( ) } else { MatrixUserRow( + isDebugBuild = isDebugBuild, modifier = modifier.clickable(onClick = onClick), matrixUser = searchResult.matrixUser, avatarSize = AvatarSize.UserListItem, @@ -56,11 +58,13 @@ fun SearchSingleUserResultItem( internal fun SearchSingleUserResultItemPreview() = ElementThemedPreview { Column { SearchSingleUserResultItem( + isDebugBuild = false, searchResult = UserSearchResult(aMatrixUser(), isUnresolved = false), onClick = {}, ) HorizontalDivider() SearchSingleUserResultItem( + isDebugBuild = false, searchResult = UserSearchResult(aMatrixUser(), isUnresolved = true), onClick = {}, ) diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/components/SearchUserBar.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/components/SearchUserBar.kt index 0aafd515f8..a7b80f76ce 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/components/SearchUserBar.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/components/SearchUserBar.kt @@ -48,6 +48,7 @@ import kotlinx.collections.immutable.ImmutableList @OptIn(ExperimentalMaterial3Api::class) @Composable fun SearchUserBar( + isDebugBuild: Boolean, query: String, state: SearchBarResultState>, showLoader: Boolean, @@ -112,6 +113,7 @@ fun SearchUserBar( if (isMultiSelectionEnable) { itemsIndexed(users) { index, searchResult -> SearchMultipleUsersResultItem( + isDebugBuild = isDebugBuild, modifier = Modifier.fillMaxWidth(), searchResult = searchResult, isUserSelected = selectedUsers.contains(searchResult.matrixUser), @@ -130,6 +132,7 @@ fun SearchUserBar( } else { itemsIndexed(users) { index, searchResult -> SearchSingleUserResultItem( + isDebugBuild = isDebugBuild, modifier = Modifier.fillMaxWidth(), searchResult = searchResult, onClick = { onUserSelect(searchResult.matrixUser) } diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/components/UserListView.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/components/UserListView.kt index 7eead66276..6c05a61d16 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/components/UserListView.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/components/UserListView.kt @@ -53,6 +53,7 @@ fun UserListView( modifier = modifier, ) { SearchUserBar( + isDebugBuild = state.isDebugBuild, modifier = Modifier.fillMaxWidth(), query = state.searchQuery, state = state.searchResults, @@ -98,6 +99,7 @@ fun UserListView( recentDirectRoom.matrixUser.userId == it.userId } CheckableUserRow( + isDebugBuild = state.isDebugBuild, checked = isSelected, onCheckedChange = { if (isSelected) { diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootPresenter.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootPresenter.kt index 594a87c327..3cc6827039 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootPresenter.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootPresenter.kt @@ -66,6 +66,7 @@ class CreateRoomRootPresenter @Inject constructor( } return CreateRoomRootState( + isDebugBuild = buildMeta.isDebuggable, applicationName = buildMeta.applicationName, userListState = userListState, startDmAction = startDmActionState.value, diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootState.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootState.kt index 185c08c131..97cbf060ae 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootState.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootState.kt @@ -21,6 +21,7 @@ import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.matrix.api.core.RoomId data class CreateRoomRootState( + val isDebugBuild: Boolean, val applicationName: String, val userListState: UserListState, val startDmAction: AsyncAction, diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootStateProvider.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootStateProvider.kt index 0638d8abbb..287895df43 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootStateProvider.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootStateProvider.kt @@ -67,6 +67,7 @@ fun aCreateRoomRootState( startDmAction: AsyncAction = AsyncAction.Uninitialized, eventSink: (CreateRoomRootEvents) -> Unit = {}, ) = CreateRoomRootState( + isDebugBuild = false, applicationName = applicationName, userListState = userListState, startDmAction = startDmAction, diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootView.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootView.kt index 015483ff7f..0622db0416 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootView.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootView.kt @@ -175,6 +175,7 @@ private fun CreateRoomActionButtonsList( state.userListState.recentDirectRooms.forEach { recentDirectRoom -> item { MatrixUserRow( + isDebugBuild = state.isDebugBuild, modifier = Modifier.clickable( onClick = { onDmClick(recentDirectRoom.roomId) diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/userlist/DefaultUserListPresenter.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/userlist/DefaultUserListPresenter.kt index 31daf62513..4d973b4688 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/userlist/DefaultUserListPresenter.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/userlist/DefaultUserListPresenter.kt @@ -28,6 +28,7 @@ import com.squareup.anvil.annotations.ContributesBinding import dagger.assisted.Assisted import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject +import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.designsystem.theme.components.SearchBarResultState import io.element.android.libraries.di.SessionScope import io.element.android.libraries.matrix.api.MatrixClient @@ -44,6 +45,7 @@ class DefaultUserListPresenter @AssistedInject constructor( @Assisted val args: UserListPresenterArgs, @Assisted val userRepository: UserRepository, @Assisted val userListDataStore: UserListDataStore, + private val buildMeta: BuildMeta, private val matrixClient: MatrixClient, ) : UserListPresenter { @AssistedFactory @@ -84,6 +86,7 @@ class DefaultUserListPresenter @AssistedInject constructor( } return UserListState( + isDebugBuild = buildMeta.isDebuggable, searchQuery = searchQuery, searchResults = searchResults, selectedUsers = selectedUsers.toImmutableList(), diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/userlist/UserListState.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/userlist/UserListState.kt index b7b61fbe52..f6e73a6a0e 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/userlist/UserListState.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/userlist/UserListState.kt @@ -23,6 +23,7 @@ import io.element.android.libraries.usersearch.api.UserSearchResult import kotlinx.collections.immutable.ImmutableList data class UserListState( + val isDebugBuild: Boolean, val searchQuery: String, val searchResults: SearchBarResultState>, val showSearchLoader: Boolean, diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/userlist/UserListStateProvider.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/userlist/UserListStateProvider.kt index fc46ae1953..794bba1239 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/userlist/UserListStateProvider.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/userlist/UserListStateProvider.kt @@ -77,6 +77,7 @@ fun aUserListState( recentDirectRooms: List = emptyList(), eventSink: (UserListEvents) -> Unit = {}, ) = UserListState( + isDebugBuild = false, searchQuery = searchQuery, isSearchActive = isSearchActive, searchResults = searchResults, diff --git a/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/userlist/DefaultUserListPresenterTest.kt b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/userlist/DefaultUserListPresenterTest.kt index 0786d02446..53bec50df5 100644 --- a/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/userlist/DefaultUserListPresenterTest.kt +++ b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/userlist/DefaultUserListPresenterTest.kt @@ -22,6 +22,7 @@ import app.cash.turbine.test import com.google.common.truth.Truth.assertThat import io.element.android.libraries.designsystem.theme.components.SearchBarResultState import io.element.android.libraries.matrix.test.FakeMatrixClient +import io.element.android.libraries.matrix.test.core.aBuildMeta import io.element.android.libraries.matrix.ui.components.aMatrixUser import io.element.android.libraries.matrix.ui.components.aMatrixUserList import io.element.android.libraries.usersearch.api.UserSearchResult @@ -38,6 +39,7 @@ class DefaultUserListPresenterTest { val warmUpRule = WarmUpRule() private val userRepository = FakeUserRepository() + private val buildMeta = aBuildMeta() @Test fun `present - initial state for single selection`() = runTest { @@ -46,6 +48,7 @@ class DefaultUserListPresenterTest { UserListPresenterArgs(selectionMode = SelectionMode.Single), userRepository, UserListDataStore(), + buildMeta, FakeMatrixClient(), ) moleculeFlow(RecompositionMode.Immediate) { @@ -68,6 +71,7 @@ class DefaultUserListPresenterTest { UserListPresenterArgs(selectionMode = SelectionMode.Multiple), userRepository, UserListDataStore(), + buildMeta, FakeMatrixClient(), ) moleculeFlow(RecompositionMode.Immediate) { @@ -90,6 +94,7 @@ class DefaultUserListPresenterTest { UserListPresenterArgs(selectionMode = SelectionMode.Single), userRepository, UserListDataStore(), + buildMeta, FakeMatrixClient(), ) moleculeFlow(RecompositionMode.Immediate) { @@ -127,6 +132,7 @@ class DefaultUserListPresenterTest { ), userRepository, UserListDataStore(), + buildMeta, FakeMatrixClient(), ) moleculeFlow(RecompositionMode.Immediate) { @@ -180,6 +186,7 @@ class DefaultUserListPresenterTest { ), userRepository, UserListDataStore(), + buildMeta, FakeMatrixClient(), ) moleculeFlow(RecompositionMode.Immediate) { @@ -206,6 +213,7 @@ class DefaultUserListPresenterTest { UserListPresenterArgs(selectionMode = SelectionMode.Single), userRepository, UserListDataStore(), + buildMeta, FakeMatrixClient(), ) moleculeFlow(RecompositionMode.Immediate) { diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt index a7f3dd682a..3ab2d060cd 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt @@ -212,6 +212,7 @@ class MessagesPresenter @AssistedInject constructor( } return MessagesState( + isDebugBuild = buildMeta.isDebuggable, roomId = room.roomId, roomName = roomName, roomAvatar = roomAvatar, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesState.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesState.kt index 172111e862..b3f3086fbe 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesState.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesState.kt @@ -34,6 +34,7 @@ import kotlinx.collections.immutable.ImmutableList @Immutable data class MessagesState( + val isDebugBuild: Boolean, val roomId: RoomId, val roomName: AsyncData, val roomAvatar: AsyncData, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesStateProvider.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesStateProvider.kt index 97436c2bc0..f5484fbb76 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesStateProvider.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesStateProvider.kt @@ -124,6 +124,7 @@ fun aMessagesState( pinnedMessagesBannerState: PinnedMessagesBannerState = aLoadedPinnedMessagesBannerState(), eventSink: (MessagesEvents) -> Unit = {}, ) = MessagesState( + isDebugBuild = false, roomId = RoomId("!id:domain"), roomName = roomName, roomAvatar = roomAvatar, @@ -184,6 +185,7 @@ fun aReadReceiptBottomSheetState( selectedEvent: TimelineItem.Event? = null, eventSink: (ReadReceiptBottomSheetEvents) -> Unit = {}, ) = ReadReceiptBottomSheetState( + isDebugBuild = false, selectedEvent = selectedEvent, eventSink = eventSink, ) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesView.kt index a578995487..13bb662a67 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesView.kt @@ -90,6 +90,7 @@ import io.element.android.features.messages.impl.voicemessages.composer.VoiceMes import io.element.android.features.messages.impl.voicemessages.composer.VoiceMessageSendingFailedDialog import io.element.android.features.networkmonitor.api.ui.ConnectivityIndicatorView import io.element.android.libraries.androidutils.ui.hideKeyboard +import io.element.android.libraries.core.bool.orFalse import io.element.android.libraries.designsystem.atomic.molecules.IconTitlePlaceholdersRowMolecule import io.element.android.libraries.designsystem.components.ProgressDialog import io.element.android.libraries.designsystem.components.ProgressDialogType @@ -446,6 +447,7 @@ private fun MessagesViewComposerBottomSheetContents( return available } }), + isDebugBuild = state.isDebugBuild, roomId = state.roomId, roomName = state.roomName.dataOrNull(), roomAvatarData = state.roomAvatar.dataOrNull(), diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/suggestions/SuggestionsPickerView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/suggestions/SuggestionsPickerView.kt index bf8497adc8..2b4d0e051b 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/suggestions/SuggestionsPickerView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/suggestions/SuggestionsPickerView.kt @@ -32,6 +32,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import io.element.android.compound.theme.ElementTheme +import io.element.android.features.messages.impl.MessagesState import io.element.android.features.messages.impl.R import io.element.android.libraries.designsystem.components.avatar.Avatar import io.element.android.libraries.designsystem.components.avatar.AvatarData @@ -54,6 +55,7 @@ import kotlinx.collections.immutable.persistentListOf @Composable fun SuggestionsPickerView( + isDebugBuild: Boolean, roomId: RoomId, roomName: String?, roomAvatarData: AvatarData?, @@ -76,6 +78,7 @@ fun SuggestionsPickerView( ) { Column(modifier = Modifier.fillParentMaxWidth()) { SuggestionItemView( + isDebugBuild = isDebugBuild, suggestion = it, roomId = roomId.value, roomName = roomName, @@ -91,6 +94,7 @@ fun SuggestionsPickerView( @Composable private fun SuggestionItemView( + isDebugBuild: Boolean, suggestion: ResolvedSuggestion, roomId: String, roomName: String?, @@ -115,7 +119,7 @@ private fun SuggestionItemView( } val subtitle = when (suggestion) { is ResolvedSuggestion.AtRoom -> "@room" - is ResolvedSuggestion.Member -> suggestion.roomMember.userId.value + is ResolvedSuggestion.Member -> suggestion.roomMember.userId.value.takeIf { isDebugBuild } // TCHAP hide the Matrix Id in release mode is ResolvedSuggestion.Alias -> suggestion.roomAlias.value } @@ -135,8 +139,7 @@ private fun SuggestionItemView( overflow = TextOverflow.Ellipsis, ) } - // TCHAP hide the Matrix Id - if (subtitle != null) { + subtitle?.let { Text( text = subtitle, style = ElementTheme.typography.fontBodySmRegular, @@ -171,6 +174,7 @@ internal fun SuggestionsPickerViewPreview() { ) } SuggestionsPickerView( + isDebugBuild = false, roomId = RoomId("!room:matrix.org"), roomName = "Room", roomAvatarData = null, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryPresenter.kt index bba17d7f9d..450f4a9cb5 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryPresenter.kt @@ -24,6 +24,7 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import io.element.android.libraries.architecture.Presenter +import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.matrix.api.room.MatrixRoom import io.element.android.libraries.matrix.api.room.RoomMember import io.element.android.libraries.matrix.api.room.roomMembers @@ -33,6 +34,7 @@ import kotlinx.collections.immutable.toImmutableList import javax.inject.Inject class ReactionSummaryPresenter @Inject constructor( + private val buildMeta: BuildMeta, private val room: MatrixRoom, ) : Presenter { @Composable @@ -47,6 +49,7 @@ class ReactionSummaryPresenter @Inject constructor( fun handleEvents(event: ReactionSummaryEvents) { when (event) { is ReactionSummaryEvents.ShowReactionSummary -> target.value = ReactionSummaryState.Summary( + isDebugBuild = buildMeta.isDebuggable, reactions = event.reactions.toImmutableList(), selectedKey = event.selectedKey, selectedEventId = event.eventId diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryState.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryState.kt index 1ccfdc9abf..a909773881 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryState.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryState.kt @@ -25,6 +25,7 @@ data class ReactionSummaryState( val eventSink: (ReactionSummaryEvents) -> Unit ) { data class Summary( + val isDebugBuild: Boolean, val reactions: ImmutableList, val selectedKey: String, val selectedEventId: EventId diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryStateProvider.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryStateProvider.kt index d6642922bb..127ad4a487 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryStateProvider.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryStateProvider.kt @@ -28,6 +28,7 @@ fun anActionListState(): ReactionSummaryState { val reactions = aTimelineItemReactions(8, true).reactions return ReactionSummaryState( target = ReactionSummaryState.Summary( + isDebugBuild = false, reactions = reactions, selectedKey = reactions[0].key, selectedEventId = EventId("$1234"), diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryView.kt index e4ba35b296..425e3c1b20 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryView.kt @@ -156,6 +156,7 @@ private fun SheetContent( val user = sender.user ?: MatrixUser(userId = sender.senderId) SenderRow( + isDebugBuild = summary.isDebugBuild, avatarData = user.getAvatarData(AvatarSize.UserListItem), name = user.getBestName(), // TCHAP should be applied in Element X userId = user.userId.value, @@ -233,6 +234,7 @@ private fun AggregatedReactionButton( @Composable private fun SenderRow( + isDebugBuild: Boolean, avatarData: AvatarData, name: String, userId: String, @@ -271,14 +273,15 @@ private fun SenderRow( style = ElementTheme.typography.fontBodySmRegular, ) } - // TCHAP hide the Matrix Id -// Text( -// text = userId, -// color = MaterialTheme.colorScheme.secondary, -// maxLines = 1, -// overflow = TextOverflow.Ellipsis, -// style = ElementTheme.typography.fontBodySmRegular, -// ) + if (isDebugBuild) { // TCHAP hide the Matrix Id in release mode + Text( + text = userId, + color = MaterialTheme.colorScheme.secondary, + maxLines = 1, + overflow = TextOverflow.Ellipsis, + style = ElementTheme.typography.fontBodySmRegular, + ) + } } } } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/bottomsheet/ReadReceiptBottomSheet.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/bottomsheet/ReadReceiptBottomSheet.kt index d54d48eeab..06e7f8dda5 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/bottomsheet/ReadReceiptBottomSheet.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/bottomsheet/ReadReceiptBottomSheet.kt @@ -101,6 +101,7 @@ private fun ReadReceiptBottomSheetContent( ) { val userId = UserId(it.avatarData.id) MatrixUserRow( + isDebugBuild = state.isDebugBuild, modifier = Modifier.clickable { onUserDataClick(userId) }, matrixUser = MatrixUser( userId = userId, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/bottomsheet/ReadReceiptBottomSheetPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/bottomsheet/ReadReceiptBottomSheetPresenter.kt index f1b1deb34d..ca60e7cecb 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/bottomsheet/ReadReceiptBottomSheetPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/bottomsheet/ReadReceiptBottomSheetPresenter.kt @@ -23,9 +23,12 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import io.element.android.features.messages.impl.timeline.model.TimelineItem import io.element.android.libraries.architecture.Presenter +import io.element.android.libraries.core.meta.BuildMeta import javax.inject.Inject -class ReadReceiptBottomSheetPresenter @Inject constructor() : Presenter { +class ReadReceiptBottomSheetPresenter @Inject constructor( + private val buildMeta: BuildMeta, +) : Presenter { @Composable override fun present(): ReadReceiptBottomSheetState { var selectedEvent: TimelineItem.Event? by remember { mutableStateOf(null) } @@ -43,6 +46,7 @@ class ReadReceiptBottomSheetPresenter @Inject constructor() : Presenter Unit, ) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/bottomsheet/ReadReceiptBottomSheetStateProvider.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/bottomsheet/ReadReceiptBottomSheetStateProvider.kt index 3a3bf1dbc4..2a5b9233b7 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/bottomsheet/ReadReceiptBottomSheetStateProvider.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/bottomsheet/ReadReceiptBottomSheetStateProvider.kt @@ -30,6 +30,7 @@ class ReadReceiptBottomSheetStateProvider : PreviewParameterProvider ReadReceiptBottomSheetState( + isDebugBuild = false, selectedEvent = aTimelineItemEvent( readReceiptState = TimelineItemReadReceipts( receipts = readReceiptViewState.receipts.map { readReceiptData -> diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt index f20dcacc7c..2d61e26538 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt @@ -1063,9 +1063,9 @@ class MessagesPresenterTest { sessionPreferencesStore = sessionPreferencesStore, ) - val readReceiptBottomSheetPresenter = ReadReceiptBottomSheetPresenter() + val readReceiptBottomSheetPresenter = ReadReceiptBottomSheetPresenter(buildMeta = aBuildMeta()) val customReactionPresenter = CustomReactionPresenter(emojibaseProvider = FakeEmojibaseProvider()) - val reactionSummaryPresenter = ReactionSummaryPresenter(room = matrixRoom) + val reactionSummaryPresenter = ReactionSummaryPresenter(buildMeta = aBuildMeta(), room = matrixRoom) return MessagesPresenter( room = matrixRoom, diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryPresenterTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryPresenterTest.kt index 5924e4b2eb..a6329fdbdd 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryPresenterTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryPresenterTest.kt @@ -26,6 +26,7 @@ import io.element.android.libraries.matrix.test.AN_AVATAR_URL import io.element.android.libraries.matrix.test.AN_EVENT_ID import io.element.android.libraries.matrix.test.A_USER_ID import io.element.android.libraries.matrix.test.A_USER_NAME +import io.element.android.libraries.matrix.test.core.aBuildMeta import io.element.android.libraries.matrix.test.room.FakeMatrixRoom import io.element.android.libraries.matrix.test.room.aRoomMember import io.element.android.tests.testutils.WarmUpRule @@ -41,10 +42,11 @@ class ReactionSummaryPresenterTest { private val aggregatedReaction = anAggregatedReaction(userId = A_USER_ID, key = "👍", isHighlighted = true) private val roomMember = aRoomMember(userId = A_USER_ID, avatarUrl = AN_AVATAR_URL, displayName = A_USER_NAME) private val summaryEvent = ReactionSummaryEvents.ShowReactionSummary(AN_EVENT_ID, listOf(aggregatedReaction), aggregatedReaction.key) + private val buildMeta = aBuildMeta() private val room = FakeMatrixRoom().apply { givenRoomMembersState(MatrixRoomMembersState.Ready(persistentListOf(roomMember))) } - private val presenter = ReactionSummaryPresenter(room) + private val presenter = ReactionSummaryPresenter(buildMeta, room) @Test fun `present - handle showing and hiding the reaction summary`() = runTest { diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/bottomsheet/ReadReceiptBottomSheetPresenterTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/bottomsheet/ReadReceiptBottomSheetPresenterTest.kt index 6efb36e9c4..ce62163aa1 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/bottomsheet/ReadReceiptBottomSheetPresenterTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/bottomsheet/ReadReceiptBottomSheetPresenterTest.kt @@ -21,6 +21,7 @@ import app.cash.molecule.moleculeFlow import app.cash.turbine.test import com.google.common.truth.Truth.assertThat import io.element.android.features.messages.impl.timeline.aTimelineItemEvent +import io.element.android.libraries.matrix.test.core.aBuildMeta import io.element.android.tests.testutils.WarmUpRule import kotlinx.coroutines.test.runTest import org.junit.Rule @@ -58,5 +59,5 @@ class ReadReceiptBottomSheetPresenterTest { } } - private fun createPresenter() = ReadReceiptBottomSheetPresenter() + private fun createPresenter() = ReadReceiptBottomSheetPresenter(buildMeta = aBuildMeta()) } diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/blockedusers/BlockedUsersPresenter.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/blockedusers/BlockedUsersPresenter.kt index 5a8d9200e5..df614e311a 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/blockedusers/BlockedUsersPresenter.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/blockedusers/BlockedUsersPresenter.kt @@ -28,6 +28,7 @@ import androidx.compose.runtime.setValue import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.architecture.runUpdatingState +import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.featureflag.api.FeatureFlagService import io.element.android.libraries.featureflag.api.FeatureFlags import io.element.android.libraries.matrix.api.MatrixClient @@ -39,6 +40,7 @@ import kotlinx.coroutines.launch import javax.inject.Inject class BlockedUsersPresenter @Inject constructor( + private val buildMeta: BuildMeta, private val matrixClient: MatrixClient, private val featureFlagService: FeatureFlagService, ) : Presenter { @@ -91,6 +93,7 @@ class BlockedUsersPresenter @Inject constructor( } } return BlockedUsersState( + isDebugBuild = buildMeta.isDebuggable, blockedUsers = ignoredMatrixUser.toPersistentList(), unblockUserAction = unblockUserAction.value, eventSink = ::handleEvents diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/blockedusers/BlockedUsersState.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/blockedusers/BlockedUsersState.kt index 42ba3d5a11..c8f8ef7afd 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/blockedusers/BlockedUsersState.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/blockedusers/BlockedUsersState.kt @@ -21,6 +21,7 @@ import io.element.android.libraries.matrix.api.user.MatrixUser import kotlinx.collections.immutable.ImmutableList data class BlockedUsersState( + val isDebugBuild: Boolean, val blockedUsers: ImmutableList, val unblockUserAction: AsyncAction, val eventSink: (BlockedUsersEvents) -> Unit, diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/blockedusers/BlockedUsersStatePreviewProvider.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/blockedusers/BlockedUsersStatePreviewProvider.kt index a09213a333..c7be7d0af6 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/blockedusers/BlockedUsersStatePreviewProvider.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/blockedusers/BlockedUsersStatePreviewProvider.kt @@ -41,6 +41,7 @@ internal fun aBlockedUsersState( eventSink: (BlockedUsersEvents) -> Unit = {}, ): BlockedUsersState { return BlockedUsersState( + isDebugBuild = false, blockedUsers = blockedUsers.toPersistentList(), unblockUserAction = unblockUserAction, eventSink = eventSink, diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/blockedusers/BlockedUsersView.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/blockedusers/BlockedUsersView.kt index 680f22cc45..0b2a6121b3 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/blockedusers/BlockedUsersView.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/blockedusers/BlockedUsersView.kt @@ -75,6 +75,7 @@ fun BlockedUsersView( ) { items(state.blockedUsers) { matrixUser -> BlockedUserItem( + isDebugBuild = state.isDebugBuild, matrixUser = matrixUser, onClick = { state.eventSink(BlockedUsersEvents.Unblock(it)) } ) @@ -121,10 +122,12 @@ fun BlockedUsersView( @Composable private fun BlockedUserItem( + isDebugBuild: Boolean, matrixUser: MatrixUser, onClick: (UserId) -> Unit, ) { MatrixUserRow( + isDebugBuild = isDebugBuild, modifier = Modifier.clickable { onClick(matrixUser.userId) }, matrixUser = matrixUser, ) diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenter.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenter.kt index 48fc3b7f9d..597469cc53 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenter.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenter.kt @@ -27,6 +27,7 @@ import androidx.compose.runtime.remember import io.element.android.features.logout.api.direct.DirectLogoutPresenter import io.element.android.features.preferences.impl.utils.ShowDeveloperSettingsProvider import io.element.android.libraries.architecture.Presenter +import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.designsystem.utils.snackbar.SnackbarDispatcher import io.element.android.libraries.designsystem.utils.snackbar.collectSnackbarMessageAsState import io.element.android.libraries.featureflag.api.FeatureFlagService @@ -43,6 +44,7 @@ import kotlinx.coroutines.launch import javax.inject.Inject class PreferencesRootPresenter @Inject constructor( + private val buildMeta: BuildMeta, private val matrixClient: MatrixClient, private val sessionVerificationService: SessionVerificationService, private val analyticsService: AnalyticsService, @@ -108,6 +110,7 @@ class PreferencesRootPresenter @Inject constructor( } return PreferencesRootState( + isDebugBuild = buildMeta.isDebuggable, myUser = matrixUser.value, version = versionFormatter.get(), deviceId = matrixClient.deviceId, diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootState.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootState.kt index 27f8934985..ae0faf259e 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootState.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootState.kt @@ -21,6 +21,7 @@ import io.element.android.libraries.designsystem.utils.snackbar.SnackbarMessage import io.element.android.libraries.matrix.api.user.MatrixUser data class PreferencesRootState( + val isDebugBuild: Boolean, val myUser: MatrixUser, val version: String, val deviceId: String?, diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootStateProvider.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootStateProvider.kt index 2e75034c01..29b045f2fa 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootStateProvider.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootStateProvider.kt @@ -25,6 +25,7 @@ fun aPreferencesRootState( myUser: MatrixUser, eventSink: (PreferencesRootEvents) -> Unit = { _ -> }, ) = PreferencesRootState( + isDebugBuild = false, myUser = myUser, version = "Version 1.1 (1)", deviceId = "ILAKNDNASDLK", diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootView.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootView.kt index c11e348db5..cc2a8e648d 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootView.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootView.kt @@ -77,6 +77,7 @@ fun PreferencesRootView( snackbarHost = { SnackbarHost(snackbarHostState) } ) { UserPreferences( + isDebugBuild = state.isDebugBuild, modifier = Modifier.clickable { onOpenUserProfile(state.myUser) }, diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/UserPreferences.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/UserPreferences.kt index 59c8e72cc6..833684a64e 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/UserPreferences.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/UserPreferences.kt @@ -27,10 +27,12 @@ import io.element.android.libraries.matrix.ui.components.MatrixUserWithNullProvi @Composable fun UserPreferences( + isDebugBuild: Boolean, user: MatrixUser?, modifier: Modifier = Modifier, ) { MatrixUserHeader( + isDebugBuild = isDebugBuild, modifier = modifier, matrixUser = user ) @@ -39,5 +41,5 @@ fun UserPreferences( @PreviewsDayNight @Composable internal fun UserPreferencesPreview(@PreviewParameter(MatrixUserWithNullProvider::class) matrixUser: MatrixUser?) = ElementPreview { - UserPreferences(matrixUser) + UserPreferences(isDebugBuild = false, matrixUser) } diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfilePresenter.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfilePresenter.kt index e62f1077d8..0e895f2152 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfilePresenter.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfilePresenter.kt @@ -34,6 +34,7 @@ import dagger.assisted.AssistedInject import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.architecture.runCatchingUpdatingState +import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.core.mimetype.MimeTypes import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.user.MatrixUser @@ -50,6 +51,7 @@ import timber.log.Timber class EditUserProfilePresenter @AssistedInject constructor( @Assisted private val matrixUser: MatrixUser, private val matrixClient: MatrixClient, + private val buildMeta: BuildMeta, private val mediaPickerProvider: PickerProvider, private val mediaPreProcessor: MediaPreProcessor, permissionsPresenterFactory: PermissionsPresenter.Factory, @@ -121,6 +123,7 @@ class EditUserProfilePresenter @AssistedInject constructor( } return EditUserProfileState( + isDebugBuild = buildMeta.isDebuggable, userId = matrixUser.userId, displayName = userDisplayName.orEmpty(), userAvatarUrl = userAvatarUri, diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfileState.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfileState.kt index d85936d5d8..3ba01101e0 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfileState.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfileState.kt @@ -24,6 +24,7 @@ import io.element.android.libraries.permissions.api.PermissionsState import kotlinx.collections.immutable.ImmutableList data class EditUserProfileState( + val isDebugBuild: Boolean, val userId: UserId, val displayName: String, val userAvatarUrl: Uri?, diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfileStateProvider.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfileStateProvider.kt index 9d0d027433..782e26110d 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfileStateProvider.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfileStateProvider.kt @@ -31,6 +31,7 @@ open class EditUserProfileStateProvider : PreviewParameterProvider = emptyList(), eventSink: (RoomDetailsEvent) -> Unit = {}, ) = RoomDetailsState( + isDebugBuild = false, roomId = roomId, roomName = roomName, roomAlias = roomAlias, diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsView.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsView.kt index 632b0fb386..b34b454414 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsView.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsView.kt @@ -138,6 +138,7 @@ fun RoomDetailsView( } is RoomDetailsType.Dm -> { DmHeaderSection( + isDebugBuild = state.isDebugBuild, me = state.roomType.me, otherMember = state.roomType.otherMember, roomName = state.roomName, @@ -348,6 +349,7 @@ private fun RoomHeaderSection( @Composable private fun DmHeaderSection( + isDebugBuild: Boolean, me: RoomMember, otherMember: RoomMember, roomName: String, @@ -368,7 +370,7 @@ private fun DmHeaderSection( ) TitleAndSubtitle( title = roomName, - subtitle = null, // TCHAP hide the Matrix Id + subtitle = otherMember.userId.value.takeIf { isDebugBuild }, // TCHAP hide the Matrix Id in release mode ) } } diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/di/RoomMemberModule.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/di/RoomMemberModule.kt index 79aa5c6315..a3e1819f76 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/di/RoomMemberModule.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/di/RoomMemberModule.kt @@ -21,6 +21,7 @@ import dagger.Module import dagger.Provides import io.element.android.features.createroom.api.StartDMAction import io.element.android.features.roomdetails.impl.members.details.RoomMemberDetailsPresenter +import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.di.RoomScope import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.core.UserId @@ -32,12 +33,13 @@ object RoomMemberModule { @Provides fun provideRoomMemberDetailsPresenterFactory( matrixClient: MatrixClient, + buildMeta: BuildMeta, room: MatrixRoom, startDMAction: StartDMAction, ): RoomMemberDetailsPresenter.Factory { return object : RoomMemberDetailsPresenter.Factory { override fun create(roomMemberId: UserId): RoomMemberDetailsPresenter { - return RoomMemberDetailsPresenter(roomMemberId, matrixClient, room, startDMAction) + return RoomMemberDetailsPresenter(roomMemberId, buildMeta, matrixClient, room, startDMAction) } } } diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersPresenter.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersPresenter.kt index 60f5f82ebd..ee618a2489 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersPresenter.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersPresenter.kt @@ -29,6 +29,7 @@ import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.architecture.runCatchingUpdatingState import io.element.android.libraries.core.coroutine.CoroutineDispatchers +import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.designsystem.theme.components.SearchBarResultState import io.element.android.libraries.matrix.api.room.RoomMember import io.element.android.libraries.matrix.api.room.RoomMembershipState @@ -43,6 +44,7 @@ import kotlinx.coroutines.withContext import javax.inject.Inject class RoomInviteMembersPresenter @Inject constructor( + private val buildMeta: BuildMeta, private val userRepository: UserRepository, private val roomMemberListDataSource: RoomMemberListDataSource, private val coroutineDispatchers: CoroutineDispatchers, @@ -70,6 +72,7 @@ class RoomInviteMembersPresenter @Inject constructor( } return RoomInviteMembersState( + isDebugBuild = buildMeta.isDebuggable, canInvite = selectedUsers.value.isNotEmpty(), selectedUsers = selectedUsers.value, searchQuery = searchQuery, diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersState.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersState.kt index 84fb1b0986..78a1df3c10 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersState.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersState.kt @@ -21,6 +21,7 @@ import io.element.android.libraries.matrix.api.user.MatrixUser import kotlinx.collections.immutable.ImmutableList data class RoomInviteMembersState( + val isDebugBuild: Boolean, val canInvite: Boolean, val searchQuery: String, val showSearchLoader: Boolean, diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersStateProvider.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersStateProvider.kt index ca4e4ac7d2..520824266d 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersStateProvider.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersStateProvider.kt @@ -87,6 +87,7 @@ private fun aRoomInviteMembersState( showSearchLoader: Boolean = false, ): RoomInviteMembersState { return RoomInviteMembersState( + isDebugBuild = false, canInvite = canInvite, searchQuery = searchQuery, searchResults = searchResults, diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersView.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersView.kt index 51ab1886f9..565f14db80 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersView.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersView.kt @@ -85,6 +85,7 @@ fun RoomInviteMembersView( verticalArrangement = Arrangement.spacedBy(16.dp), ) { RoomInviteMembersSearchBar( + isDebugBuild = state.isDebugBuild, modifier = Modifier.fillMaxWidth(), query = state.searchQuery, showLoader = state.showSearchLoader, @@ -137,6 +138,7 @@ private fun RoomInviteMembersTopBar( @OptIn(ExperimentalMaterial3Api::class) @Composable private fun RoomInviteMembersSearchBar( + isDebugBuild: Boolean, query: String, state: SearchBarResultState>, showLoader: Boolean, @@ -207,6 +209,7 @@ private fun RoomInviteMembersSearchBar( ) } CheckableUserRow( + isDebugBuild = isDebugBuild, checked = invitableUser.isSelected, enabled = enabled, data = data, diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListPresenter.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListPresenter.kt index 01e1cf99c2..0b0b9c8089 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListPresenter.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListPresenter.kt @@ -34,6 +34,7 @@ import io.element.android.features.roomdetails.impl.members.moderation.RoomMembe import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.core.coroutine.CoroutineDispatchers +import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.designsystem.theme.components.SearchBarResultState import io.element.android.libraries.matrix.api.room.MatrixRoom import io.element.android.libraries.matrix.api.room.MatrixRoomMembersState @@ -46,6 +47,7 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.withContext class RoomMemberListPresenter @AssistedInject constructor( + private val buildMeta: BuildMeta, private val room: MatrixRoom, private val roomMemberListDataSource: RoomMemberListDataSource, private val coroutineDispatchers: CoroutineDispatchers, @@ -155,6 +157,7 @@ class RoomMemberListPresenter @AssistedInject constructor( } return RoomMemberListState( + isDebugBuild = buildMeta.isDebuggable, roomMembers = roomMembers, searchQuery = searchQuery, searchResults = searchResults, diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListState.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListState.kt index b71da8bfd8..9d95b7a2ae 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListState.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListState.kt @@ -23,6 +23,7 @@ import io.element.android.libraries.matrix.api.room.RoomMember import kotlinx.collections.immutable.ImmutableList data class RoomMemberListState( + val isDebugBuild: Boolean, val roomMembers: AsyncData, val searchQuery: String, val searchResults: SearchBarResultState>, diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListStateProvider.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListStateProvider.kt index 11132040b0..8969cfdce6 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListStateProvider.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListStateProvider.kt @@ -116,6 +116,7 @@ internal fun aRoomMemberListState( searchResults: SearchBarResultState> = SearchBarResultState.Initial(), moderationState: RoomMembersModerationState = aRoomMembersModerationState(), ) = RoomMemberListState( + isDebugBuild = false, roomMembers = roomMembers, searchQuery = "", searchResults = searchResults, diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListView.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListView.kt index b0110b7039..a53cff8cf2 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListView.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListView.kt @@ -116,6 +116,7 @@ fun RoomMemberListView( verticalArrangement = Arrangement.spacedBy(16.dp), ) { RoomMemberSearchBar( + isDebugBuild = state.isDebugBuild, query = state.searchQuery, state = state.searchResults, active = state.isSearchActive, @@ -129,6 +130,7 @@ fun RoomMemberListView( if (!state.isSearchActive) { RoomMemberList( + isDebugBuild = state.isDebugBuild, roomMembers = state.roomMembers, showMembersCount = true, canDisplayBannedUsersControls = state.moderationState.canDisplayBannedUsers, @@ -149,6 +151,7 @@ fun RoomMemberListView( @OptIn(ExperimentalMaterial3Api::class, ExperimentalFoundationApi::class) @Composable private fun RoomMemberList( + isDebugBuild: Boolean, roomMembers: AsyncData, showMembersCount: Boolean, selectedSection: SelectedSection, @@ -194,6 +197,7 @@ private fun RoomMemberList( is AsyncData.Failure -> failureItem(roomMembers.error) is AsyncData.Loading, is AsyncData.Success -> memberItems( + isDebugBuild = isDebugBuild, roomMembers = roomMembers.dataOrNull() ?: return@LazyColumn, selectedSection = selectedSection, onSelectUser = onSelectUser, @@ -205,6 +209,7 @@ private fun RoomMemberList( } private fun LazyListScope.memberItems( + isDebugBuild: Boolean, roomMembers: RoomMembers, selectedSection: SelectedSection, onSelectUser: (RoomMember) -> Unit, @@ -214,6 +219,7 @@ private fun LazyListScope.memberItems( SelectedSection.MEMBERS -> { if (roomMembers.invited.isNotEmpty()) { roomMemberListSection( + isDebugBuild = isDebugBuild, headerText = { stringResource(id = R.string.screen_room_member_list_pending_header_title) }, members = roomMembers.invited, onMemberSelected = { onSelectUser(it) } @@ -221,6 +227,7 @@ private fun LazyListScope.memberItems( } if (roomMembers.joined.isNotEmpty()) { roomMemberListSection( + isDebugBuild = isDebugBuild, headerText = { if (showMembersCount) { val memberCount = roomMembers.joined.count() @@ -237,6 +244,7 @@ private fun LazyListScope.memberItems( SelectedSection.BANNED -> { // Banned users if (roomMembers.banned.isNotEmpty()) { roomMemberListSection( + isDebugBuild = isDebugBuild, headerText = null, members = roomMembers.banned, onMemberSelected = { onSelectUser(it) } @@ -277,6 +285,7 @@ private fun LazyListScope.failureItem(failure: Throwable) { } private fun LazyListScope.roomMemberListSection( + isDebugBuild: Boolean, headerText: @Composable (() -> String)?, members: ImmutableList?, onMemberSelected: (RoomMember) -> Unit, @@ -293,6 +302,7 @@ private fun LazyListScope.roomMemberListSection( } items(members.orEmpty()) { matrixUser -> RoomMemberListItem( + isDebugBuild = isDebugBuild, modifier = Modifier.fillMaxWidth(), roomMember = matrixUser, onClick = { onMemberSelected(matrixUser) } @@ -302,6 +312,7 @@ private fun LazyListScope.roomMemberListSection( @Composable private fun RoomMemberListItem( + isDebugBuild: Boolean, roomMember: RoomMember, onClick: () -> Unit, modifier: Modifier = Modifier, @@ -312,6 +323,7 @@ private fun RoomMemberListItem( RoomMember.Role.USER -> null } MatrixUserRow( + isDebugBuild = isDebugBuild, modifier = modifier.clickable(onClick = onClick), matrixUser = roomMember.toMatrixUser(), avatarSize = AvatarSize.UserListItem, @@ -356,6 +368,7 @@ private fun RoomMemberListTopBar( @OptIn(ExperimentalMaterial3Api::class) @Composable private fun RoomMemberSearchBar( + isDebugBuild: Boolean, query: String, state: SearchBarResultState>, active: Boolean, @@ -376,6 +389,7 @@ private fun RoomMemberSearchBar( resultState = state, resultHandler = { results -> RoomMemberList( + isDebugBuild = isDebugBuild, roomMembers = results, showMembersCount = false, onSelectUser = { onSelectUser(it) }, diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/details/RoomMemberDetailsPresenter.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/details/RoomMemberDetailsPresenter.kt index 78dcea4c6d..999fc2d138 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/details/RoomMemberDetailsPresenter.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/details/RoomMemberDetailsPresenter.kt @@ -36,6 +36,7 @@ import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.core.bool.orFalse +import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.UserId @@ -50,6 +51,7 @@ import kotlinx.coroutines.launch class RoomMemberDetailsPresenter @AssistedInject constructor( @Assisted private val roomMemberId: UserId, + private val buildMeta: BuildMeta, private val client: MatrixClient, private val room: MatrixRoom, private val startDMAction: StartDMAction, @@ -155,6 +157,7 @@ class RoomMemberDetailsPresenter @AssistedInject constructor( } return UserProfileState( + isDebugBuild = buildMeta.isDebuggable, userId = roomMemberId, userName = userName, avatarUrl = userAvatar, diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/moderation/DefaultRoomMembersModerationPresenter.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/moderation/DefaultRoomMembersModerationPresenter.kt index 326255effd..7fe6c53f41 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/moderation/DefaultRoomMembersModerationPresenter.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/moderation/DefaultRoomMembersModerationPresenter.kt @@ -30,6 +30,7 @@ import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.architecture.runUpdatingState import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.core.extensions.finally +import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.di.RoomScope import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.room.MatrixRoom @@ -49,6 +50,7 @@ import javax.inject.Inject @ContributesBinding(RoomScope::class) class DefaultRoomMembersModerationPresenter @Inject constructor( + private val buildMeta: BuildMeta, private val room: MatrixRoom, private val dispatchers: CoroutineDispatchers, private val analyticsService: AnalyticsService, @@ -135,6 +137,7 @@ class DefaultRoomMembersModerationPresenter @Inject constructor( } return RoomMembersModerationState( + isDebugBuild = buildMeta.isDebuggable, selectedRoomMember = selectedMember, actions = moderationActions, kickUserAsyncAction = kickUserAsyncAction.value, diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/moderation/RoomMembersModerationPresenter.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/moderation/RoomMembersModerationPresenter.kt index 003bb758c7..d3bf73a310 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/moderation/RoomMembersModerationPresenter.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/moderation/RoomMembersModerationPresenter.kt @@ -24,6 +24,7 @@ interface RoomMembersModerationPresenter : Presenter suspend fun canDisplayModerationActions(): Boolean fun dummyState() = RoomMembersModerationState( + isDebugBuild = false, selectedRoomMember = null, actions = persistentListOf(), kickUserAsyncAction = AsyncAction.Uninitialized, diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/moderation/RoomMembersModerationState.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/moderation/RoomMembersModerationState.kt index f31205bdcf..74034baa5c 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/moderation/RoomMembersModerationState.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/moderation/RoomMembersModerationState.kt @@ -22,6 +22,7 @@ import io.element.android.libraries.matrix.api.room.RoomMember import kotlinx.collections.immutable.ImmutableList data class RoomMembersModerationState( + val isDebugBuild: Boolean, val selectedRoomMember: RoomMember?, val actions: ImmutableList, val kickUserAsyncAction: AsyncAction, diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/moderation/RoomMembersModerationStatePreviewProvider.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/moderation/RoomMembersModerationStatePreviewProvider.kt index 22b877b3cc..f758bf8076 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/moderation/RoomMembersModerationStatePreviewProvider.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/moderation/RoomMembersModerationStatePreviewProvider.kt @@ -88,6 +88,7 @@ fun aRoomMembersModerationState( canDisplayBannedUsers: Boolean = false, eventSink: (RoomMembersModerationEvents) -> Unit = {}, ) = RoomMembersModerationState( + isDebugBuild = false, selectedRoomMember = selectedRoomMember, actions = actions.toPersistentList(), kickUserAsyncAction = kickUserAsyncAction, diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/moderation/RoomMembersModerationView.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/moderation/RoomMembersModerationView.kt index 2d89d313fa..700cfbaa05 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/moderation/RoomMembersModerationView.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/moderation/RoomMembersModerationView.kt @@ -73,6 +73,7 @@ fun RoomMembersModerationView( Box(modifier = modifier) { if (state.actions.isNotEmpty()) { RoomMemberActionsBottomSheet( + isDebugBuild = state.isDebugBuild, roomMember = state.selectedRoomMember, actions = state.actions, onSelectAction = { action -> @@ -195,6 +196,7 @@ fun RoomMembersModerationView( @OptIn(ExperimentalMaterial3Api::class) @Composable private fun RoomMemberActionsBottomSheet( + isDebugBuild: Boolean, roomMember: RoomMember?, actions: ImmutableList, onSelectAction: (ModerationAction) -> Unit, @@ -222,9 +224,8 @@ private fun RoomMemberActionsBottomSheet( .padding(bottom = 28.dp) .align(Alignment.CenterHorizontally) ) - // TCHAP hide the Matrix Id Text( - text = roomMember.getBestName(), + text = roomMember.getBestName(), // TCHAP display a value generated from userId if displayname does not exist style = ElementTheme.typography.fontHeadingLgBold, maxLines = 1, overflow = TextOverflow.Ellipsis, @@ -233,17 +234,20 @@ private fun RoomMemberActionsBottomSheet( .padding(start = 16.dp, end = 16.dp, bottom = 8.dp) .fillMaxWidth() ) -// Text( -// text = roomMember.userId.toString(), -// style = ElementTheme.typography.fontBodyLgRegular, -// color = ElementTheme.colors.textSecondary, -// maxLines = 1, -// overflow = TextOverflow.Ellipsis, -// textAlign = TextAlign.Center, -// modifier = Modifier -// .padding(horizontal = 16.dp) -// .fillMaxWidth() -// ) + // TCHAP hide the Matrix Id in release mode + if (isDebugBuild) { + Text( + text = roomMember.userId.toString(), + style = ElementTheme.typography.fontBodyLgRegular, + color = ElementTheme.colors.textSecondary, + maxLines = 1, + overflow = TextOverflow.Ellipsis, + textAlign = TextAlign.Center, + modifier = Modifier + .padding(horizontal = 16.dp) + .fillMaxWidth() + ) + } Spacer(modifier = Modifier.height(32.dp)) for (action in actions) { diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesPresenter.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesPresenter.kt index b4522367ec..fef52dd865 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesPresenter.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesPresenter.kt @@ -37,6 +37,7 @@ import io.element.android.features.roomdetails.impl.members.RoomMemberListDataSo import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.core.coroutine.CoroutineDispatchers +import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.designsystem.theme.components.SearchBarResultState import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.room.MatrixRoom @@ -59,6 +60,7 @@ import kotlinx.coroutines.launch class ChangeRolesPresenter @AssistedInject constructor( @Assisted private val role: RoomMember.Role, + private val buildMeta: BuildMeta, private val room: MatrixRoom, private val dispatchers: CoroutineDispatchers, private val analyticsService: AnalyticsService, @@ -169,6 +171,7 @@ class ChangeRolesPresenter @AssistedInject constructor( } } return ChangeRolesState( + isDebugBuild = buildMeta.isDebuggable, role = role, query = query, isSearchActive = searchActive, diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesState.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesState.kt index 973363ae6a..81af63bed4 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesState.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesState.kt @@ -26,6 +26,7 @@ import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.toImmutableList data class ChangeRolesState( + val isDebugBuild: Boolean, val role: RoomMember.Role, val query: String?, val isSearchActive: Boolean, diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesStateProvider.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesStateProvider.kt index c0e1a2c135..c70d9a3321 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesStateProvider.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesStateProvider.kt @@ -65,6 +65,7 @@ internal fun aChangeRolesState( canRemoveMember: (UserId) -> Boolean = { true }, eventSink: (ChangeRolesEvent) -> Unit = {}, ) = ChangeRolesState( + isDebugBuild = false, role = role, query = query, isSearchActive = isSearchActive, diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesView.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesView.kt index 541638d753..0dc0e24dc8 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesView.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesView.kt @@ -146,6 +146,7 @@ fun ChangeRolesView( resultState = state.searchResults, ) { members -> SearchResultsList( + isDebugBuild = state.isDebugBuild, currentRole = state.role, lazyListState = lazyListState, searchResults = members, @@ -162,6 +163,7 @@ fun ChangeRolesView( ) { Column { SearchResultsList( + isDebugBuild = state.isDebugBuild, currentRole = state.role, lazyListState = lazyListState, searchResults = (state.searchResults as? SearchBarResultState.Results)?.results ?: MembersByRole(emptyList()), @@ -237,6 +239,7 @@ fun ChangeRolesView( @OptIn(ExperimentalFoundationApi::class) @Composable private fun SearchResultsList( + isDebugBuild: Boolean, currentRole: RoomMember.Role, searchResults: MembersByRole, selectedUsers: ImmutableList, @@ -267,6 +270,7 @@ private fun SearchResultsList( } items(searchResults.admins, key = { it.userId }) { roomMember -> ListMemberItem( + isDebugBuild = isDebugBuild, roomMember = roomMember, canRemoveMember = canRemoveMember, onToggleSelection = onToggleSelection, @@ -278,6 +282,7 @@ private fun SearchResultsList( stickyHeader { ListSectionHeader(text = stringResource(R.string.screen_room_roles_and_permissions_moderators)) } items(searchResults.moderators, key = { it.userId }) { roomMember -> ListMemberItem( + isDebugBuild = isDebugBuild, roomMember = roomMember, canRemoveMember = canRemoveMember, onToggleSelection = onToggleSelection, @@ -289,6 +294,7 @@ private fun SearchResultsList( stickyHeader { ListSectionHeader(text = stringResource(R.string.screen_room_member_list_mode_members)) } items(searchResults.members, key = { it.userId }) { roomMember -> ListMemberItem( + isDebugBuild = isDebugBuild, roomMember = roomMember, canRemoveMember = canRemoveMember, onToggleSelection = onToggleSelection, @@ -313,6 +319,7 @@ private fun ListSectionHeader(text: String) { @Composable private fun ListMemberItem( + isDebugBuild: Boolean, roomMember: RoomMember, canRemoveMember: (UserId) -> Boolean, onToggleSelection: (RoomMember) -> Unit, @@ -327,6 +334,7 @@ private fun ListMemberItem( ) } MemberRow( + isDebugBuild = isDebugBuild, modifier = Modifier.clickable(enabled = canToggle, onClick = { onToggleSelection(roomMember) }), avatarData = roomMember.getAvatarData(size = AvatarSize.UserListItem), name = roomMember.getBestName(), @@ -338,6 +346,7 @@ private fun ListMemberItem( @Composable private fun MemberRow( + isDebugBuild: Boolean, avatarData: AvatarData, name: String, userId: String?, @@ -378,17 +387,18 @@ private fun MemberRow( ) } } - // TCHAP hide the Matrix Id -// // Id -// userId?.let { -// Text( -// text = userId, -// color = MaterialTheme.colorScheme.secondary, -// maxLines = 1, -// overflow = TextOverflow.Ellipsis, -// style = ElementTheme.typography.fontBodySmRegular, -// ) -// } + // Id + if (isDebugBuild) { // TCHAP hide the Matrix Id in release mode + userId?.let { + Text( + text = userId, + color = MaterialTheme.colorScheme.secondary, + maxLines = 1, + overflow = TextOverflow.Ellipsis, + style = ElementTheme.typography.fontBodySmRegular, + ) + } + } } trailingContent?.invoke() } @@ -410,6 +420,7 @@ internal fun ChangeRolesViewPreview(@PreviewParameter(ChangeRolesStateProvider:: internal fun PendingMemberRowWithLongNamePreview() { ElementPreview { MemberRow( + isDebugBuild = false, avatarData = AvatarData("userId", "A very long name that should be truncated", "https://example.com/avatar.png", AvatarSize.UserListItem), name = "A very long name that should be truncated", userId = "@alice:matrix.org", diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/RoomDetailsPresenterTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/RoomDetailsPresenterTest.kt index ff89aba9be..6652002ee7 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/RoomDetailsPresenterTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/RoomDetailsPresenterTest.kt @@ -45,6 +45,7 @@ import io.element.android.libraries.matrix.api.room.StateEventType import io.element.android.libraries.matrix.test.A_SESSION_ID import io.element.android.libraries.matrix.test.A_USER_ID_2 import io.element.android.libraries.matrix.test.FakeMatrixClient +import io.element.android.libraries.matrix.test.core.aBuildMeta import io.element.android.libraries.matrix.test.notificationsettings.FakeNotificationSettingsService import io.element.android.libraries.matrix.test.room.FakeMatrixRoom import io.element.android.libraries.matrix.test.room.aRoomInfo @@ -83,15 +84,17 @@ class RoomDetailsPresenterTest { analyticsService: AnalyticsService = FakeAnalyticsService(), ): RoomDetailsPresenter { val matrixClient = FakeMatrixClient(notificationSettingsService = notificationSettingsService) + val buildMeta = aBuildMeta() val roomMemberDetailsPresenterFactory = object : RoomMemberDetailsPresenter.Factory { override fun create(roomMemberId: UserId): RoomMemberDetailsPresenter { - return RoomMemberDetailsPresenter(roomMemberId, matrixClient, room, FakeStartDMAction()) + return RoomMemberDetailsPresenter(roomMemberId, buildMeta, matrixClient, room, FakeStartDMAction()) } } val featureFlagService = FakeFeatureFlagService( mapOf(FeatureFlags.NotificationSettings.key to true) ) return RoomDetailsPresenter( + buildMeta = buildMeta, client = matrixClient, room = room, featureFlagService = featureFlagService, diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersPresenterTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersPresenterTest.kt index f80cb773e3..2dd82bd49a 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersPresenterTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersPresenterTest.kt @@ -32,6 +32,7 @@ import io.element.android.libraries.matrix.api.room.RoomMembershipState import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.matrix.test.A_USER_ID import io.element.android.libraries.matrix.test.A_USER_ID_2 +import io.element.android.libraries.matrix.test.core.aBuildMeta import io.element.android.libraries.matrix.test.room.FakeMatrixRoom import io.element.android.libraries.matrix.ui.components.aMatrixUser import io.element.android.libraries.matrix.ui.components.aMatrixUserList @@ -51,10 +52,12 @@ import org.junit.Test internal class RoomInviteMembersPresenterTest { @get:Rule val warmUpRule = WarmUpRule() + val buildMeta = aBuildMeta() @Test fun `present - initial state has no results and no search`() = runTest { val presenter = RoomInviteMembersPresenter( + buildMeta = buildMeta, userRepository = FakeUserRepository(), roomMemberListDataSource = createDataSource(FakeMatrixRoom()), coroutineDispatchers = testCoroutineDispatchers() @@ -77,6 +80,7 @@ internal class RoomInviteMembersPresenterTest { @Test fun `present - updates search active state`() = runTest { val presenter = RoomInviteMembersPresenter( + buildMeta = buildMeta, userRepository = FakeUserRepository(), roomMemberListDataSource = createDataSource(FakeMatrixRoom()), coroutineDispatchers = testCoroutineDispatchers() @@ -99,6 +103,7 @@ internal class RoomInviteMembersPresenterTest { fun `present - performs search and handles empty result list`() = runTest { val repository = FakeUserRepository() val presenter = RoomInviteMembersPresenter( + buildMeta = buildMeta, userRepository = repository, roomMemberListDataSource = createDataSource(FakeMatrixRoom()), coroutineDispatchers = testCoroutineDispatchers(useUnconfinedTestDispatcher = true) @@ -126,6 +131,7 @@ internal class RoomInviteMembersPresenterTest { fun `present - performs search and handles user results`() = runTest { val repository = FakeUserRepository() val presenter = RoomInviteMembersPresenter( + buildMeta = buildMeta, userRepository = repository, roomMemberListDataSource = createDataSource(FakeMatrixRoom()), coroutineDispatchers = testCoroutineDispatchers(useUnconfinedTestDispatcher = true) @@ -166,6 +172,7 @@ internal class RoomInviteMembersPresenterTest { val repository = FakeUserRepository() val coroutineDispatchers = testCoroutineDispatchers(useUnconfinedTestDispatcher = true) val presenter = RoomInviteMembersPresenter( + buildMeta = buildMeta, userRepository = repository, roomMemberListDataSource = createDataSource( matrixRoom = FakeMatrixRoom().apply { @@ -227,6 +234,7 @@ internal class RoomInviteMembersPresenterTest { val repository = FakeUserRepository() val presenter = RoomInviteMembersPresenter( + buildMeta = buildMeta, userRepository = repository, roomMemberListDataSource = createDataSource(FakeMatrixRoom().apply { givenRoomMembersState( @@ -274,6 +282,7 @@ internal class RoomInviteMembersPresenterTest { fun `present - toggle users updates selected user state`() = runTest { val repository = FakeUserRepository() val presenter = RoomInviteMembersPresenter( + buildMeta = buildMeta, userRepository = repository, roomMemberListDataSource = createDataSource(), coroutineDispatchers = testCoroutineDispatchers() @@ -303,6 +312,7 @@ internal class RoomInviteMembersPresenterTest { fun `present - selected users appear as such in search results`() = runTest { val repository = FakeUserRepository() val presenter = RoomInviteMembersPresenter( + buildMeta = buildMeta, userRepository = repository, roomMemberListDataSource = createDataSource(FakeMatrixRoom()), coroutineDispatchers = testCoroutineDispatchers(useUnconfinedTestDispatcher = true) @@ -344,6 +354,7 @@ internal class RoomInviteMembersPresenterTest { fun `present - toggling a user updates existing search results`() = runTest { val repository = FakeUserRepository() val presenter = RoomInviteMembersPresenter( + buildMeta = buildMeta, userRepository = repository, roomMemberListDataSource = createDataSource(FakeMatrixRoom()), coroutineDispatchers = testCoroutineDispatchers(useUnconfinedTestDispatcher = true) diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/RoomMemberListPresenterTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/RoomMemberListPresenterTest.kt index 8ca8b7b810..b5ca0eca3a 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/RoomMemberListPresenterTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/RoomMemberListPresenterTest.kt @@ -31,10 +31,12 @@ import io.element.android.features.roomdetails.impl.members.moderation.RoomMembe import io.element.android.features.roomdetails.impl.members.moderation.aRoomMembersModerationState import io.element.android.features.roomdetails.members.moderation.FakeRoomMembersModerationPresenter import io.element.android.libraries.core.coroutine.CoroutineDispatchers +import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.designsystem.theme.components.SearchBarResultState import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.room.MatrixRoom import io.element.android.libraries.matrix.api.room.MatrixRoomMembersState +import io.element.android.libraries.matrix.test.core.aBuildMeta import io.element.android.libraries.matrix.test.room.FakeMatrixRoom import io.element.android.libraries.matrix.test.room.aRoomInfo import io.element.android.tests.testutils.WarmUpRule @@ -270,6 +272,7 @@ private fun TestScope.createDataSource( @ExperimentalCoroutinesApi private fun TestScope.createPresenter( + buildMeta: BuildMeta = aBuildMeta(), coroutineDispatchers: CoroutineDispatchers = testCoroutineDispatchers(useUnconfinedTestDispatcher = true), matrixRoom: MatrixRoom = FakeMatrixRoom( updateMembersResult = { Result.success(Unit) } @@ -278,6 +281,7 @@ private fun TestScope.createPresenter( moderationPresenter: FakeRoomMembersModerationPresenter = FakeRoomMembersModerationPresenter(), navigator: RoomMemberListNavigator = object : RoomMemberListNavigator {} ) = RoomMemberListPresenter( + buildMeta = buildMeta, room = matrixRoom, roomMemberListDataSource = roomMemberListDataSource, coroutineDispatchers = coroutineDispatchers, diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/details/RoomMemberDetailsPresenterTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/details/RoomMemberDetailsPresenterTest.kt index 1012de62bd..a1f2d7be2c 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/details/RoomMemberDetailsPresenterTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/details/RoomMemberDetailsPresenterTest.kt @@ -30,6 +30,7 @@ import io.element.android.features.userprofile.shared.UserProfileEvents import io.element.android.features.userprofile.shared.UserProfileState import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.architecture.AsyncData +import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.room.MatrixRoom @@ -38,6 +39,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.A_THROWABLE import io.element.android.libraries.matrix.test.FakeMatrixClient +import io.element.android.libraries.matrix.test.core.aBuildMeta import io.element.android.libraries.matrix.ui.components.aMatrixUser import io.element.android.tests.testutils.WarmUpRule import kotlinx.collections.immutable.persistentListOf @@ -343,12 +345,14 @@ class RoomMemberDetailsPresenterTest { private fun createRoomMemberDetailsPresenter( room: MatrixRoom, + buildMeta: BuildMeta = aBuildMeta(), client: MatrixClient = FakeMatrixClient(), roomMemberId: UserId = UserId("@alice:server.org"), startDMAction: StartDMAction = FakeStartDMAction() ): RoomMemberDetailsPresenter { return RoomMemberDetailsPresenter( roomMemberId = roomMemberId, + buildMeta = buildMeta, client = client, room = room, startDMAction = startDMAction diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/moderation/DefaultRoomMembersModerationPresenterTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/moderation/DefaultRoomMembersModerationPresenterTest.kt index 5f704a23d4..98007412c2 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/moderation/DefaultRoomMembersModerationPresenterTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/moderation/DefaultRoomMembersModerationPresenterTest.kt @@ -28,11 +28,13 @@ import io.element.android.features.roomdetails.impl.members.moderation.Moderatio import io.element.android.features.roomdetails.impl.members.moderation.RoomMembersModerationEvents import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.core.coroutine.CoroutineDispatchers +import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.matrix.api.room.MatrixRoomMembersState import io.element.android.libraries.matrix.api.room.RoomMember import io.element.android.libraries.matrix.api.room.RoomMembershipState import io.element.android.libraries.matrix.test.A_USER_ID import io.element.android.libraries.matrix.test.A_USER_ID_2 +import io.element.android.libraries.matrix.test.core.aBuildMeta import io.element.android.libraries.matrix.test.room.FakeMatrixRoom import io.element.android.libraries.matrix.test.room.aRoomInfo import io.element.android.services.analytics.test.FakeAnalyticsService @@ -311,11 +313,13 @@ class DefaultRoomMembersModerationPresenterTest { } private fun TestScope.createDefaultRoomMembersModerationPresenter( + buildMeta: BuildMeta = aBuildMeta(), matrixRoom: FakeMatrixRoom = FakeMatrixRoom(), dispatchers: CoroutineDispatchers = testCoroutineDispatchers(), analyticsService: FakeAnalyticsService = FakeAnalyticsService(), ): DefaultRoomMembersModerationPresenter { return DefaultRoomMembersModerationPresenter( + buildMeta = buildMeta, room = matrixRoom, dispatchers = dispatchers, analyticsService = analyticsService, diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/rolesandpermissions/changeroles/ChangeRolesPresenterTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/rolesandpermissions/changeroles/ChangeRolesPresenterTest.kt index 71223c8ff3..4721eb2c72 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/rolesandpermissions/changeroles/ChangeRolesPresenterTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/rolesandpermissions/changeroles/ChangeRolesPresenterTest.kt @@ -26,12 +26,14 @@ import io.element.android.features.roomdetails.impl.rolesandpermissions.changero import io.element.android.features.roomdetails.impl.rolesandpermissions.changeroles.ChangeRolesPresenter import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.core.coroutine.CoroutineDispatchers +import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.designsystem.theme.components.SearchBarResultState import io.element.android.libraries.matrix.api.room.MatrixRoomMembersState import io.element.android.libraries.matrix.api.room.RoomMember import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.matrix.test.A_USER_ID import io.element.android.libraries.matrix.test.A_USER_ID_2 +import io.element.android.libraries.matrix.test.core.aBuildMeta import io.element.android.libraries.matrix.test.room.FakeMatrixRoom import io.element.android.libraries.matrix.test.room.aRoomInfo import io.element.android.services.analytics.test.FakeAnalyticsService @@ -384,12 +386,14 @@ class ChangeRolesPresenterTest { private fun TestScope.createChangeRolesPresenter( role: RoomMember.Role = RoomMember.Role.ADMIN, + buildMeta: BuildMeta = aBuildMeta(), room: FakeMatrixRoom = FakeMatrixRoom(), dispatchers: CoroutineDispatchers = testCoroutineDispatchers(), analyticsService: FakeAnalyticsService = FakeAnalyticsService(), ): ChangeRolesPresenter { return ChangeRolesPresenter( role = role, + buildMeta = buildMeta, room = room, dispatchers = dispatchers, analyticsService = analyticsService, diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListContentStateProvider.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListContentStateProvider.kt index 799c385310..de6cc22f66 100644 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListContentStateProvider.kt +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListContentStateProvider.kt @@ -37,6 +37,7 @@ internal fun aRoomsContentState( summaries: ImmutableList = aRoomListRoomSummaryList(), fullScreenIntentPermissionsState: FullScreenIntentPermissionsState = aFullScreenIntentPermissionsState(), ) = RoomListContentState.Rooms( + isDebugBuild = false, securityBannerState = securityBannerState, fullScreenIntentPermissionsState = fullScreenIntentPermissionsState, summaries = summaries, diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListPresenter.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListPresenter.kt index f801230c4c..a994750f06 100644 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListPresenter.kt +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListPresenter.kt @@ -47,6 +47,7 @@ import io.element.android.features.roomlist.impl.search.RoomListSearchEvents import io.element.android.features.roomlist.impl.search.RoomListSearchState import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.architecture.Presenter +import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.designsystem.utils.snackbar.SnackbarDispatcher import io.element.android.libraries.designsystem.utils.snackbar.collectSnackbarMessageAsState import io.element.android.libraries.featureflag.api.FeatureFlagService @@ -83,6 +84,7 @@ import javax.inject.Inject private const val EXTENDED_RANGE_SIZE = 40 class RoomListPresenter @Inject constructor( + private val buildMeta: BuildMeta, private val client: MatrixClient, private val networkMonitor: NetworkMonitor, private val snackbarDispatcher: SnackbarDispatcher, @@ -224,6 +226,7 @@ class RoomListPresenter @Inject constructor( else -> { val securityBannerState by securityBannerState(securityBannerDismissed) RoomListContentState.Rooms( + isDebugBuild = buildMeta.isDebuggable, securityBannerState = securityBannerState, fullScreenIntentPermissionsState = fullScreenIntentPermissionsPresenter.present(), summaries = roomSummaries.dataOrNull().orEmpty().toPersistentList() diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListState.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListState.kt index c3f8182bc3..52a07695af 100644 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListState.kt +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListState.kt @@ -75,6 +75,7 @@ sealed interface RoomListContentState { data class Skeleton(val count: Int) : RoomListContentState data object Empty : RoomListContentState data class Rooms( + val isDebugBuild: Boolean, val securityBannerState: SecurityBannerState, val fullScreenIntentPermissionsState: FullScreenIntentPermissionsState, val summaries: ImmutableList, diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/RoomListContentView.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/RoomListContentView.kt index 3310bc4f25..0bb922d649 100644 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/RoomListContentView.kt +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/RoomListContentView.kt @@ -220,6 +220,7 @@ private fun RoomsViewList( contentType = { _, room -> room.contentType() }, ) { index, room -> RoomSummaryRow( + isDebugBuild = state.isDebugBuild, room = room, onClick = onRoomClick, eventSink = eventSink, diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/RoomSummaryRow.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/RoomSummaryRow.kt index bf111aeb6b..1a2e0d80e3 100644 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/RoomSummaryRow.kt +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/RoomSummaryRow.kt @@ -76,6 +76,7 @@ internal val minHeight = 84.dp @Composable internal fun RoomSummaryRow( + isDebugBuild: Boolean, room: RoomListRoomSummary, onClick: (RoomListRoomSummary) -> Unit, eventSink: (RoomListEvents) -> Unit, @@ -95,7 +96,7 @@ internal fun RoomSummaryRow( modifier = modifier ) { InviteNameAndIndicatorRow(name = room.name) - InviteSubtitle(isDm = room.isDm, inviteSender = room.inviteSender, canonicalAlias = room.canonicalAlias) + InviteSubtitle(isDebugBuild = isDebugBuild, isDm = room.isDm, inviteSender = room.inviteSender, canonicalAlias = room.canonicalAlias) if (!room.isDm && room.inviteSender != null) { Spacer(modifier = Modifier.height(4.dp)) InviteSenderView( @@ -206,13 +207,14 @@ private fun NameAndTimestampRow( @Composable private fun InviteSubtitle( + isDebugBuild: Boolean, isDm: Boolean, inviteSender: InviteSender?, canonicalAlias: RoomAlias?, modifier: Modifier = Modifier ) { val subtitle = if (isDm) { - null // TCHAP hide the Matrix Id + inviteSender?.userId?.value.takeIf { isDebugBuild } // TCHAP hide the Matrix Id in release mode } else { canonicalAlias?.value } @@ -361,6 +363,7 @@ private fun MentionIndicatorAtom() { @Composable internal fun RoomSummaryRowPreview(@PreviewParameter(RoomListRoomSummaryProvider::class) data: RoomListRoomSummary) = ElementPreview { RoomSummaryRow( + isDebugBuild = false, room = data, onClick = {}, eventSink = {}, diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/search/RoomListSearchPresenter.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/search/RoomListSearchPresenter.kt index 4ae7f091fe..4fa48592c5 100644 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/search/RoomListSearchPresenter.kt +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/search/RoomListSearchPresenter.kt @@ -24,12 +24,14 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import io.element.android.libraries.architecture.Presenter +import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.featureflag.api.FeatureFlagService import io.element.android.libraries.featureflag.api.FeatureFlags import kotlinx.collections.immutable.persistentListOf import javax.inject.Inject class RoomListSearchPresenter @Inject constructor( + private val buildMeta: BuildMeta, private val dataSource: RoomListSearchDataSource, private val featureFlagService: FeatureFlagService, ) : Presenter { @@ -70,6 +72,7 @@ class RoomListSearchPresenter @Inject constructor( val searchResults by dataSource.roomSummaries.collectAsState(initial = persistentListOf()) return RoomListSearchState( + isDebugBuild = buildMeta.isDebuggable, isSearchActive = isSearchActive, query = searchQuery, results = searchResults, diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/search/RoomListSearchState.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/search/RoomListSearchState.kt index 92e70ad039..285dc4d5ee 100644 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/search/RoomListSearchState.kt +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/search/RoomListSearchState.kt @@ -20,6 +20,7 @@ import io.element.android.features.roomlist.impl.model.RoomListRoomSummary import kotlinx.collections.immutable.ImmutableList data class RoomListSearchState( + val isDebugBuild: Boolean, val isSearchActive: Boolean, val query: String, val results: ImmutableList, diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/search/RoomListSearchStateProvider.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/search/RoomListSearchStateProvider.kt index c4dcbab1ec..f140fdc662 100644 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/search/RoomListSearchStateProvider.kt +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/search/RoomListSearchStateProvider.kt @@ -42,6 +42,7 @@ fun aRoomListSearchState( isRoomDirectorySearchEnabled: Boolean = false, eventSink: (RoomListSearchEvents) -> Unit = { }, ) = RoomListSearchState( + isDebugBuild = false, isSearchActive = isSearchActive, query = query, results = results, diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/search/RoomListSearchView.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/search/RoomListSearchView.kt index b8af9e16f1..633a19a632 100644 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/search/RoomListSearchView.kt +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/search/RoomListSearchView.kt @@ -200,6 +200,7 @@ private fun RoomListSearchContent( contentType = { room -> room.contentType() }, ) { room -> RoomSummaryRow( + isDebugBuild = state.isDebugBuild, room = room, onClick = ::onRoomClick, eventSink = eventSink, diff --git a/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/RoomListPresenterTest.kt b/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/RoomListPresenterTest.kt index 1f0732cfe0..b8a7249a35 100644 --- a/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/RoomListPresenterTest.kt +++ b/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/RoomListPresenterTest.kt @@ -38,6 +38,7 @@ import io.element.android.features.roomlist.impl.search.RoomListSearchEvents import io.element.android.features.roomlist.impl.search.RoomListSearchState import io.element.android.features.roomlist.impl.search.aRoomListSearchState import io.element.android.libraries.architecture.Presenter +import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.dateformatter.api.LastMessageTimestampFormatter import io.element.android.libraries.dateformatter.test.A_FORMATTED_DATE import io.element.android.libraries.dateformatter.test.FakeLastMessageTimestampFormatter @@ -68,6 +69,7 @@ import io.element.android.libraries.matrix.test.A_SESSION_ID import io.element.android.libraries.matrix.test.A_USER_ID import io.element.android.libraries.matrix.test.A_USER_NAME import io.element.android.libraries.matrix.test.FakeMatrixClient +import io.element.android.libraries.matrix.test.core.aBuildMeta import io.element.android.libraries.matrix.test.encryption.FakeEncryptionService import io.element.android.libraries.matrix.test.notificationsettings.FakeNotificationSettingsService import io.element.android.libraries.matrix.test.room.FakeMatrixRoom @@ -637,6 +639,7 @@ class RoomListPresenterTest { } private fun TestScope.createRoomListPresenter( + buildMeta: BuildMeta = aBuildMeta(), client: MatrixClient = FakeMatrixClient(), networkMonitor: NetworkMonitor = FakeNetworkMonitor(), snackbarDispatcher: SnackbarDispatcher = SnackbarDispatcher(), @@ -654,6 +657,7 @@ class RoomListPresenterTest { acceptDeclineInvitePresenter: Presenter = Presenter { anAcceptDeclineInviteState() }, notificationCleaner: NotificationCleaner = FakeNotificationCleaner(), ) = RoomListPresenter( + buildMeta = buildMeta, client = client, networkMonitor = networkMonitor, snackbarDispatcher = snackbarDispatcher, diff --git a/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/search/RoomListSearchPresenterTest.kt b/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/search/RoomListSearchPresenterTest.kt index d1fe481e77..bc9ab529fc 100644 --- a/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/search/RoomListSearchPresenterTest.kt +++ b/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/search/RoomListSearchPresenterTest.kt @@ -21,6 +21,7 @@ import app.cash.molecule.moleculeFlow import app.cash.turbine.test import com.google.common.truth.Truth.assertThat import io.element.android.features.roomlist.impl.datasource.RoomListRoomSummaryFactory +import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.dateformatter.test.FakeLastMessageTimestampFormatter import io.element.android.libraries.eventformatter.test.FakeRoomLastMessageFormatter import io.element.android.libraries.featureflag.api.FeatureFlagService @@ -28,6 +29,7 @@ import io.element.android.libraries.featureflag.api.FeatureFlags import io.element.android.libraries.featureflag.test.FakeFeatureFlagService import io.element.android.libraries.matrix.api.roomlist.RoomListFilter import io.element.android.libraries.matrix.api.roomlist.RoomListService +import io.element.android.libraries.matrix.test.core.aBuildMeta import io.element.android.libraries.matrix.test.room.aRoomSummary import io.element.android.libraries.matrix.test.roomlist.FakeRoomListService import io.element.android.tests.testutils.testCoroutineDispatchers @@ -73,7 +75,8 @@ class RoomListSearchPresenterTest { @Test fun `present - query search changes`() = runTest { val roomListService = FakeRoomListService() - val presenter = createRoomListSearchPresenter(roomListService) + val buildMeta = aBuildMeta() + val presenter = createRoomListSearchPresenter(buildMeta, roomListService) moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { @@ -108,7 +111,8 @@ class RoomListSearchPresenterTest { @Test fun `present - room list changes`() = runTest { val roomListService = FakeRoomListService() - val presenter = createRoomListSearchPresenter(roomListService) + val buildMeta = aBuildMeta() + val presenter = createRoomListSearchPresenter(buildMeta, roomListService) moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { @@ -145,10 +149,12 @@ class RoomListSearchPresenterTest { } fun TestScope.createRoomListSearchPresenter( + buildMeta: BuildMeta = aBuildMeta(), roomListService: RoomListService = FakeRoomListService(), featureFlagService: FeatureFlagService = FakeFeatureFlagService(), ): RoomListSearchPresenter { return RoomListSearchPresenter( + buildMeta = buildMeta, dataSource = RoomListSearchDataSource( roomListService = roomListService, roomSummaryFactory = RoomListRoomSummaryFactory( diff --git a/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/di/UserProfileModule.kt b/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/di/UserProfileModule.kt index 47f0bc94cd..a53d49560a 100644 --- a/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/di/UserProfileModule.kt +++ b/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/di/UserProfileModule.kt @@ -21,6 +21,7 @@ import dagger.Module import dagger.Provides import io.element.android.features.createroom.api.StartDMAction import io.element.android.features.userprofile.impl.root.UserProfilePresenter +import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.di.SessionScope import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.core.UserId @@ -30,12 +31,13 @@ import io.element.android.libraries.matrix.api.core.UserId object UserProfileModule { @Provides fun provideUserProfilePresenterFactory( + buildMeta: BuildMeta, matrixClient: MatrixClient, startDMAction: StartDMAction, ): UserProfilePresenter.Factory { return object : UserProfilePresenter.Factory { override fun create(userId: UserId): UserProfilePresenter { - return UserProfilePresenter(userId, matrixClient, startDMAction) + return UserProfilePresenter(userId, buildMeta, matrixClient, startDMAction) } } } diff --git a/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/root/UserProfilePresenter.kt b/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/root/UserProfilePresenter.kt index 753891156e..d64764421b 100644 --- a/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/root/UserProfilePresenter.kt +++ b/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/root/UserProfilePresenter.kt @@ -35,6 +35,7 @@ import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.core.bool.orFalse +import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.UserId @@ -47,6 +48,7 @@ import kotlinx.coroutines.launch class UserProfilePresenter @AssistedInject constructor( @Assisted private val userId: UserId, + private val buildMeta: BuildMeta, private val client: MatrixClient, private val startDMAction: StartDMAction, ) : Presenter { @@ -113,6 +115,7 @@ class UserProfilePresenter @AssistedInject constructor( } return UserProfileState( + isDebugBuild = buildMeta.isDebuggable, userId = userId, userName = userProfile?.displayName, avatarUrl = userProfile?.avatarUrl, diff --git a/features/userprofile/impl/src/test/kotlin/io/element/android/features/userprofile/impl/UserProfilePresenterTest.kt b/features/userprofile/impl/src/test/kotlin/io/element/android/features/userprofile/impl/UserProfilePresenterTest.kt index 6adf4b9d38..6fdeec6a7c 100644 --- a/features/userprofile/impl/src/test/kotlin/io/element/android/features/userprofile/impl/UserProfilePresenterTest.kt +++ b/features/userprofile/impl/src/test/kotlin/io/element/android/features/userprofile/impl/UserProfilePresenterTest.kt @@ -28,6 +28,7 @@ import io.element.android.features.userprofile.shared.UserProfileEvents import io.element.android.features.userprofile.shared.UserProfileState import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.architecture.AsyncData +import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.test.AN_EXCEPTION @@ -35,6 +36,7 @@ import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.test.A_THROWABLE import io.element.android.libraries.matrix.test.A_USER_ID import io.element.android.libraries.matrix.test.FakeMatrixClient +import io.element.android.libraries.matrix.test.core.aBuildMeta import io.element.android.libraries.matrix.ui.components.aMatrixUser import io.element.android.tests.testutils.WarmUpRule import kotlinx.coroutines.ExperimentalCoroutinesApi @@ -229,10 +231,12 @@ class UserProfilePresenterTest { private fun createUserProfilePresenter( client: MatrixClient = FakeMatrixClient(), userId: UserId = UserId("@alice:server.org"), + buildMeta: BuildMeta = aBuildMeta(), startDMAction: StartDMAction = FakeStartDMAction() ): UserProfilePresenter { return UserProfilePresenter( userId = userId, + buildMeta = buildMeta, client = client, startDMAction = startDMAction ) diff --git a/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileHeaderSection.kt b/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileHeaderSection.kt index 0a02326842..34a64cb39a 100644 --- a/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileHeaderSection.kt +++ b/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileHeaderSection.kt @@ -42,6 +42,7 @@ import io.element.android.libraries.testtags.testTag @Composable fun UserProfileHeaderSection( + isDebugBuild: Boolean, avatarUrl: String?, userId: UserId, userName: String?, @@ -70,16 +71,17 @@ fun UserProfileHeaderSection( ) Spacer(modifier = Modifier.height(6.dp)) } - // TCHAP hide the Matrix Id -// Text( -// text = userId.value, -// style = ElementTheme.typography.fontBodyLgRegular, -// color = MaterialTheme.colorScheme.secondary, -// modifier = Modifier -// .fillMaxWidth() -// .padding(horizontal = 16.dp), -// textAlign = TextAlign.Center, -// ) + if (isDebugBuild) { // TCHAP hide the Matrix Id in release mode + Text( + text = userId.value, + style = ElementTheme.typography.fontBodyLgRegular, + color = MaterialTheme.colorScheme.secondary, + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 16.dp), + textAlign = TextAlign.Center, + ) + } Spacer(Modifier.height(40.dp)) } } @@ -88,6 +90,7 @@ fun UserProfileHeaderSection( @Composable internal fun UserProfileHeaderSectionPreview() = ElementPreview { UserProfileHeaderSection( + isDebugBuild = false, avatarUrl = null, userId = UserId("@alice:example.com"), userName = "Alice", diff --git a/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileState.kt b/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileState.kt index bdf4578172..bb33cb3a82 100644 --- a/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileState.kt +++ b/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileState.kt @@ -22,6 +22,7 @@ import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.UserId data class UserProfileState( + val isDebugBuild: Boolean, val userId: UserId, val userName: String?, val avatarUrl: String?, diff --git a/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileStateProvider.kt b/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileStateProvider.kt index 14b5d29878..83357a35d7 100644 --- a/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileStateProvider.kt +++ b/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileStateProvider.kt @@ -50,6 +50,7 @@ fun aUserProfileState( canCall: Boolean = false, eventSink: (UserProfileEvents) -> Unit = {}, ) = UserProfileState( + isDebugBuild = false, userId = userId, userName = userName, avatarUrl = avatarUrl, diff --git a/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileView.kt b/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileView.kt index 911a3a59f2..8842423ef6 100644 --- a/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileView.kt +++ b/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileView.kt @@ -68,9 +68,10 @@ fun UserProfileView( .verticalScroll(rememberScrollState()) ) { UserProfileHeaderSection( + isDebugBuild = state.isDebugBuild, avatarUrl = state.avatarUrl, userId = state.userId, - userName = state.userName ?: state.userId.toDisplayName(), // TCHAP hide the Matrix Id + userName = state.userName ?: state.userId.toDisplayName(), // TCHAP display a value generated from userId if displayname does not exist openAvatarPreview = { avatarUrl -> openAvatarPreview(state.userName ?: state.userId.value, avatarUrl) }, diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/CheckableUserRow.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/CheckableUserRow.kt index 318ab7eabd..38241cc59e 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/CheckableUserRow.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/CheckableUserRow.kt @@ -37,6 +37,7 @@ import io.element.android.libraries.matrix.ui.model.getAvatarData @Composable fun CheckableUserRow( + isDebugBuild: Boolean, checked: Boolean, onCheckedChange: (Boolean) -> Unit, data: CheckableUserRowData, @@ -55,6 +56,7 @@ fun CheckableUserRow( when (data) { is CheckableUserRowData.Resolved -> { UserRow( + isDebugBuild = isDebugBuild, modifier = rowModifier, avatarData = data.avatarData, name = data.name, @@ -104,18 +106,21 @@ internal fun CheckableResolvedUserRowPreview() = ElementThemedPreview { ) Column { CheckableUserRow( + isDebugBuild = false, checked = false, onCheckedChange = { }, data = data, ) HorizontalDivider() CheckableUserRow( + isDebugBuild = false, checked = true, onCheckedChange = { }, data = data, ) HorizontalDivider() CheckableUserRow( + isDebugBuild = false, checked = false, onCheckedChange = { }, data = data, @@ -123,6 +128,7 @@ internal fun CheckableResolvedUserRowPreview() = ElementThemedPreview { ) HorizontalDivider() CheckableUserRow( + isDebugBuild = false, checked = true, onCheckedChange = { }, data = data, @@ -141,18 +147,21 @@ internal fun CheckableUnresolvedUserRowPreview() = ElementThemedPreview { ) Column { CheckableUserRow( + isDebugBuild = false, checked = false, onCheckedChange = { }, data = data, ) HorizontalDivider() CheckableUserRow( + isDebugBuild = false, checked = true, onCheckedChange = { }, data = data, ) HorizontalDivider() CheckableUserRow( + isDebugBuild = false, checked = false, onCheckedChange = { }, data = data, @@ -160,6 +169,7 @@ internal fun CheckableUnresolvedUserRowPreview() = ElementThemedPreview { ) HorizontalDivider() CheckableUserRow( + isDebugBuild = false, checked = true, onCheckedChange = { }, data = data, diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserHeader.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserHeader.kt index 91ad15bd7a..7b2194bf4e 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserHeader.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserHeader.kt @@ -41,6 +41,7 @@ import io.element.android.libraries.matrix.ui.model.getBestName @Composable fun MatrixUserHeader( + isDebugBuild: Boolean, matrixUser: MatrixUser?, modifier: Modifier = Modifier, // TODO handle click on this item, to let the user be able to update their profile. @@ -50,6 +51,7 @@ fun MatrixUserHeader( MatrixUserHeaderPlaceholder(modifier = modifier) } else { MatrixUserHeaderContent( + isDebugBuild = isDebugBuild, matrixUser = matrixUser, modifier = modifier, // onClick = onClick @@ -59,6 +61,7 @@ fun MatrixUserHeader( @Composable private fun MatrixUserHeaderContent( + isDebugBuild: Boolean, matrixUser: MatrixUser, modifier: Modifier = Modifier, // onClick: () -> Unit, @@ -88,17 +91,16 @@ private fun MatrixUserHeaderContent( overflow = TextOverflow.Ellipsis, color = ElementTheme.materialColors.primary, ) - // TCHAP hide the Matrix Id -// // Id -// if (matrixUser.displayName.isNullOrEmpty().not()) { -// Text( -// text = matrixUser.userId.value, -// style = ElementTheme.typography.fontBodyMdRegular, -// color = ElementTheme.materialColors.secondary, -// maxLines = 1, -// overflow = TextOverflow.Ellipsis -// ) -// } + // Id + if (isDebugBuild && matrixUser.displayName.isNullOrEmpty().not()) { // TCHAP hide the Matrix Id in release mode + Text( + text = matrixUser.userId.value, + style = ElementTheme.typography.fontBodyMdRegular, + color = ElementTheme.materialColors.secondary, + maxLines = 1, + overflow = TextOverflow.Ellipsis + ) + } } } } @@ -106,5 +108,5 @@ private fun MatrixUserHeaderContent( @PreviewsDayNight @Composable internal fun MatrixUserHeaderPreview(@PreviewParameter(MatrixUserProvider::class) matrixUser: MatrixUser) = ElementPreview { - MatrixUserHeader(matrixUser) + MatrixUserHeader(isDebugBuild = false, matrixUser) } diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserRow.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserRow.kt index 5197ca0ebd..cd87aa9f85 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserRow.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserRow.kt @@ -28,11 +28,13 @@ import io.element.android.libraries.matrix.ui.model.getBestName @Composable fun MatrixUserRow( + isDebugBuild: Boolean, matrixUser: MatrixUser, modifier: Modifier = Modifier, avatarSize: AvatarSize = AvatarSize.UserListItem, trailingContent: @Composable (() -> Unit)? = null, ) = UserRow( + isDebugBuild = isDebugBuild, avatarData = matrixUser.getAvatarData(avatarSize), name = matrixUser.getBestName(), subtext = if (matrixUser.displayName.isNullOrEmpty()) null else matrixUser.userId.value, @@ -43,5 +45,5 @@ fun MatrixUserRow( @PreviewsDayNight @Composable internal fun MatrixUserRowPreview(@PreviewParameter(MatrixUserProvider::class) matrixUser: MatrixUser) = ElementPreview { - MatrixUserRow(matrixUser) + MatrixUserRow(isDebugBuild = false, matrixUser) } diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/UserRow.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/UserRow.kt index 96a18624f2..33db662d43 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/UserRow.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/UserRow.kt @@ -35,6 +35,7 @@ import io.element.android.libraries.designsystem.theme.components.Text @Composable internal fun UserRow( + isDebugBuild: Boolean, avatarData: AvatarData, name: String, subtext: String?, @@ -63,17 +64,18 @@ internal fun UserRow( color = MaterialTheme.colorScheme.primary, style = ElementTheme.typography.fontBodyLgRegular, ) - // TCHAP hide the Matrix Id -// // Id -// subtext?.let { -// Text( -// text = subtext, -// color = MaterialTheme.colorScheme.secondary, -// maxLines = 1, -// overflow = TextOverflow.Ellipsis, -// style = ElementTheme.typography.fontBodySmRegular, -// ) -// } + // Id + if (isDebugBuild) { // TCHAP hide the Matrix Id in release mode + subtext?.let { + Text( + text = subtext, + color = MaterialTheme.colorScheme.secondary, + maxLines = 1, + overflow = TextOverflow.Ellipsis, + style = ElementTheme.typography.fontBodySmRegular, + ) + } + } } trailingContent?.invoke() } diff --git a/libraries/tchaputils/src/main/java/fr/gouv/tchap/libraries/tchaputils/TchapPatterns.kt b/libraries/tchaputils/src/main/java/fr/gouv/tchap/libraries/tchaputils/TchapPatterns.kt index 42a548447b..a495b36929 100644 --- a/libraries/tchaputils/src/main/java/fr/gouv/tchap/libraries/tchaputils/TchapPatterns.kt +++ b/libraries/tchaputils/src/main/java/fr/gouv/tchap/libraries/tchaputils/TchapPatterns.kt @@ -42,7 +42,7 @@ object TchapPatterns { /** * Get the Tchap display name of the homeserver mentioned in a matrix identifier. * The identifier type may be any matrix identifier type: user id, room id, ... - * The returned name is capitalize. + * The returned name is capitalized. * The Tchap HS display name is the component mentioned before the suffix "tchap.gouv.fr" * For example in case of "@jean-philippe.martin-modernisation.fr:name1.tchap.gouv.fr", this will return "Name1". * in case of "@jean-philippe.martin-modernisation.fr:agent.name2.tchap.gouv.fr", this will return "Name2". diff --git a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/RoomListScreen.kt b/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/RoomListScreen.kt index df8636603b..cc9f8548c9 100644 --- a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/RoomListScreen.kt +++ b/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/RoomListScreen.kt @@ -102,6 +102,7 @@ class RoomListScreen( ), ) private val presenter = RoomListPresenter( + buildMeta = buildMeta, client = matrixClient, networkMonitor = DefaultNetworkMonitor(context, Singleton.appScope), snackbarDispatcher = SnackbarDispatcher(), @@ -119,6 +120,7 @@ class RoomListScreen( ), featureFlagService = featureFlagService, searchPresenter = RoomListSearchPresenter( + buildMeta = buildMeta, RoomListSearchDataSource( roomListService = matrixClient.roomListService, roomSummaryFactory = roomListRoomSummaryFactory, From 64fd76b486afae5f6aa44ffc029ed8e2c9d30d1b Mon Sep 17 00:00:00 2001 From: yostyle Date: Thu, 29 Aug 2024 17:50:31 +0200 Subject: [PATCH 05/14] Fix comments --- .../messagecomposer/suggestions/SuggestionsPickerView.kt | 2 +- .../components/reactionsummary/ReactionSummaryView.kt | 2 +- .../android/features/userprofile/shared/UserProfileView.kt | 5 +++-- .../libraries/textcomposer/model/MarkdownTextEditorState.kt | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/suggestions/SuggestionsPickerView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/suggestions/SuggestionsPickerView.kt index 2b4d0e051b..b77494efb1 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/suggestions/SuggestionsPickerView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/suggestions/SuggestionsPickerView.kt @@ -114,7 +114,7 @@ private fun SuggestionItemView( } val title = when (suggestion) { is ResolvedSuggestion.AtRoom -> stringResource(R.string.screen_room_mentions_at_room_title) - is ResolvedSuggestion.Member -> suggestion.roomMember.getBestName() // TCHAP should be applied in Element X + is ResolvedSuggestion.Member -> suggestion.roomMember.getBestName() // TCHAP TODO should be applied in Element X is ResolvedSuggestion.Alias -> suggestion.roomSummary.name } val subtitle = when (suggestion) { diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryView.kt index 425e3c1b20..435411c9dc 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryView.kt @@ -158,7 +158,7 @@ private fun SheetContent( SenderRow( isDebugBuild = summary.isDebugBuild, avatarData = user.getAvatarData(AvatarSize.UserListItem), - name = user.getBestName(), // TCHAP should be applied in Element X + name = user.getBestName(), // TCHAP TODO should be applied in Element X userId = user.userId.value, sentTime = sender.sentTime ) diff --git a/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileView.kt b/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileView.kt index 8842423ef6..8966696e95 100644 --- a/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileView.kt +++ b/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileView.kt @@ -67,13 +67,14 @@ fun UserProfileView( .consumeWindowInsets(padding) .verticalScroll(rememberScrollState()) ) { + // TCHAP display a value generated from userId if displayname does not exist UserProfileHeaderSection( isDebugBuild = state.isDebugBuild, avatarUrl = state.avatarUrl, userId = state.userId, - userName = state.userName ?: state.userId.toDisplayName(), // TCHAP display a value generated from userId if displayname does not exist + userName = state.userName ?: state.userId.toDisplayName(), openAvatarPreview = { avatarUrl -> - openAvatarPreview(state.userName ?: state.userId.value, avatarUrl) + openAvatarPreview(state.userName ?: state.userId.toDisplayName(), avatarUrl) }, ) diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/MarkdownTextEditorState.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/MarkdownTextEditorState.kt index af95d60176..57a49cb3ba 100644 --- a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/MarkdownTextEditorState.kt +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/MarkdownTextEditorState.kt @@ -73,7 +73,7 @@ class MarkdownTextEditorState( } is ResolvedSuggestion.Member -> { val currentText = SpannableStringBuilder(text.value()) - val text = resolvedSuggestion.roomMember.displayName?.prependIndent("@") ?: resolvedSuggestion.roomMember.userId.value // TCHAP check needed about mxid displaying + val text = resolvedSuggestion.roomMember.displayName?.prependIndent("@") ?: resolvedSuggestion.roomMember.userId.value // TCHAP TODO check needed about mxid displaying val link = permalinkBuilder.permalinkForUser(resolvedSuggestion.roomMember.userId).getOrNull() ?: return val mentionPill = mentionSpanProvider.getMentionSpanFor(text, link) currentText.replace(suggestion.start, suggestion.end, "@ ") From 2b5797c5b81059db1e4904befea7eae3a3c727a0 Mon Sep 17 00:00:00 2001 From: yostyle Date: Thu, 29 Aug 2024 19:17:17 +0200 Subject: [PATCH 06/14] Fix lint --- .../libraries/matrix/ui/model/InviteSender.kt | 4 +- .../libraries/tchaputils/TchapPatterns.kt | 24 ++--------- .../tests/konsist/KonsistLicenseTest.kt | 40 +++++++++++++++++++ 3 files changed, 45 insertions(+), 23 deletions(-) diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/model/InviteSender.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/model/InviteSender.kt index 8920c5f5c8..155b3d21a7 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/model/InviteSender.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/model/InviteSender.kt @@ -38,8 +38,8 @@ data class InviteSender( ) { @Composable fun annotatedString(): AnnotatedString { - return stringResource(R.string.screen_invites_invited_you, displayName, userId.value).let { text -> - val senderNameStart = LocalContext.current.getString(R.string.screen_invites_invited_you).indexOf("%1\$s") // TCHAP text should be changed to hide the user id + return stringResource(R.string.screen_invites_invited_you, displayName, userId.value).let { text -> // TCHAP TODO text should be changed to hide the user id + val senderNameStart = LocalContext.current.getString(R.string.screen_invites_invited_you).indexOf("%1\$s") AnnotatedString( text = text, spanStyles = listOf( diff --git a/libraries/tchaputils/src/main/java/fr/gouv/tchap/libraries/tchaputils/TchapPatterns.kt b/libraries/tchaputils/src/main/java/fr/gouv/tchap/libraries/tchaputils/TchapPatterns.kt index a495b36929..f88b28caee 100644 --- a/libraries/tchaputils/src/main/java/fr/gouv/tchap/libraries/tchaputils/TchapPatterns.kt +++ b/libraries/tchaputils/src/main/java/fr/gouv/tchap/libraries/tchaputils/TchapPatterns.kt @@ -27,7 +27,6 @@ package fr.gouv.tchap.libraries.tchaputils import java.util.Locale object TchapPatterns { - /** * Get the homeserver name of a matrix identifier. * The identifier type may be any matrix identifier type: user id, room id, ... @@ -68,25 +67,6 @@ object TchapPatterns { */ fun String.isExternalTchapServer() = this.isEmpty() || this.startsWith("e.") || this.startsWith("agent.externe.") - /** - * Get the room name from a display name according to the given room type. - * In the case of a direct message, it will remove the domain part of the display name. - * For example in case of "Jean Martin `[Modernisation]`", this will return "Jean Martin". - * - * Otherwise, it will keep the initial name. - * - * @param displayName the display name to compute. - * @param roomType the room type associated with the given display name. - * - * @return displayName without domain (or the display name itself if the room is not a DM). - */ -// fun getRoomNameFromDisplayName(displayName: String, roomType: TchapRoomType): String { -// return when (roomType) { -// TchapRoomType.DIRECT -> getNameFromDisplayName(displayName) -// else -> displayName -// } -// } - /** * Get name part of a display name by removing the domain part if any. * For example in case of "Jean Martin `[Modernisation]`", this will return "Jean Martin". @@ -125,7 +105,9 @@ object TchapPatterns { // Handle external Tchap user case: replace single hyphen with '@'. if (identifier.indexOf('-') == lastHyphenIndex) { identifier.replaceRange(lastHyphenIndex..lastHyphenIndex, "@") - } else identifier + } else { + identifier + } } else { // Handle internal user case. buildString { diff --git a/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistLicenseTest.kt b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistLicenseTest.kt index e6cbf9ca14..5f8a47d275 100644 --- a/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistLicenseTest.kt +++ b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistLicenseTest.kt @@ -21,6 +21,32 @@ import com.lemonappdev.konsist.api.verify.assertTrue import org.junit.Test class KonsistLicenseTest { + private val tchapLicense = """ + /\* + \* MIT License + \* + \* Copyright \(c\) 20\d\d\. DINUM + \* + \* Permission is hereby granted, free of charge, to any person obtaining a copy + \* of this software and associated documentation files \(the "Software"\), to deal + \* in the Software without restriction, including without limitation the rights + \* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + \* copies of the Software, and to permit persons to whom the Software is + \* furnished to do so, subject to the following conditions: + \* + \* The above copyright notice and this permission notice shall be included in all + \* copies or substantial portions of the Software\. + \* + \* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + \* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + \* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\. + \* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + \* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + \* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE + \* OR OTHER DEALINGS IN THE SOFTWARE\. + \*/ + """.trimIndent().toRegex() + private val publicLicense = """ /\* (?:.*\n)* \* Copyright \(c\) 20\d\d New Vector Ltd @@ -55,6 +81,19 @@ class KonsistLicenseTest { \*/ """.trimIndent().toRegex() + @Test + fun `assert that Tchap files have the correct license header`() { + Konsist + .scopeFromProject() + .files + .filter { + it.path.contains("/fr/gouv/tchap/") + } + .assertTrue { + tchapLicense.containsMatchIn(it.text) + } + } + @Test fun `assert that FOSS files have the correct license header`() { Konsist @@ -62,6 +101,7 @@ class KonsistLicenseTest { .files .filter { it.path.contains("/enterprise/features").not() && + it.path.contains("/fr/gouv/tchap/").not() && it.nameWithExtension != "locales.kt" && it.name.startsWith("Template ").not() } From 68ca992651b074ee98f122be3d20ad201b78434c Mon Sep 17 00:00:00 2001 From: yostyle Date: Thu, 29 Aug 2024 19:44:05 +0200 Subject: [PATCH 07/14] Fix lint --- .../messages/impl/MessagesPresenter.kt | 2 +- .../features/messages/impl/MessagesView.kt | 1 - .../suggestions/SuggestionsPickerView.kt | 1 - .../reactionsummary/ReactionSummaryView.kt | 3 +- .../roomdetails/impl/RoomDetailsView.kt | 3 +- .../moderation/RoomMembersModerationView.kt | 6 +- .../libraries/matrix/ui/model/InviteSender.kt | 2 +- .../libraries/tchaputils/TchapPatterns.kt | 10 +-- .../libraries/tchaputils/TchapPatternsTest.kt | 5 +- .../model/MarkdownTextEditorState.kt | 3 +- .../tests/konsist/KonsistLicenseTest.kt | 70 +++++++++++++++++++ .../tests/konsist/KonsistLicenseTest.kt | 39 ----------- 12 files changed, 85 insertions(+), 60 deletions(-) create mode 100644 tests/konsist/src/test/kotlin/fr/gouv/tchap/android/tests/konsist/KonsistLicenseTest.kt diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt index 3ab2d060cd..54795210e7 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt @@ -212,7 +212,7 @@ class MessagesPresenter @AssistedInject constructor( } return MessagesState( - isDebugBuild = buildMeta.isDebuggable, + isDebugBuild = buildMeta.isDebuggable, roomId = room.roomId, roomName = roomName, roomAvatar = roomAvatar, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesView.kt index 13bb662a67..00a1dea677 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesView.kt @@ -90,7 +90,6 @@ import io.element.android.features.messages.impl.voicemessages.composer.VoiceMes import io.element.android.features.messages.impl.voicemessages.composer.VoiceMessageSendingFailedDialog import io.element.android.features.networkmonitor.api.ui.ConnectivityIndicatorView import io.element.android.libraries.androidutils.ui.hideKeyboard -import io.element.android.libraries.core.bool.orFalse import io.element.android.libraries.designsystem.atomic.molecules.IconTitlePlaceholdersRowMolecule import io.element.android.libraries.designsystem.components.ProgressDialog import io.element.android.libraries.designsystem.components.ProgressDialogType diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/suggestions/SuggestionsPickerView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/suggestions/SuggestionsPickerView.kt index b77494efb1..970479fb31 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/suggestions/SuggestionsPickerView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/suggestions/SuggestionsPickerView.kt @@ -32,7 +32,6 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import io.element.android.compound.theme.ElementTheme -import io.element.android.features.messages.impl.MessagesState import io.element.android.features.messages.impl.R import io.element.android.libraries.designsystem.components.avatar.Avatar import io.element.android.libraries.designsystem.components.avatar.AvatarData diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryView.kt index 435411c9dc..36025bb669 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryView.kt @@ -158,7 +158,8 @@ private fun SheetContent( SenderRow( isDebugBuild = summary.isDebugBuild, avatarData = user.getAvatarData(AvatarSize.UserListItem), - name = user.getBestName(), // TCHAP TODO should be applied in Element X + // TCHAP TODO should be applied in Element X + name = user.getBestName(), userId = user.userId.value, sentTime = sender.sentTime ) diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsView.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsView.kt index b34b454414..fe166b37d3 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsView.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsView.kt @@ -370,7 +370,8 @@ private fun DmHeaderSection( ) TitleAndSubtitle( title = roomName, - subtitle = otherMember.userId.value.takeIf { isDebugBuild }, // TCHAP hide the Matrix Id in release mode + // TCHAP hide the Matrix Id in release mode + subtitle = otherMember.userId.value.takeIf { isDebugBuild }, ) } } diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/moderation/RoomMembersModerationView.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/moderation/RoomMembersModerationView.kt index 700cfbaa05..88fe803a2d 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/moderation/RoomMembersModerationView.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/moderation/RoomMembersModerationView.kt @@ -225,7 +225,8 @@ private fun RoomMemberActionsBottomSheet( .align(Alignment.CenterHorizontally) ) Text( - text = roomMember.getBestName(), // TCHAP display a value generated from userId if displayname does not exist + // TCHAP display a value generated from userId if displayname does not exist + text = roomMember.getBestName(), style = ElementTheme.typography.fontHeadingLgBold, maxLines = 1, overflow = TextOverflow.Ellipsis, @@ -234,8 +235,7 @@ private fun RoomMemberActionsBottomSheet( .padding(start = 16.dp, end = 16.dp, bottom = 8.dp) .fillMaxWidth() ) - // TCHAP hide the Matrix Id in release mode - if (isDebugBuild) { + if (isDebugBuild) { // TCHAP hide the Matrix Id in release mode Text( text = roomMember.userId.toString(), style = ElementTheme.typography.fontBodyLgRegular, diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/model/InviteSender.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/model/InviteSender.kt index 155b3d21a7..17bd7dcee4 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/model/InviteSender.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/model/InviteSender.kt @@ -38,7 +38,7 @@ data class InviteSender( ) { @Composable fun annotatedString(): AnnotatedString { - return stringResource(R.string.screen_invites_invited_you, displayName, userId.value).let { text -> // TCHAP TODO text should be changed to hide the user id + return stringResource(R.string.screen_invites_invited_you, displayName, userId.value).let { text -> // TCHAP TODO should be changed to hide the user id val senderNameStart = LocalContext.current.getString(R.string.screen_invites_invited_you).indexOf("%1\$s") AnnotatedString( text = text, diff --git a/libraries/tchaputils/src/main/java/fr/gouv/tchap/libraries/tchaputils/TchapPatterns.kt b/libraries/tchaputils/src/main/java/fr/gouv/tchap/libraries/tchaputils/TchapPatterns.kt index f88b28caee..5115b02812 100644 --- a/libraries/tchaputils/src/main/java/fr/gouv/tchap/libraries/tchaputils/TchapPatterns.kt +++ b/libraries/tchaputils/src/main/java/fr/gouv/tchap/libraries/tchaputils/TchapPatterns.kt @@ -33,7 +33,6 @@ object TchapPatterns { * For example in case of "@jean-philippe.martin-modernisation.fr:matrix.test.org", this will return "matrix.test.org". * in case of "!AAAAAAA:matrix.test.org", this will return "matrix.test.org". * - * @param mxId the matrix identifier. * @return the homeserver name, if any. */ fun String.toHomeserverName() = this.substringAfter(":", "") @@ -46,7 +45,6 @@ object TchapPatterns { * For example in case of "@jean-philippe.martin-modernisation.fr:name1.tchap.gouv.fr", this will return "Name1". * in case of "@jean-philippe.martin-modernisation.fr:agent.name2.tchap.gouv.fr", this will return "Name2". * - * @param mxId the matrix identifier. * @return the Tchap display name of the homeserver. */ fun String.toHomeserverDisplayName(): String { @@ -62,7 +60,6 @@ object TchapPatterns { /** * Tells whether a homeserver name corresponds to an external server or not. * - * @param homeServerName the homeserver name to check. * @return true if external. */ fun String.isExternalTchapServer() = this.isEmpty() || this.startsWith("e.") || this.startsWith("agent.externe.") @@ -71,7 +68,6 @@ object TchapPatterns { * Get name part of a display name by removing the domain part if any. * For example in case of "Jean Martin `[Modernisation]`", this will return "Jean Martin". * - * @param displayName the display name to compute. * @return displayName without domain (or the display name itself if no domain has been found). */ fun String.getUserName() = this.substringBefore('[').trim() @@ -80,7 +76,6 @@ object TchapPatterns { * Get the potential domain name from a display name. * For example in case of "Jean Martin `[Modernisation]`", this will return "Modernisation". * - * @param displayName the display name to compute. * @return displayName without name, empty string if no domain is available. */ fun String.getUserDomain() = this.substringBeforeLast(']', "").substringAfterLast('[', "").trim() @@ -115,7 +110,7 @@ object TchapPatterns { for (i in 0 until lastHyphenIndex) { val char = identifier[i] when { - (capitalizeNext && (char == '.' || char == '-')) -> continue + capitalizeNext && (char == '.' || char == '-') -> continue char == '.' -> { // Replace the dot character by space character append(' ') @@ -140,7 +135,6 @@ object TchapPatterns { * Tells whether the provided tchap identifier corresponds to an extern user. * Note: invalid tchap identifier will be considered as external. * - * @param tchapUserId user identifier (ie. the matrix identifier). * @return true if external. */ fun String.isExternalTchapUser() = this.toHomeserverName().isExternalTchapServer() @@ -156,7 +150,7 @@ object TchapPatterns { /** * Create a room alias with a prefix. * - * @param session the user's session. + * @param sessionId the user's id session. * @param prefix the alias name prefix. * @return the suggested alias. */ diff --git a/libraries/tchaputils/src/test/java/fr/gouv/tchap/libraries/tchaputils/TchapPatternsTest.kt b/libraries/tchaputils/src/test/java/fr/gouv/tchap/libraries/tchaputils/TchapPatternsTest.kt index cd0d6aba2b..68c835cdb7 100644 --- a/libraries/tchaputils/src/test/java/fr/gouv/tchap/libraries/tchaputils/TchapPatternsTest.kt +++ b/libraries/tchaputils/src/test/java/fr/gouv/tchap/libraries/tchaputils/TchapPatternsTest.kt @@ -26,20 +26,19 @@ package fr.gouv.tchap.libraries.tchaputils import fr.gouv.tchap.libraries.tchaputils.TchapPatterns.getUserDomain import fr.gouv.tchap.libraries.tchaputils.TchapPatterns.getUserName -import fr.gouv.tchap.libraries.tchaputils.TchapPatterns.toUserDisplayName import fr.gouv.tchap.libraries.tchaputils.TchapPatterns.toHomeserverDisplayName +import fr.gouv.tchap.libraries.tchaputils.TchapPatterns.toUserDisplayName import org.junit.Assert.assertEquals import org.junit.Test class TchapPatternsTest { - /** * Test getting full name without domain. */ @Test fun `given a displayName if it contains brackets then return its first element after split`() { - assertEquals( "Nom Prenom", "Nom Prenom [Modernisation]".getUserName()) + assertEquals("Nom Prenom", "Nom Prenom [Modernisation]".getUserName()) } @Test diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/MarkdownTextEditorState.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/MarkdownTextEditorState.kt index 57a49cb3ba..4507f888d9 100644 --- a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/MarkdownTextEditorState.kt +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/MarkdownTextEditorState.kt @@ -73,7 +73,8 @@ class MarkdownTextEditorState( } is ResolvedSuggestion.Member -> { val currentText = SpannableStringBuilder(text.value()) - val text = resolvedSuggestion.roomMember.displayName?.prependIndent("@") ?: resolvedSuggestion.roomMember.userId.value // TCHAP TODO check needed about mxid displaying + val text = resolvedSuggestion.roomMember.displayName?.prependIndent("@") + ?: resolvedSuggestion.roomMember.userId.value // TCHAP TODO check needed about mxid displaying val link = permalinkBuilder.permalinkForUser(resolvedSuggestion.roomMember.userId).getOrNull() ?: return val mentionPill = mentionSpanProvider.getMentionSpanFor(text, link) currentText.replace(suggestion.start, suggestion.end, "@ ") diff --git a/tests/konsist/src/test/kotlin/fr/gouv/tchap/android/tests/konsist/KonsistLicenseTest.kt b/tests/konsist/src/test/kotlin/fr/gouv/tchap/android/tests/konsist/KonsistLicenseTest.kt new file mode 100644 index 0000000000..03363aed18 --- /dev/null +++ b/tests/konsist/src/test/kotlin/fr/gouv/tchap/android/tests/konsist/KonsistLicenseTest.kt @@ -0,0 +1,70 @@ +/* + * MIT License + * + * Copyright (c) 2024. DINUM + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE + * OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package fr.gouv.tchap.android.tests.konsist + +import com.lemonappdev.konsist.api.Konsist +import com.lemonappdev.konsist.api.verify.assertTrue +import org.junit.Test + +class KonsistLicenseTest { + private val tchapLicense = """ + /\* + \* MIT License + \* + \* Copyright \(c\) 20\d\d\. DINUM + \* + \* Permission is hereby granted, free of charge, to any person obtaining a copy + \* of this software and associated documentation files \(the "Software"\), to deal + \* in the Software without restriction, including without limitation the rights + \* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + \* copies of the Software, and to permit persons to whom the Software is + \* furnished to do so, subject to the following conditions: + \* + \* The above copyright notice and this permission notice shall be included in all + \* copies or substantial portions of the Software\. + \* + \* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + \* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + \* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\. + \* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + \* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + \* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE + \* OR OTHER DEALINGS IN THE SOFTWARE\. + \*/ + """.trimIndent().toRegex() + + @Test + fun `assert that Tchap files have the correct license header`() { + Konsist + .scopeFromProject() + .files + .filter { + it.path.contains("/fr/gouv/tchap/") + } + .assertTrue { + tchapLicense.containsMatchIn(it.text) + } + } +} diff --git a/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistLicenseTest.kt b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistLicenseTest.kt index 5f8a47d275..9b4ef100d9 100644 --- a/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistLicenseTest.kt +++ b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistLicenseTest.kt @@ -21,32 +21,6 @@ import com.lemonappdev.konsist.api.verify.assertTrue import org.junit.Test class KonsistLicenseTest { - private val tchapLicense = """ - /\* - \* MIT License - \* - \* Copyright \(c\) 20\d\d\. DINUM - \* - \* Permission is hereby granted, free of charge, to any person obtaining a copy - \* of this software and associated documentation files \(the "Software"\), to deal - \* in the Software without restriction, including without limitation the rights - \* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - \* copies of the Software, and to permit persons to whom the Software is - \* furnished to do so, subject to the following conditions: - \* - \* The above copyright notice and this permission notice shall be included in all - \* copies or substantial portions of the Software\. - \* - \* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - \* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - \* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\. - \* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - \* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - \* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - \* OR OTHER DEALINGS IN THE SOFTWARE\. - \*/ - """.trimIndent().toRegex() - private val publicLicense = """ /\* (?:.*\n)* \* Copyright \(c\) 20\d\d New Vector Ltd @@ -81,19 +55,6 @@ class KonsistLicenseTest { \*/ """.trimIndent().toRegex() - @Test - fun `assert that Tchap files have the correct license header`() { - Konsist - .scopeFromProject() - .files - .filter { - it.path.contains("/fr/gouv/tchap/") - } - .assertTrue { - tchapLicense.containsMatchIn(it.text) - } - } - @Test fun `assert that FOSS files have the correct license header`() { Konsist From 5ad70325c36f9d16fd7eb033f018d830141047f5 Mon Sep 17 00:00:00 2001 From: yostyle Date: Mon, 7 Oct 2024 23:35:36 +0200 Subject: [PATCH 08/14] Fix build after rebasing --- .../impl/members/moderation/RoomMembersModerationPresenter.kt | 4 +++- .../members/moderation/RoomMembersModerationPresenterTest.kt | 1 + .../io/element/android/samples/minimal/RoomListScreen.kt | 3 +++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/moderation/RoomMembersModerationPresenter.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/moderation/RoomMembersModerationPresenter.kt index 3a856c4f90..eb23a48bf8 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/moderation/RoomMembersModerationPresenter.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/moderation/RoomMembersModerationPresenter.kt @@ -22,6 +22,7 @@ import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.architecture.runUpdatingState import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.core.extensions.finally +import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.room.MatrixRoom import io.element.android.libraries.matrix.api.room.RoomMember @@ -39,13 +40,13 @@ import kotlinx.coroutines.launch import javax.inject.Inject class RoomMembersModerationPresenter @Inject constructor( + private val buildMeta: BuildMeta, private val room: MatrixRoom, private val dispatchers: CoroutineDispatchers, private val analyticsService: AnalyticsService, ) : Presenter { private var selectedMember by mutableStateOf(null) -//isDebugBuild = false, private suspend fun canBan() = room.canBan().getOrDefault(false) private suspend fun canKick() = room.canKick().getOrDefault(false) @@ -134,6 +135,7 @@ class RoomMembersModerationPresenter @Inject constructor( } return RoomMembersModerationState( + isDebugBuild = buildMeta.isDebuggable, canDisplayModerationActions = canDisplayModerationActions, selectedRoomMember = selectedMember, actions = moderationActions, diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/moderation/RoomMembersModerationPresenterTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/moderation/RoomMembersModerationPresenterTest.kt index 524158a5f3..f23a9b2f4e 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/moderation/RoomMembersModerationPresenterTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/moderation/RoomMembersModerationPresenterTest.kt @@ -319,6 +319,7 @@ class RoomMembersModerationPresenterTest { analyticsService: FakeAnalyticsService = FakeAnalyticsService(), ): RoomMembersModerationPresenter { return RoomMembersModerationPresenter( + buildMeta = buildMeta, room = matrixRoom, dispatchers = dispatchers, analyticsService = analyticsService, diff --git a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/RoomListScreen.kt b/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/RoomListScreen.kt index 6e46b4e48f..123c62591b 100644 --- a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/RoomListScreen.kt +++ b/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/RoomListScreen.kt @@ -25,6 +25,7 @@ import io.element.android.features.roomlist.impl.filters.selection.DefaultFilter import io.element.android.features.roomlist.impl.search.RoomListSearchDataSource import io.element.android.features.roomlist.impl.search.RoomListSearchPresenter import io.element.android.libraries.core.coroutine.CoroutineDispatchers +import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.dateformatter.impl.DateFormatters import io.element.android.libraries.dateformatter.impl.DefaultLastMessageTimestampFormatter import io.element.android.libraries.dateformatter.impl.LocalDateTimeProvider @@ -51,12 +52,14 @@ import kotlinx.datetime.Clock import kotlinx.datetime.TimeZone import timber.log.Timber import java.util.Locale +import javax.inject.Inject class RoomListScreen( context: Context, private val matrixClient: MatrixClient, private val coroutineDispatchers: CoroutineDispatchers = Singleton.coroutineDispatchers, ) { + @Inject lateinit var buildMeta: BuildMeta private val clock = Clock.System private val locale = Locale.getDefault() private val timeZone = TimeZone.currentSystemDefault() From c8f2ec87fdc3c2e503da6b9ef8729ee35b2f8a4e Mon Sep 17 00:00:00 2001 From: ElementBot Date: Mon, 7 Oct 2024 22:04:44 +0000 Subject: [PATCH 09/14] Update screenshots --- ...tures.createroom.impl.addpeople_AddPeopleView_Day_2_en.png | 4 ++-- ...tures.createroom.impl.addpeople_AddPeopleView_Day_3_en.png | 4 ++-- ...res.createroom.impl.addpeople_AddPeopleView_Night_2_en.png | 4 ++-- ...res.createroom.impl.addpeople_AddPeopleView_Night_3_en.png | 4 ++-- ...eroom.impl.components_SearchMultipleUsersResultItem_en.png | 4 ++-- ...eateroom.impl.components_SearchSingleUserResultItem_en.png | 4 ++-- ...tures.createroom.impl.components_UserListView_Day_5_en.png | 4 ++-- ...tures.createroom.impl.components_UserListView_Day_6_en.png | 4 ++-- ...tures.createroom.impl.components_UserListView_Day_9_en.png | 4 ++-- ...res.createroom.impl.components_UserListView_Night_5_en.png | 4 ++-- ...res.createroom.impl.components_UserListView_Night_6_en.png | 4 ++-- ...res.createroom.impl.components_UserListView_Night_9_en.png | 4 ++-- ...tures.createroom.impl.root_CreateRoomRootView_Day_1_en.png | 4 ++-- ...tures.createroom.impl.root_CreateRoomRootView_Day_2_en.png | 4 ++-- ...tures.createroom.impl.root_CreateRoomRootView_Day_3_en.png | 4 ++-- ...res.createroom.impl.root_CreateRoomRootView_Night_1_en.png | 4 ++-- ...res.createroom.impl.root_CreateRoomRootView_Night_2_en.png | 4 ++-- ...res.createroom.impl.root_CreateRoomRootView_Night_3_en.png | 4 ++-- ...eatures.messages.impl.actionlist_SheetContent_Day_3_en.png | 4 ++-- ...tures.messages.impl.actionlist_SheetContent_Night_3_en.png | 4 ++-- ...agecomposer.suggestions_SuggestionsPickerView_Day_0_en.png | 4 ++-- ...ecomposer.suggestions_SuggestionsPickerView_Night_0_en.png | 4 ++-- ...eline.components.reactionsummary_SheetContent_Day_0_en.png | 4 ++-- ...ine.components.reactionsummary_SheetContent_Night_0_en.png | 4 ++-- ...ts.receipt.bottomsheet_ReadReceiptBottomSheet_Day_1_en.png | 4 ++-- ...ts.receipt.bottomsheet_ReadReceiptBottomSheet_Day_2_en.png | 4 ++-- ...ts.receipt.bottomsheet_ReadReceiptBottomSheet_Day_3_en.png | 4 ++-- ...ts.receipt.bottomsheet_ReadReceiptBottomSheet_Day_4_en.png | 4 ++-- ...ts.receipt.bottomsheet_ReadReceiptBottomSheet_Day_5_en.png | 4 ++-- ....receipt.bottomsheet_ReadReceiptBottomSheet_Night_1_en.png | 4 ++-- ....receipt.bottomsheet_ReadReceiptBottomSheet_Night_2_en.png | 4 ++-- ....receipt.bottomsheet_ReadReceiptBottomSheet_Night_3_en.png | 4 ++-- ....receipt.bottomsheet_ReadReceiptBottomSheet_Night_4_en.png | 4 ++-- ....receipt.bottomsheet_ReadReceiptBottomSheet_Night_5_en.png | 4 ++-- ....components_TimelineItemEventRowDisambiguated_Day_0_en.png | 4 ++-- ...omponents_TimelineItemEventRowDisambiguated_Night_0_en.png | 4 ++-- ...s.messages.impl.typing_TypingNotificationView_Day_1_en.png | 4 ++-- ...messages.impl.typing_TypingNotificationView_Night_1_en.png | 4 ++-- ...references.impl.blockedusers_BlockedUsersView_Day_0_en.png | 4 ++-- ...references.impl.blockedusers_BlockedUsersView_Day_1_en.png | 4 ++-- ...references.impl.blockedusers_BlockedUsersView_Day_3_en.png | 4 ++-- ...references.impl.blockedusers_BlockedUsersView_Day_4_en.png | 4 ++-- ...references.impl.blockedusers_BlockedUsersView_Day_5_en.png | 4 ++-- ...references.impl.blockedusers_BlockedUsersView_Day_6_en.png | 4 ++-- ...ferences.impl.blockedusers_BlockedUsersView_Night_0_en.png | 4 ++-- ...ferences.impl.blockedusers_BlockedUsersView_Night_1_en.png | 4 ++-- ...ferences.impl.blockedusers_BlockedUsersView_Night_3_en.png | 4 ++-- ...ferences.impl.blockedusers_BlockedUsersView_Night_4_en.png | 4 ++-- ...ferences.impl.blockedusers_BlockedUsersView_Night_5_en.png | 4 ++-- ...ferences.impl.blockedusers_BlockedUsersView_Night_6_en.png | 4 ++-- ...res.preferences.impl.root_PreferencesRootViewDark_0_en.png | 4 ++-- ...res.preferences.impl.root_PreferencesRootViewDark_1_en.png | 4 ++-- ...es.preferences.impl.root_PreferencesRootViewLight_0_en.png | 4 ++-- ...es.preferences.impl.root_PreferencesRootViewLight_1_en.png | 4 ++-- ...ces.impl.user.editprofile_EditUserProfileView_Day_0_en.png | 4 ++-- ...s.impl.user.editprofile_EditUserProfileView_Night_0_en.png | 4 ++-- ...eatures.preferences.impl.user_UserPreferences_Day_0_en.png | 4 ++-- ...eatures.preferences.impl.user_UserPreferences_Day_1_en.png | 4 ++-- ...tures.preferences.impl.user_UserPreferences_Night_0_en.png | 4 ++-- ...tures.preferences.impl.user_UserPreferences_Night_1_en.png | 4 ++-- ...roomdetails.impl.invite_RoomInviteMembersView_Day_5_en.png | 4 ++-- ...roomdetails.impl.invite_RoomInviteMembersView_Day_6_en.png | 4 ++-- ...omdetails.impl.invite_RoomInviteMembersView_Night_5_en.png | 4 ++-- ...omdetails.impl.invite_RoomInviteMembersView_Night_6_en.png | 4 ++-- ....members.moderation_RoomMembersModerationView_Day_0_en.png | 4 ++-- ....members.moderation_RoomMembersModerationView_Day_1_en.png | 4 ++-- ....members.moderation_RoomMembersModerationView_Day_2_en.png | 4 ++-- ...embers.moderation_RoomMembersModerationView_Night_0_en.png | 4 ++-- ...embers.moderation_RoomMembersModerationView_Night_1_en.png | 4 ++-- ...embers.moderation_RoomMembersModerationView_Night_2_en.png | 4 ++-- ...details.impl.members_RoomMemberListViewBanned_Day_0_en.png | 4 ++-- ...details.impl.members_RoomMemberListViewBanned_Day_1_en.png | 4 ++-- ...tails.impl.members_RoomMemberListViewBanned_Night_0_en.png | 4 ++-- ...tails.impl.members_RoomMemberListViewBanned_Night_1_en.png | 4 ++-- ...s.roomdetails.impl.members_RoomMemberListView_Day_0_en.png | 4 ++-- ...s.roomdetails.impl.members_RoomMemberListView_Day_6_en.png | 4 ++-- ...roomdetails.impl.members_RoomMemberListView_Night_0_en.png | 4 ++-- ...roomdetails.impl.members_RoomMemberListView_Night_6_en.png | 4 ++-- ...esandpermissions.changeroles_ChangeRolesView_Day_10_en.png | 4 ++-- ...lesandpermissions.changeroles_ChangeRolesView_Day_1_en.png | 4 ++-- ...lesandpermissions.changeroles_ChangeRolesView_Day_2_en.png | 4 ++-- ...lesandpermissions.changeroles_ChangeRolesView_Day_3_en.png | 4 ++-- ...lesandpermissions.changeroles_ChangeRolesView_Day_4_en.png | 4 ++-- ...lesandpermissions.changeroles_ChangeRolesView_Day_5_en.png | 4 ++-- ...lesandpermissions.changeroles_ChangeRolesView_Day_6_en.png | 4 ++-- ...lesandpermissions.changeroles_ChangeRolesView_Day_7_en.png | 4 ++-- ...lesandpermissions.changeroles_ChangeRolesView_Day_8_en.png | 4 ++-- ...lesandpermissions.changeroles_ChangeRolesView_Day_9_en.png | 4 ++-- ...andpermissions.changeroles_ChangeRolesView_Night_10_en.png | 4 ++-- ...sandpermissions.changeroles_ChangeRolesView_Night_1_en.png | 4 ++-- ...sandpermissions.changeroles_ChangeRolesView_Night_2_en.png | 4 ++-- ...sandpermissions.changeroles_ChangeRolesView_Night_3_en.png | 4 ++-- ...sandpermissions.changeroles_ChangeRolesView_Night_4_en.png | 4 ++-- ...sandpermissions.changeroles_ChangeRolesView_Night_5_en.png | 4 ++-- ...sandpermissions.changeroles_ChangeRolesView_Night_6_en.png | 4 ++-- ...sandpermissions.changeroles_ChangeRolesView_Night_7_en.png | 4 ++-- ...sandpermissions.changeroles_ChangeRolesView_Night_8_en.png | 4 ++-- ...sandpermissions.changeroles_ChangeRolesView_Night_9_en.png | 4 ++-- ...ions.changeroles_PendingMemberRowWithLongName_Day_0_en.png | 4 ++-- ...ns.changeroles_PendingMemberRowWithLongName_Night_0_en.png | 4 ++-- .../images/features.roomdetails.impl_RoomDetailsDark_5_en.png | 4 ++-- .../images/features.roomdetails.impl_RoomDetailsDark_6_en.png | 4 ++-- .../images/features.roomdetails.impl_RoomDetails_5_en.png | 4 ++-- .../images/features.roomdetails.impl_RoomDetails_6_en.png | 4 ++-- ...ures.roomlist.impl.components_RoomSummaryRow_Day_30_en.png | 4 ++-- ...es.roomlist.impl.components_RoomSummaryRow_Night_30_en.png | 4 ++-- ...s.userprofile.shared_UserProfileHeaderSection_Day_0_en.png | 4 ++-- ...userprofile.shared_UserProfileHeaderSection_Night_0_en.png | 4 ++-- .../features.userprofile.shared_UserProfileView_Day_0_en.png | 4 ++-- .../features.userprofile.shared_UserProfileView_Day_1_en.png | 4 ++-- .../features.userprofile.shared_UserProfileView_Day_2_en.png | 4 ++-- .../features.userprofile.shared_UserProfileView_Day_3_en.png | 4 ++-- .../features.userprofile.shared_UserProfileView_Day_4_en.png | 4 ++-- .../features.userprofile.shared_UserProfileView_Day_5_en.png | 4 ++-- .../features.userprofile.shared_UserProfileView_Day_6_en.png | 4 ++-- .../features.userprofile.shared_UserProfileView_Day_7_en.png | 4 ++-- .../features.userprofile.shared_UserProfileView_Day_8_en.png | 4 ++-- ...features.userprofile.shared_UserProfileView_Night_0_en.png | 4 ++-- ...features.userprofile.shared_UserProfileView_Night_1_en.png | 4 ++-- ...features.userprofile.shared_UserProfileView_Night_2_en.png | 4 ++-- ...features.userprofile.shared_UserProfileView_Night_3_en.png | 4 ++-- ...features.userprofile.shared_UserProfileView_Night_4_en.png | 4 ++-- ...features.userprofile.shared_UserProfileView_Night_5_en.png | 4 ++-- ...features.userprofile.shared_UserProfileView_Night_6_en.png | 4 ++-- ...features.userprofile.shared_UserProfileView_Night_7_en.png | 4 ++-- ...features.userprofile.shared_UserProfileView_Night_8_en.png | 4 ++-- ...aries.matrix.ui.components_CheckableResolvedUserRow_en.png | 4 ++-- ...braries.matrix.ui.components_MatrixUserHeader_Day_0_en.png | 4 ++-- ...braries.matrix.ui.components_MatrixUserHeader_Day_1_en.png | 4 ++-- ...aries.matrix.ui.components_MatrixUserHeader_Night_0_en.png | 4 ++-- ...aries.matrix.ui.components_MatrixUserHeader_Night_1_en.png | 4 ++-- .../libraries.matrix.ui.components_MatrixUserRow_Day_0_en.png | 4 ++-- .../libraries.matrix.ui.components_MatrixUserRow_Day_1_en.png | 4 ++-- ...ibraries.matrix.ui.components_MatrixUserRow_Night_0_en.png | 4 ++-- ...ibraries.matrix.ui.components_MatrixUserRow_Night_1_en.png | 4 ++-- ...ibraries.matrix.ui.messages.sender_SenderName_Day_1_en.png | 4 ++-- ...ibraries.matrix.ui.messages.sender_SenderName_Day_2_en.png | 4 ++-- ...ibraries.matrix.ui.messages.sender_SenderName_Day_4_en.png | 4 ++-- ...ibraries.matrix.ui.messages.sender_SenderName_Day_5_en.png | 4 ++-- ...ibraries.matrix.ui.messages.sender_SenderName_Day_7_en.png | 4 ++-- ...ibraries.matrix.ui.messages.sender_SenderName_Day_8_en.png | 4 ++-- ...raries.matrix.ui.messages.sender_SenderName_Night_1_en.png | 4 ++-- ...raries.matrix.ui.messages.sender_SenderName_Night_2_en.png | 4 ++-- ...raries.matrix.ui.messages.sender_SenderName_Night_4_en.png | 4 ++-- ...raries.matrix.ui.messages.sender_SenderName_Night_5_en.png | 4 ++-- ...raries.matrix.ui.messages.sender_SenderName_Night_7_en.png | 4 ++-- ...raries.matrix.ui.messages.sender_SenderName_Night_8_en.png | 4 ++-- 147 files changed, 294 insertions(+), 294 deletions(-) diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Day_2_en.png index b120267f45..c50f68d6d6 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9a0a3b1be08dd65f0327e6a8f5f6887ba84e92210396b67fbc0e06476c85083a -size 77369 +oid sha256:f689fa83c8abdf8bfe5888d3d44a2b28dd092469999a736f5a962eb786d6dcc3 +size 69479 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Day_3_en.png index b77917a3f0..97e12a6bc9 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:118369cac5ffffbda03faa41c4a3fb26e4014757e86fa9b31871e18dfb312b3e -size 42073 +oid sha256:831d86eb87355272eaf5f153465a4a7558673063f109a8a28fe7e9f70d1687ec +size 28630 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Night_2_en.png index c991b0b58b..cf4993062c 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e9b6a5050fc2dea2b38e1aef137854c738f7308cf08f4aad461dbe2de226b3e8 -size 78216 +oid sha256:9770437d30347b68c923c9df1ecde8a1eec626df560b40fe4703e371ca281542 +size 70466 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Night_3_en.png index 2f0cd1e72f..0afb4dbb81 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9a5c2e713849c912004275c4c61256ffdf99388bff9da97b40732090295104e3 -size 42081 +oid sha256:950c23c240c7b3796dd99d9c9244237690063fee4be808c3932eb43855eeaf31 +size 28772 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_SearchMultipleUsersResultItem_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_SearchMultipleUsersResultItem_en.png index fccb09b40e..cc2130c39c 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_SearchMultipleUsersResultItem_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_SearchMultipleUsersResultItem_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7714bcbe7a5535390328282aa7aacbe6d0155c7ec7273ab1a08be7fd56798269 -size 82386 +oid sha256:642a9bcf8e5abcf7f593afd2bede046cb21224d85711fb55b174a44cb4254a1e +size 70677 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_SearchSingleUserResultItem_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_SearchSingleUserResultItem_en.png index 7f83990532..d23735c193 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_SearchSingleUserResultItem_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_SearchSingleUserResultItem_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3aabc27a2531ecd79a01de70cbb149ff4c77fb9d37f3cefd5727a083c3edf455 -size 42712 +oid sha256:f0859e6298493a56e416b37cfeff80973d75550d782f4ab930bc3be3a663bd0c +size 35955 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_5_en.png index c562f2cabd..b63b11bd4b 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f49822ac3f9a328dcbc9747e49ab3b3af74de42f81f833640232199d85d8d961 -size 38428 +oid sha256:21e5af8a0a9a792a6e028b9d625a127067d3e6d4dba1511242d49cec452b2e16 +size 21944 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_6_en.png index 32022961c5..ddd8bd95ad 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ad11252f9d054c05c52d126c2dd7656c787bf2c4bc76dabb6815c2030abffe82 -size 51881 +oid sha256:967821330a6852b5e91d7911eb79a20a9ac73450bbae7dd1436782dbe84b17d8 +size 35837 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_9_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_9_en.png index 7dcfba5ddc..186057adcb 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2699ae8a9f69d336f20d2376012526a36394495027d3d277061c5d55359ba587 -size 37761 +oid sha256:4a5e9d491aadf08c690aa1814de6fe0ecfbbfa3d0ca8b7df41610d59353671ad +size 24160 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_5_en.png index 5ed5ad8a29..de6d0266aa 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ed09d7879d10d22bc90bf0757bc649436f90428347cc8df2780c05e4c1c95fe5 -size 39183 +oid sha256:44635c003c554af38d87e623b1e9142fd8b4899b1cd2af666e3e6ec6c9aa0168 +size 22785 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_6_en.png index ffab27786d..a6d97e598f 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a53dddddd8774b9c02beb6daab0111ad62f8e28863815a45be12d1bb0dbec9e8 -size 53254 +oid sha256:871c1c0f0d7dd21e75f02601e0daf81375013bd894e0e62347af8444fb6b072d +size 37392 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_9_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_9_en.png index 4811773d17..a5f8fec2b4 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dd6eac503164cafe15fe7d7d668fb0ab82eb81324b2bf1de3b1230e945083830 -size 37892 +oid sha256:f0f2a58f93913c903451a266d194f8ef215cdb8cdfaf7be0a434206407f63532 +size 24555 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Day_1_en.png index ea896a093d..4d55931618 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:208e9d9f42a929c0bdb280c4442faf0211f43d3d350c48246b20ca3256a11690 -size 19846 +oid sha256:c0f013b9588c0d693c0da56f1b17b87af7664dd8bb40a272437a02754d45a5b4 +size 17027 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Day_2_en.png index beb2aca740..fa6655d33d 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5524fdbc6570b90bb1d8296670631259b3fd7b3b8908b7622165d658ac7d1e60 -size 26324 +oid sha256:d326e6bd1d0b6ffff0d8d3e9eeb72065aeed86738c3fde3aa07e1bd839c5faad +size 23886 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Day_3_en.png index 02d2735fb6..9b0225212c 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7e8fbff0db3fb8dc996226fcb1b515638be54f7e6fec6de303e86f954037c328 -size 48411 +oid sha256:944c776c6ca8ffcd38c8cf703e9fff393835a0ffebda7b5adec7740a707555ee +size 35037 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Night_1_en.png index ac30088346..bdc69a9fab 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fa26d53e0373f886180c38c7398597737dd808ef98e658a5f98e0fc74f150f36 -size 18764 +oid sha256:91218bce89c5c09f13377bdd19bb400c5c409a9ebde15f6c21ba1ab7dbfc6ecd +size 16113 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Night_2_en.png index b8fb57b908..3e9d67992b 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d0fc065ed57fc706c81e04fb527ed4ba25deb5b5366d4c67cb902ead6bac83d5 -size 24772 +oid sha256:a6f4cec06a6d655fbcdef0a9087a2ac4c61c6d6820078af24aff5f3932b3a675 +size 22259 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Night_3_en.png index 3cd0ea6005..9ce0e66b02 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f0c79e01df12f6784e85fea66c27e2b454b34742db9c666d7c7e3f14d27229e2 -size 48207 +oid sha256:28f4d552b8f16bcbf91a66cb54fedbf9b62bb2a2f00e7f7326f2acc37f98f89c +size 35101 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_SheetContent_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_SheetContent_Day_3_en.png index 518d669991..d161044842 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_SheetContent_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_SheetContent_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c13e631e41cafa49321988065bedff6081fbc4aa99d9cb3a32b4d860888c7535 -size 42412 +oid sha256:22b7d6271cfff3ac1eddc137188c26cb2d17f120b3db2d1d556f9a4b524bb53e +size 41249 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_SheetContent_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_SheetContent_Night_3_en.png index 59f8a02c54..0f5f4c30c7 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_SheetContent_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_SheetContent_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:35988d035ddf2eea2463586024703fc630f996c6e03a232fc65196ab5186b89a -size 41582 +oid sha256:5f59d8fad6d9f6de8546ff70cf96a0e653c899a12265c87cb36839ce75cc559c +size 40410 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer.suggestions_SuggestionsPickerView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer.suggestions_SuggestionsPickerView_Day_0_en.png index d648e7b34a..eab38de8da 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer.suggestions_SuggestionsPickerView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer.suggestions_SuggestionsPickerView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7d984f18fc4abf9fe56afc74f094aaacfb6926642b37d2d5fc11568707e3f331 -size 22296 +oid sha256:3302a93d6c39a031355ad45ef30d30775ca26f802c08d973a961112d73b762aa +size 18074 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer.suggestions_SuggestionsPickerView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer.suggestions_SuggestionsPickerView_Night_0_en.png index 39aed8f6a0..e8fce29f73 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer.suggestions_SuggestionsPickerView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer.suggestions_SuggestionsPickerView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:853541fe1bf56895ed286791d68e13d6f07bd8a5a1fbdaafe5354f10a916f5c0 -size 22620 +oid sha256:64895551dbac36965b7f8c3c2767cc2c716a70c4f61f150b5a0609191fdc0cd9 +size 18493 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.reactionsummary_SheetContent_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.reactionsummary_SheetContent_Day_0_en.png index d0bf72416c..f549842b7a 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.reactionsummary_SheetContent_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.reactionsummary_SheetContent_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:674823bf585f3093fc209469a849000e026b6fdf121c1865268ce66c7e2dac79 -size 23038 +oid sha256:8f7649d00c2fcf8a00549d97605c6297e203c03d8b46537832cc70accc4e4351 +size 17942 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.reactionsummary_SheetContent_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.reactionsummary_SheetContent_Night_0_en.png index ab107a4499..a929ee808a 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.reactionsummary_SheetContent_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.reactionsummary_SheetContent_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:67cbf2a05aac40cbdcb06095f3473cd89d4284d8330cc05e4cc020312621f066 -size 23107 +oid sha256:16cbb899dbac6d672da401747fe10ee63ded8d67a05e6d9a047a98918869b56e +size 18198 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_1_en.png index 75d69f4777..91e1098009 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:050fa3fa32b857b6e08f4e932e51e5ee9332fa0eafbac2e21c1861d342a217bd -size 10955 +oid sha256:bdcf4946a16e2579269e331f3a9ec9ce8b5a41fb94f4a52385907dbba4d6f36e +size 8716 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_2_en.png index 098d6efc22..43848b2ff9 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:96559668fcdb1f9c1975a76e2c5e65de968e2d71299aec9f6a2ac515adaa9cff -size 16215 +oid sha256:51b6b68dbae071d8cf49614cf272b01885771894014f721977fc55c14ff25ddc +size 11909 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_3_en.png index 341b160495..99dc5f9330 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:48345222fd13dc64bf868f57505b4ae2b1e6c06a90c835217c68fbb3f2cd408a -size 21342 +oid sha256:aa3164e38fccdcc84d0e0155cd25c89e99b31de831b1f0dcec79cbdfc5ac937c +size 14954 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_4_en.png index 77bca09d13..10ce1e42fd 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:58f1e74ed2d1cad37234ec1f037487cac55f127811638d6de86c4375fda55d08 -size 26031 +oid sha256:cbb21dda594bc709032bd99a10daa2fcb481672aaf646bf707b2079e3ebfc4c1 +size 17952 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_5_en.png index ec0de4d7d9..1fbc0f1182 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:86f2f3b3d3b3c12422886a7fe0e2917360c2176dfe922426882a2804f8367fb0 -size 31142 +oid sha256:517b3fe5133204c9cb0b766549141abc7e8fd46e38ce72b0ba4a6fa697a5f61e +size 20764 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_1_en.png index fee81ad5bb..fdf9f8cebb 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f5e9c431ac176be5549cd8d404fb36970d0e8c9d2d1c55b4bc72014a23806131 -size 11051 +oid sha256:0a9d50666e4503640fa1c53002d7ee98fa64b06e2ae93bed9301a729d82b0d35 +size 8857 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_2_en.png index 75b6d8ac6a..307aa89eea 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cbb43b5c5c47f4c0cf52d101ecfcb116e428f4a4e8edebe851b76de5f6ef9518 -size 16110 +oid sha256:e8f5cdfe4117c305647c8becba06bffedfda46baf52c6b296fb01a00aa24c6cc +size 11945 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_3_en.png index 2e00542751..cc9494f2c2 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:91da94231ae6d20e448af1d20bd0da9eeb2d4fc534840f35ed5ec928a767ef5f -size 21337 +oid sha256:4035e88c60cc1e24d91c8c90c1132f2f552e19b4ed9fc1eb41502bf8a7717b28 +size 15119 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_4_en.png index 6c06bc6bd0..a3cbccc30b 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:580f66dde83f45bb13c48a1f650573c77846857d780f500382f3fe0eb04a7c83 -size 26129 +oid sha256:02cb5b3b9ab526773367966fa42eb04410c9fca886835e515016a02043590e2e +size 18325 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_5_en.png index 177a0beacd..847bf44387 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:94c9759b7994cb18c0030d639f4c753cace52f041626ce71586e75ba4f5464d0 -size 31508 +oid sha256:5bf81ab4a57f8cc9e36a0a8c516dd60163c422913fdf17cf7d2731ce2e30f6dd +size 21346 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowDisambiguated_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowDisambiguated_Day_0_en.png index 4a4aac9d4a..fdafd46fc8 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowDisambiguated_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowDisambiguated_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5570ff934240912f93649d15032c73619e630aceb357e66e41dce47e9d76f08f -size 166272 +oid sha256:351d86fbf228e77eb6dcaf9b74d91e2d6ea008c2cd3e6b684a0aaa312169dc6f +size 159446 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowDisambiguated_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowDisambiguated_Night_0_en.png index 9b8f4dfece..c7a1deb20a 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowDisambiguated_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowDisambiguated_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5dd36474e36bf27f1355cf714e0b96a608ce48c21b364bcd928cc342a0df14cb -size 165299 +oid sha256:292ee8d25404a8e5f5776fefcfd5f2c17a504975ed305ef75bb227708a1fceca +size 158791 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.typing_TypingNotificationView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.typing_TypingNotificationView_Day_1_en.png index 6ad4757a7d..acab325452 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.typing_TypingNotificationView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.typing_TypingNotificationView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3e5b52f4b6337f0564da3b2c0d37d266e1512c737c2981c963b0ebf75097e06d -size 7897 +oid sha256:001f0e3b0cab4e0b094dfcaccf371f913c1520498d4d6504bf7394820b6d7404 +size 5736 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.typing_TypingNotificationView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.typing_TypingNotificationView_Night_1_en.png index 2fa000454b..b3a6d957e0 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.typing_TypingNotificationView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.typing_TypingNotificationView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ca01938307ddb7b10888b00376f1cca2e0e2c531a670bc85acc68dc469411e61 -size 7815 +oid sha256:300aca8e0ed804be6bf8ec7422208d34ee9de7c90a146f7b99f9d6305aa4b8b6 +size 5705 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_0_en.png index 22107bcc4a..f07d134331 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7b11cef7bb2350a627cb626064d298166b1b1cb2f964eb17cacc052cc944d65c -size 58754 +oid sha256:d34979c636866a23fcabcc26e3c30acd995f1509b5e455e935d71bc73856d83d +size 31590 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_1_en.png index 20dc15e9bd..86e11ba030 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9c7aa1270075d019d450713afdb29acc43fec9e2603632c39be38f5ee4a036c9 -size 58629 +oid sha256:e9c4ebc7c12057a2ead4b009c9ca76f3d288f8ab7f3fb4aeb3c82a8cc9c36e53 +size 30954 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_3_en.png index 3b40ef8905..7eaeb01a94 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:75c0d9bfbd726f0c61cbddd7e09667bf2a061f7f34829dc9f5a10451f896bb68 -size 54860 +oid sha256:5189a2dc67386106bd4f039e8c243eeb394a9eeabf29def186631a44d58ab1ba +size 39133 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_4_en.png index cfdff06aa1..9e0a34a419 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a1ee65e2fc9f52de1287f2c0f544d1c677d17282977d5d4ce14634e9ae234119 -size 61526 +oid sha256:9873533ac9c9354815b7c3971b1e0233cb4108837e59a303dfed17f3482b4187 +size 34486 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_5_en.png index 004dd59872..51d2b67c75 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7705d3fa49210822414ad3a863ae0bca9bf0bbf4d223c14514834b00c0d12e47 -size 61141 +oid sha256:f5ae5d0c9223b2c93cad944ee7da4f9758a7c1a95ceac8e1adda05489608e1d1 +size 34068 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_6_en.png index 22107bcc4a..f07d134331 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7b11cef7bb2350a627cb626064d298166b1b1cb2f964eb17cacc052cc944d65c -size 58754 +oid sha256:d34979c636866a23fcabcc26e3c30acd995f1509b5e455e935d71bc73856d83d +size 31590 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_0_en.png index 59e99f47d9..80c5aa5683 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7337703b42b69e563961a6b8afe85bef7ecdd06c5d837b2f3dddb227b336690f -size 60000 +oid sha256:4986eee7db8866631d77b39cc602b9b3950915a0c7c49228e65298e433a5ef43 +size 33272 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_1_en.png index ceeccb86e8..075c7d0875 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f76a52cf817e489c4fa5b2f353a246c75efcbe6b0c9f92c868aa78146cd54aa1 -size 59384 +oid sha256:dbb3f661d665ac0239fe25ed52810a7bfcc2db31e55caf396dcd6d0b51454e73 +size 32638 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_3_en.png index 18ddaf0c50..4627721fcc 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3491ceedddc07068c1a03400e5d7eb2dda8afd7cd0d289f7b168ffc689c8713b -size 52665 +oid sha256:cd16820cbe72b2e3337d114aa9dd5581eac1146b3c6ee0fa12ba72a3b799e59e +size 37936 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_4_en.png index 1635050091..f6fa45df7c 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:de7e8056b66afcf13d8ebf2d333d535beaca30c882f3b14468e90df71a6848d3 -size 61651 +oid sha256:ab6ee0b1c1a339bf1035423d94790a817c50fea5af45e017ee866219155da1b3 +size 34966 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_5_en.png index c79ff53179..6a83c25145 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:441cca0f48414ed65ec3874de4b1ea225461939ac32c69fd8a73b1dee0ba4407 -size 61393 +oid sha256:880aa46d8eb7571ecaf70bd54dae8a84d49c7fe93ed39f0c63844c43dbde5f17 +size 34689 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_6_en.png index 59e99f47d9..80c5aa5683 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7337703b42b69e563961a6b8afe85bef7ecdd06c5d837b2f3dddb227b336690f -size 60000 +oid sha256:4986eee7db8866631d77b39cc602b9b3950915a0c7c49228e65298e433a5ef43 +size 33272 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.root_PreferencesRootViewDark_0_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.root_PreferencesRootViewDark_0_en.png index 6328b35ca1..7501684d8d 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.root_PreferencesRootViewDark_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.root_PreferencesRootViewDark_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3f16fcc4cc994ceeb80df964e9a9c40bf8f85869cd6c11ec14ea327d3b0fa80b -size 38074 +oid sha256:a7d2d1961ae26d8eab5f41ff7c6bc452b241cde38a9bb46aa62a63981be48644 +size 35854 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.root_PreferencesRootViewDark_1_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.root_PreferencesRootViewDark_1_en.png index af9d5fb9ba..36fb62ea63 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.root_PreferencesRootViewDark_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.root_PreferencesRootViewDark_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a432b76372ca2bda9a8f84b8aa779c0eca61e61934ba81d8428e1affdd1f35ae -size 37818 +oid sha256:4006ae80cd23fb5e9dcb30b066759e8748cd5c0b467893c5ebe2a30e3c2b6e13 +size 36001 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.root_PreferencesRootViewLight_0_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.root_PreferencesRootViewLight_0_en.png index 0f474547b3..076385224d 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.root_PreferencesRootViewLight_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.root_PreferencesRootViewLight_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4e8b512463d51570c4645311fe652ee704fe7e67cf2d8f2f6bdf936b987828ea -size 38908 +oid sha256:93dd458ba1dbbe1ff00d23e01d7afa18b22336f659a4872d7c5edac128a8a538 +size 36728 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.root_PreferencesRootViewLight_1_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.root_PreferencesRootViewLight_1_en.png index a14b3a6c7b..42680138cb 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.root_PreferencesRootViewLight_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.root_PreferencesRootViewLight_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fdf9185ce8776451ad07410e1cd8169918da9c4734ece14a91f19716d6b3d00d -size 38915 +oid sha256:e275d700a2bc14973ae59734a2477d64b37f30d00e8c731b406599d05550a613 +size 36974 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.user.editprofile_EditUserProfileView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.user.editprofile_EditUserProfileView_Day_0_en.png index 51d11a709a..190dd1b8db 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.user.editprofile_EditUserProfileView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.user.editprofile_EditUserProfileView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f1c5669f63f761311a49a7d82475ccd7463bdb5051db9add2875e13514272690 -size 20189 +oid sha256:7663d9c53a6676db4e1305b250a292a92193d51490f178461e00dcaa2c3e9b83 +size 10813 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.user.editprofile_EditUserProfileView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.user.editprofile_EditUserProfileView_Night_0_en.png index 232c02e380..95e45a01ae 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.user.editprofile_EditUserProfileView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.user.editprofile_EditUserProfileView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fe8c7f7de0d56bfc60af6771fd076104687e1f123ced09dfdedc625c03431458 -size 20361 +oid sha256:3b92f7fc7a59bbf9ad32cbec7658d4d33e659a60464dcf288e1faac898e0ad03 +size 11170 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.user_UserPreferences_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.user_UserPreferences_Day_0_en.png index 96eb3e81b6..2b4c3f0758 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.user_UserPreferences_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.user_UserPreferences_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:49fae039923308d225b27ecf987d75e068ea9bcf33b1490913dcf298eb6767a4 -size 10831 +oid sha256:c16c1d4efd56a352a746e3b996fdc3e323acf73626b8b35d94ab5f2a7ccaa9f5 +size 6775 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.user_UserPreferences_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.user_UserPreferences_Day_1_en.png index c2e91137a4..299660922f 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.user_UserPreferences_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.user_UserPreferences_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:33af83e77a077110665e2486dcb278850af42f747d8c9967612867fbb57f6c76 -size 10630 +oid sha256:2f378194fca0baca23275cb916b7093b9e2ca02d9ec786c8a7a9b0f9ee541a0b +size 7217 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.user_UserPreferences_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.user_UserPreferences_Night_0_en.png index e7894e0662..240fd8a829 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.user_UserPreferences_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.user_UserPreferences_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e9adc34c7bcdddef0d8c257679322e6bd974c443d64c5d8554f00e46b0d5b6df -size 11230 +oid sha256:55714d8ad377a23f2c347546bb6559176bd10575b50290389df669206d80f227 +size 7303 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.user_UserPreferences_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.user_UserPreferences_Night_1_en.png index cdf8986668..6ecfab4c1e 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.user_UserPreferences_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.user_UserPreferences_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7710bd3d1b81dd4ef3c5fe96f61c78f4b7f0a14754d9934b6cac1b703afe9dd3 -size 10953 +oid sha256:2b59dfaf5dc0cd50a4e8bffcfb1a571a608f67da2aa14c894dd84af3de0d4ca1 +size 7655 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Day_5_en.png index 6efbb40871..175c9a9711 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e4ff694ba396bef7fb87243548a18faf25a1c1a02589fa373dc2f3c89553ed0a -size 42417 +oid sha256:41206c9261a53a3bb045590350d36c9446c1a35f0576d4ebd80efc7a2618f2a3 +size 29924 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Day_6_en.png index 068035ff74..330c8e3b56 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5e3e15dff6a041cab272fba75089bc8f373605630709e6120625ccb81b52be6a -size 37510 +oid sha256:d481633e0df042c6bca676a7aec3ff3e3c7727c9fbc2fe5097dbebb0d4a599ca +size 34802 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Night_5_en.png index 7fce7f6e4a..a006d23699 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7c694257b40356f4112b3e0f772772287868cbd7189ea0c7840771ee6dbe7fe0 -size 43114 +oid sha256:efd56471e9324ed93795bdc7c735465af1e10a04a6997425b58bee700da1d135 +size 30820 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Night_6_en.png index 9900befc1d..8e67650c88 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:efcd5a2fdd381c599e143d0bcae5fa75d46814de4b48900170a03abe38219905 -size 37448 +oid sha256:0eab5ae0040f0bd9f81b68bc96b80dd270ed99a5ba900bcd5c49f2a92d9e61f5 +size 34726 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_0_en.png index 5aec452dc0..3b1b68283e 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:346b55226273559de0d0d7298ef877c7f4e5441cd672bf224c2eead14d336c76 -size 16835 +oid sha256:eddb49315abfb3dc0b818cd1f604959ca0306bb20d2339f995b96abb7bad0864 +size 12921 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_1_en.png index 31d097182e..06cb02bfd9 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b5cf37333070202ab26168d65639fd3913e1dd2cd0508b52e021789d4827ece3 -size 21362 +oid sha256:2f02c6853d7f34914795bfc862e4147058068abafaca34d4a5fee0b3e11b2b91 +size 17537 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_2_en.png index 3b75bbad3d..c55f60b638 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:49d02751c7a36b988249c03e355af1b038459ad20410e8e88256f767ebfc9b42 -size 26323 +oid sha256:448c3ff204570b6671779ce321eeda7031a997577d953707498c05e46580fef6 +size 22554 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_0_en.png index ef15138a1e..448bb16151 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e24080b2731014102634cea433fc357ab5cb76bfb149a266a61e345d1c718a28 -size 15875 +oid sha256:4b5c0539ed4067e65de5746898a67725e257677bf07aeed64baa27b0b11350c4 +size 12090 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_1_en.png index 9d45f7b9c6..589ce39a17 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b0a79c489f22ae47dcdc8d212dcf2cea595d2922b816e1625f163be4085182c6 -size 20271 +oid sha256:b7e8c916382e8277b49bfe954100030c4603b2125aa7cfd6d119fc2c6ead9a36 +size 16436 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_2_en.png index f4f6854298..f30d688d4a 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:907246ef2913f37b087e3bc96b8361b75e3a672854d613c7788b3dcf66393796 -size 25036 +oid sha256:3962a8f9dc1c8f2f1bf2d9f9858a4b5d7a79a2e13b4fcfbb4c074c0be174c12b +size 21437 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListViewBanned_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListViewBanned_Day_0_en.png index bdaefd7b5f..ff3dae5041 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListViewBanned_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListViewBanned_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:57c93d6c2373777214b59717831ae6d4198eb50d904c6f22332c631b7025e259 -size 32736 +oid sha256:5c4815db136501fdab2857a35a4cc9c3e6e44d43a044acb61c53e9c4682b12d5 +size 23677 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListViewBanned_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListViewBanned_Day_1_en.png index 10c82df294..e630c1b140 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListViewBanned_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListViewBanned_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:858ed6bf83404f532a1ff258837ccef1fae650401d23dc5aaaf59c6dcefa7618 -size 33112 +oid sha256:66838cd9370e9513c82a5f15d5b8c3972d86b1873f9ef8f9b2d135b767336376 +size 23927 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListViewBanned_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListViewBanned_Night_0_en.png index 1fdf12a4c2..29e23e5993 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListViewBanned_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListViewBanned_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5a54b853c55e0fc1fa3cb9f037b02dad50ed50c9897ca2caa03dedfab34051a9 -size 31965 +oid sha256:40d2726edcddebe57cdc0a91f9a088086d315454651f074853de9bb9d77f66b6 +size 23102 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListViewBanned_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListViewBanned_Night_1_en.png index 63899b0d93..f070192cfe 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListViewBanned_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListViewBanned_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:03d537d678449cc51c47d8ba6b10af12d2afd5a259e4bbea4747e2462977e054 -size 32505 +oid sha256:09c4228dbd5e5c2032ee578160288d323841bf6b0ce5b93fa930344fba09cd34 +size 23347 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_0_en.png index 9e8807670a..fd9b33c6fd 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bf7912cd69d2ad680d885462e19544ee56452bd5d538a8019a39199dbf93f124 -size 44374 +oid sha256:90b80bc6f233d52afe1fa00b67257f6e7635d4164f5730c0769f8aad4bc4fe28 +size 30779 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_6_en.png index 942808435a..afe095f27e 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ddb463eff5c3174663e6543726671708cef04bb11c9194b20373435e1441323a -size 24543 +oid sha256:b9c9c1a067504bc708f77621446611b8f0887e43410fd039bec4224f3ba72d77 +size 19410 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_0_en.png index 17d7af8e53..d05755ec0a 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b15475fbe36b0255b21a7492195e516dbf24298f6d3e40e164ba73897da24b10 -size 44429 +oid sha256:13210c746430e75aafd3a2807061f276587b10eae500886f7f7999e3451a7d21 +size 31151 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_6_en.png index 3473f077b5..efb18826aa 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a6bb04b4dc4dfb43adb8ae45670f20232e8a3ba50c409c50a86feb96dfb00d56 -size 24486 +oid sha256:6526f21fe0800c269f1e38b6d8a77859fde7fa44f90254b3c6dee83398d12049 +size 19386 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_10_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_10_en.png index eb1aecd078..d49e7c175b 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_10_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a041f30a016b9a6ad00db20419172668f7fe1687dcc0212350d146f61093a607 -size 49723 +oid sha256:4c2655a32aaaae9a729fce4fef4f33e5a47688352443cdde47edb2b3ac2c99d0 +size 41710 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_1_en.png index 388e200921..d43850f309 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:208673d60636ded48443f1e55f1680c6029aee251e24b7934b07324a539a802d -size 66492 +oid sha256:dde18faaf0fef4e0d1885cb09ef469193844076aad7e48027b0fadd662166060 +size 54255 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_2_en.png index f5b3344d93..687533b023 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1e23b71ac5aa0898ca67e3264c87c8da9b1b3119e44f507df0a7ad13fd252eee -size 60759 +oid sha256:538d512397d9883d26130384651bca7c1f8a0f3af2d2f9395943b15928107243 +size 47250 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_3_en.png index 92a8334cce..cd7a06aee0 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:048f0e1fcc198f61e43616406453a911c270b5eda7c2729dd9d67ee3a619d4d6 -size 60695 +oid sha256:1ff78912ed0493b5e7bacde747791431f3c1ba932e7d6d84947abef6d49a52a1 +size 47188 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_4_en.png index 28310d7856..1f2a3e61e9 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b2dec4d26f6dde325be4f2bd42a8f8517e31cce46a9db8e30d7b457f612b8bc7 -size 55725 +oid sha256:3dfc68230b80374ab77fee4ae14b48f1bdf9221a0f02d0362477c360dab99d1d +size 42284 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_5_en.png index 85bd84bb10..0cb810f291 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:13c8b71ef7331e86d15200b8b1979688b21337237bcccd309ce70d866f9304f4 -size 12932 +oid sha256:bc0aa005e9cdf6f118edc47baed3cdf91e5dceee30ecb62e433499ce9536f962 +size 10106 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_6_en.png index 72858854d9..f978b12ebb 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9c1c92e1d7c6d3e2f47b83f9c8ecc2f2f98620e80c1edd5242d25637d949d293 -size 57140 +oid sha256:a3806f0ecaf2494da947bdb5584a51cee0e17f61c46ce3270661122be089c406 +size 50533 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_7_en.png index d63036eae1..1a85ca7f64 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cc64bcad7e0abd05248e98df0be2e42508312c78e3665c6b58dafb163c6f36f8 -size 59609 +oid sha256:7764f72b0cf5b1806d47aa604e911dc0b91c6aa3a45c1f49f75e57d81f97f2ab +size 53127 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_8_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_8_en.png index 53b8438ee0..1f5461a9c3 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9af957c2cff2485fcef1b9cae18ab2a69f27901d732e521aa650fa03d1cf7083 -size 51650 +oid sha256:45bf4a8b3ee4041be1109644799deff0ae3489414978668a547facdd1bce93d0 +size 41617 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_9_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_9_en.png index a790cb9168..60413ac3b2 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:350db30a95ddd750cda52087c68fb121b6d4601f7e354a1ce516ac6a13f9a6b9 -size 64563 +oid sha256:20a6b5f6b868867e53d54e98a5784098a20914a04085512fc817e9caf0c10274 +size 51140 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_10_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_10_en.png index 583af373e0..b07122259b 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_10_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7a8f70a15e2abd6d0acffa2dabb1a13e9ca7e438709d68318f48c5484a6db728 -size 48557 +oid sha256:e3df5b44c637ae6a62292145b6b1a28e9f35914307b4e5925ec619095f8df858 +size 41050 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_1_en.png index 33bf48b028..6d0a1049aa 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:49ba57a1ea2cdc147bfeebc68ee5a076c7239abfffdfc9c9975c0b7c43fb33d1 -size 67287 +oid sha256:343357c833ece8964d8e8f0b374628ede76ef00e934c38c8476df094fd310192 +size 55182 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_2_en.png index def16fb9bc..fe048d9e71 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c96a37c2b956bcf92a2ada87e517a0dacc21984c0791b8a5c7fe94733306a2b2 -size 61576 +oid sha256:26a40c5b365e0b84684da6a133a295f584465ff58beffcc8fe8d8eb1350b5944 +size 48466 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_3_en.png index 97288b3c1e..0aa034b2d4 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:08df2af6d1595fc825183929025cfc9dbe9e88a07b9811dacc371c7d6ee625e9 -size 61458 +oid sha256:23ef0a5a8dd7fceb28ec8b47213c00ba16f1b5486ac0b750e4611e04b5742c30 +size 48283 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_4_en.png index f25fc4763d..1c082abf52 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7031799ddcbdb44ed40e6f843dc86558545885ae2a16d794cc7dd92d805e4a90 -size 56087 +oid sha256:276431ab4252bc67d0a88a384a9417609b3a7bbfda2836e51c3f4b46e5cddcaa +size 42921 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_5_en.png index 31bb7dad85..3d2eada37f 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:562dc9be79006376346ab1b2635890615eecc381e82c15b16a9ebf1855741e24 -size 12817 +oid sha256:05b8d423a67540499ca66c1d3b85b809bcb43de07805612bf06a6b38efd9d7a0 +size 9976 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_6_en.png index db9ced912d..f2ac0f1e72 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e6e5a2197a3fddcd2f640f6dd4ee546c13179eb62daec257d159261049e5004c -size 55678 +oid sha256:456ce481ba11f4350cdad5f25e1648b3e3857179220fb1a1852cda77f00e3370 +size 49567 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_7_en.png index e2bccc9479..1c7759b313 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6ef4c956fdd9b9ed36fc6d949c0a166245941068b81683b8a7278f02d6e4ad7f -size 58119 +oid sha256:170de63bfd729bc402599e6780a5670839c7640e52f54f7aafa948b22cecb954 +size 52047 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_8_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_8_en.png index 3df5c03456..329997cac3 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1cda6faf6fd41e9ab912af2e1d307427a0b6f7d6eb364cbbe1c19f8019cf133e -size 51291 +oid sha256:9296d75d9cc2833828a7439ab50ef3b986faa545cd9ceb113a021e0154aa006c +size 41898 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_9_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_9_en.png index 659a2949aa..ede4a85fa9 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8f0ac658661ed11e23eb289547a5b789b020c5501846f0fc3b4e56fa4c875eb4 -size 64361 +oid sha256:60e0e7f766295d2a05486d0e47aa059dfc9a600dffc403c8144876294f628d19 +size 51278 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_PendingMemberRowWithLongName_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_PendingMemberRowWithLongName_Day_0_en.png index 0427edb0d0..8b94418320 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_PendingMemberRowWithLongName_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_PendingMemberRowWithLongName_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bdd98fd1433b4a89a01532a8b4e415bb18d28e98633fa6f74e4cefc2ecc87bb9 -size 14895 +oid sha256:15ca87ba820cbc74e0f41ee50eec7ebd621df2fb10d6a1f2bcb3b3e80ba1198b +size 12072 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_PendingMemberRowWithLongName_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_PendingMemberRowWithLongName_Night_0_en.png index 87e0f71c01..8843fc4e63 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_PendingMemberRowWithLongName_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_PendingMemberRowWithLongName_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8101a457afccbc30b3ed88352ed98f9c8ed7444233ad77855aff6c190fff3668 -size 14690 +oid sha256:72ef419ce6bbfcb691beeff0348a866fc30e9c887bb69198d32aebdad8016008 +size 12008 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_5_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_5_en.png index e55839bd1d..a6f4146500 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f9d3d78555516e89ebabbf4a42999c3a5eaa592a61f21cedd8860acd7a77210c -size 42214 +oid sha256:eef5257d52aeb51f67592dce7592e564a2a952a3d6a734c591ee8aca038f0a92 +size 40279 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_6_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_6_en.png index e55839bd1d..a6f4146500 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f9d3d78555516e89ebabbf4a42999c3a5eaa592a61f21cedd8860acd7a77210c -size 42214 +oid sha256:eef5257d52aeb51f67592dce7592e564a2a952a3d6a734c591ee8aca038f0a92 +size 40279 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_5_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_5_en.png index 43385fb15e..b4ca82020e 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b785267e5fbda41dc3b7ee054459cbcd19a7e7c6b750ce747034a11ff1236531 -size 43065 +oid sha256:e688e37047cefa7673a589c57853877fc83ccae741f0495fc63e16af256797e8 +size 41109 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_6_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_6_en.png index 43385fb15e..b4ca82020e 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b785267e5fbda41dc3b7ee054459cbcd19a7e7c6b750ce747034a11ff1236531 -size 43065 +oid sha256:e688e37047cefa7673a589c57853877fc83ccae741f0495fc63e16af256797e8 +size 41109 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_RoomSummaryRow_Day_30_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_RoomSummaryRow_Day_30_en.png index 995fb8d4c4..f5d99b05cc 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_RoomSummaryRow_Day_30_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_RoomSummaryRow_Day_30_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3bc31af570769f2234195cee41c8051b9931d15f8a10990fbc230e8603a0c178 -size 15328 +oid sha256:06deaf4dac034f1cf6aabf4788ed3259a5f7c3eda911f525c84365ef95ff3059 +size 11996 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_RoomSummaryRow_Night_30_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_RoomSummaryRow_Night_30_en.png index d8e61124ed..12c7f248ee 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_RoomSummaryRow_Night_30_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_RoomSummaryRow_Night_30_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2fb1474bddd4b7e5a98a7ad07e71a7f4bfd6e653a22cd12ab9ef23a8d88f45a7 -size 15233 +oid sha256:a04f12885689bca71ddc9291e6778551271a3e303f68557aa14be1e0f9da1a15 +size 12064 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileHeaderSection_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileHeaderSection_Day_0_en.png index af2ff95e7a..8d64d88639 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileHeaderSection_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileHeaderSection_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fd3fbba34517626f11c940e583db1b7b058575b4078e260ef5ab146076a9256e -size 12757 +oid sha256:02a3ae6c9892075a86a2823833c4a41b969824093e6adf76ab216de3e5581d44 +size 8604 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileHeaderSection_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileHeaderSection_Night_0_en.png index 7d9ace4741..e23328766b 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileHeaderSection_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileHeaderSection_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7d6f038f3180c2f8f0a80ab608409a75fbcdb363e3e3931dda01a89cc1a7abaf -size 13078 +oid sha256:6fcc728dcd7469f163aa220451fe56540201c9014d6aaa647eab9114ab31c94d +size 8935 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_0_en.png index 946bfb4494..b8b334e271 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:37159c7d2974110a19aded9121c8d72d199007e97d873516bac209f5171561ba -size 21583 +oid sha256:7deb5a4151b586ed0db4571a50b32ad40db36d04efc33a1357e5f035ca1c2cd3 +size 17359 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_1_en.png index 5984745d72..606bbf921b 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f5d7e07f546ef3f9147be979869d007cc35873c1856290f42472d57e3111ef0c -size 19313 +oid sha256:26d57e525155efdc8a45d74afe4d35888c833ae96f959e3e1d0790db59fe1e35 +size 17286 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_2_en.png index 8e7105480d..bdbf8f04a1 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6cbc9ce6cfd64740584e72371325374196904ea68c79dd78c5ab525fe665d044 -size 21922 +oid sha256:f89f0cf5c016f850f30a6f570f33e9bdd48f5e89b160668961339f77e51df45b +size 17714 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_3_en.png index f6ca6566c9..3a4c5787a1 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fec3a5602442d2fc48e0d0c603971c3d0a2d4e3e67917a00a70cec3421763946 -size 33654 +oid sha256:47f3e3992ae3661cfe57c9f18857882ae0f9215448cc90b05b89f651a6cfa753 +size 33640 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_4_en.png index c5e7788ac2..52bea685fd 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:aef57c0efcbc88d0595ac161cdb4805459315fbcc8b27451e958806dee4712ce -size 25123 +oid sha256:91ccf98701fb4c12faa7256e9a9896585e63c4d3dec8560f2da037a7659bc0d8 +size 25113 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_5_en.png index fdb53559c8..19f04d85ab 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:503932aeb8ee7ad412e7fa87e0794597aa6564998f280b88f66257431ab8550c -size 22473 +oid sha256:ab2498c3809951881da2bf1927a4362f4bb2a274547edf10543307e754934906 +size 18278 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_6_en.png index 94d1e33444..0af5d8dd33 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6d32f7e0ba91562e8605e1df632c28ac38e301e2df806a46663353983bea8a94 -size 20875 +oid sha256:d09cba53f990f2382dc59716c88e3822a7d80cbdcc76fd8d2bcb5aa7aee4bd09 +size 16788 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_7_en.png index 2097447376..5527d454f3 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c75d1e76f2c4c7ec3c381fd3ecba45c4eb62ad7239a97a298ac41f686f839e99 -size 22502 +oid sha256:264e586797c7b9fee933af8f2e63f692266d0257a159e81edb5be2027b2b0116 +size 18303 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_8_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_8_en.png index 946bfb4494..b8b334e271 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:37159c7d2974110a19aded9121c8d72d199007e97d873516bac209f5171561ba -size 21583 +oid sha256:7deb5a4151b586ed0db4571a50b32ad40db36d04efc33a1357e5f035ca1c2cd3 +size 17359 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_0_en.png index 249a3709db..5a8d1bd2aa 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1fb3d68142c04a84073b646d8a2daece4853b6db518033bf597d7e73cf997ca7 -size 20935 +oid sha256:16f7d344efb04412aa2292f7270543609406811714999bdde4bb834ce5778aa6 +size 16841 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_1_en.png index 07423061f4..5ec8ddcb25 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bca6804dda6c169bfb90bfe562d3609ba0f844e086703150a42e0ec08a5aacf9 -size 18746 +oid sha256:94805f9cb9d54ab3e67937cafad532b10ab772c5f800e368d1ebfd80ddc2b24f +size 16775 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_2_en.png index bec196fd6b..bbbe2aa0e2 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5153d0bf8aa10335fd81fb6a6f33720edf8e0bdeb017c69d30be1ef175cb0318 -size 21263 +oid sha256:f620b5b5df58e720d58e774416e1b0bee10f864a6eaa08bb07c97173bcf2e8a3 +size 17131 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_3_en.png index ef9df7777e..8c3076495a 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9926ceec284b746b2b46c15377ecdca624f1cd8303336f2d082b34602f0e6d3a -size 31172 +oid sha256:a1d1d22218582b2b8734c72724f74fa68889fe7935d9301cf0555a0b15b46461 +size 31156 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_4_en.png index b89a168a68..87ebd8281c 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3bc079ddb639f05d60cf702fd0a8c1ae01520f19204df271fdc5a203c1442eee -size 22979 +oid sha256:b98c0d86e05eaf64e1add6f0ba2e618d042411cb7ea1ed0ebbf36783c5c3c174 +size 22961 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_5_en.png index 06f67e89cc..816e877eff 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d5493e7c638101253d4a43b957a5b96975ab99baa76bca5eecb65332d3c0b801 -size 21830 +oid sha256:4e74ca8cb512a1f7a47859a24a8c76e6baafd3665849be62fd5641eaf083648a +size 17681 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_6_en.png index e81c2ab75e..8a0e67cb12 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:58a2a378b174cf93de0925872ea6e980c724967751b0feabba51eeb6261f4318 -size 19065 +oid sha256:1c30f558a0b48347c9dea59b0d7e519742c0532558d907df0357831c35fa8f02 +size 15199 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_7_en.png index 24cae66ca2..9d1aeb8d8d 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0d7d7bf305375a306d1d1f002527f7ac81daf4f3387041035df4f9ef0f80c82e -size 21809 +oid sha256:d6848b6da3754b69a2c7d07b123bb67e9a8d69563c1da471bf5b746d98d19cab +size 17744 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_8_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_8_en.png index 249a3709db..5a8d1bd2aa 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1fb3d68142c04a84073b646d8a2daece4853b6db518033bf597d7e73cf997ca7 -size 20935 +oid sha256:16f7d344efb04412aa2292f7270543609406811714999bdde4bb834ce5778aa6 +size 16841 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_CheckableResolvedUserRow_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_CheckableResolvedUserRow_en.png index 235b1c5770..f5381b287e 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_CheckableResolvedUserRow_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_CheckableResolvedUserRow_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c3543534aef8161d98bfd2352ec852ead80aef7e9cddf6e7a5464631ac588899 -size 51213 +oid sha256:9cb134db81d516c335b580ae2dd87e98d9335663758b49408e276e3df8bb07be +size 26461 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_MatrixUserHeader_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_MatrixUserHeader_Day_0_en.png index 96eb3e81b6..2b4c3f0758 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_MatrixUserHeader_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_MatrixUserHeader_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:49fae039923308d225b27ecf987d75e068ea9bcf33b1490913dcf298eb6767a4 -size 10831 +oid sha256:c16c1d4efd56a352a746e3b996fdc3e323acf73626b8b35d94ab5f2a7ccaa9f5 +size 6775 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_MatrixUserHeader_Day_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_MatrixUserHeader_Day_1_en.png index c2e91137a4..299660922f 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_MatrixUserHeader_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_MatrixUserHeader_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:33af83e77a077110665e2486dcb278850af42f747d8c9967612867fbb57f6c76 -size 10630 +oid sha256:2f378194fca0baca23275cb916b7093b9e2ca02d9ec786c8a7a9b0f9ee541a0b +size 7217 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_MatrixUserHeader_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_MatrixUserHeader_Night_0_en.png index e7894e0662..240fd8a829 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_MatrixUserHeader_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_MatrixUserHeader_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e9adc34c7bcdddef0d8c257679322e6bd974c443d64c5d8554f00e46b0d5b6df -size 11230 +oid sha256:55714d8ad377a23f2c347546bb6559176bd10575b50290389df669206d80f227 +size 7303 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_MatrixUserHeader_Night_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_MatrixUserHeader_Night_1_en.png index cdf8986668..6ecfab4c1e 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_MatrixUserHeader_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_MatrixUserHeader_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7710bd3d1b81dd4ef3c5fe96f61c78f4b7f0a14754d9934b6cac1b703afe9dd3 -size 10953 +oid sha256:2b59dfaf5dc0cd50a4e8bffcfb1a571a608f67da2aa14c894dd84af3de0d4ca1 +size 7655 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_MatrixUserRow_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_MatrixUserRow_Day_0_en.png index ed64079843..196eea4424 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_MatrixUserRow_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_MatrixUserRow_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:14427e0699e6d2b512be4d4a835624079a473a156353bf11a502af90a58e7e25 -size 9340 +oid sha256:c5c9f99ffd7e3592054d3308180176078e89413de042e77b1435d8497dad8cd1 +size 5946 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_MatrixUserRow_Day_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_MatrixUserRow_Day_1_en.png index 7e72847847..50d9060538 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_MatrixUserRow_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_MatrixUserRow_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:63c5e16fe8f95846b029b72cc069c41a1c9d5e4cc62dcb1cfae70c4d00048b5d -size 9223 +oid sha256:cdecb4ff2f32fcd1500268131f41ac08e69c5687f75671d0d7ad9ae01b99ab94 +size 6405 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_MatrixUserRow_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_MatrixUserRow_Night_0_en.png index 2a40e90886..a09d6d4379 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_MatrixUserRow_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_MatrixUserRow_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0e36183af73b56b5a730e5cd8428669ba379373b299e8a7b768416b65687bb4b -size 9674 +oid sha256:361665623694e5e80a43d7d381cd66609bf31c93d182ca74e6108581971a2c6b +size 6332 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_MatrixUserRow_Night_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_MatrixUserRow_Night_1_en.png index 33e3c489f1..0977367594 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_MatrixUserRow_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_MatrixUserRow_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:406009f06788682b2c7ec9f68afaa82ba359fd2794cbf9f992164b75fb3b126d -size 9469 +oid sha256:b7bdcf8e348e630c6af0d23fbc9aa4eb65db4f657d537ca0e9f353056bc18cb7 +size 6737 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Day_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Day_1_en.png index e3d1cdb5a6..24248d3b86 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fb8f63bb04c12dce1521b09c1eaa889dd64a4ff27c229b0fe8c871234c1530de -size 7687 +oid sha256:6532e8d6217bf8d02503157ce295a9e5201121a23f70c974b11df9a47506eede +size 6261 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Day_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Day_2_en.png index 528d10fb19..0cb18ec363 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:176d50bce3d80f8eb34f11051230f4e0d5ef6c32c855172d702a4b5b2e7272d3 -size 5992 +oid sha256:3e49cc097deb07cb3fc4440fbc118e09aca8ff8e515a6e80cca5b93af77d2997 +size 4466 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Day_4_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Day_4_en.png index 34b9fc8149..06f0d74be0 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ed6636e48aff1eea2a56c967c56f27e5e3fba336b2c70ea3a667af737ff0b37b -size 7408 +oid sha256:a02884c10d51e57381b0579a811773817355b8980c2456529f4dd1d06ced394e +size 6254 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Day_5_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Day_5_en.png index 97ed03bd00..39b30778d2 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3198df0bcc176a7a29bc3321c9d0291d194d85fbd889288f18c63c85e76e92ae -size 6004 +oid sha256:28c24a4fc86b830a353a06859aae209dd5521234e9fe06875ca0a923b5140755 +size 4573 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Day_7_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Day_7_en.png index 60b768f5a3..227e4f0796 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1e8fc429fdfe7bf3bad362f11ac9e323cd106fa6738c2791954c5ba7479663f7 -size 8311 +oid sha256:d4f12403fbf601421b491272e444b503c00361a944b5a494f90798ceaeb088bd +size 6731 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Day_8_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Day_8_en.png index a374d0abd7..39b30778d2 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Day_8_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Day_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:624a96d1fdd10a8fa015c0380d791794d0e369742af8a7ca0a2e79a0475d4c01 -size 6548 +oid sha256:28c24a4fc86b830a353a06859aae209dd5521234e9fe06875ca0a923b5140755 +size 4573 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Night_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Night_1_en.png index 2310d1e3c5..751ad40536 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:14b9c02096cd23525e1347031c830981e2ccf46cfafc5b46fc816cf2b2968b03 -size 7826 +oid sha256:72d403581a68192f3d4a19981316e1080ae024d5305c40d1516502a56d1f8403 +size 6426 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Night_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Night_2_en.png index 0bb7650358..e528d62ca3 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:db30fcd28336b025adbab037da4b9fd82f3f7f6228cc16c93e8b4fc42ea34300 -size 6171 +oid sha256:943bc683ced5ef17bd52a50ecabf5179b3f92cad20a2276e1ace3f17ac40205f +size 4549 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Night_4_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Night_4_en.png index 3068154f76..db393481e8 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d5e37fbd9a2fee60e9af052e43117cb56a8dc6bf37d2ca1d7e9839d4319e98ab -size 7408 +oid sha256:cc1d818a83ae34f260e49543b2e73f016e5ff37f7987f9d8f2ffdf7547d6925c +size 6247 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Night_5_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Night_5_en.png index fe096cdf0e..f77349e702 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:158515e0dfd77cad31738e6cf31d719179de0a9f0f66a2d36e29873c38e0a56c -size 5995 +oid sha256:cae79d7ef8e473f2e1a27e0cd61af4f4ccc1adcb226f5d9e427637b3ac18dc31 +size 4590 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Night_7_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Night_7_en.png index b97e91ac72..efb90fa47b 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a95297fc61b008a7d11162d4ccc0be4f40a2c985b9562ae5b9c268e92146ac2d -size 8323 +oid sha256:84cff67efc675d43d5a9c0a4d29c4e09c22e2171adf21ae7223c5dfa257063bc +size 6740 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Night_8_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Night_8_en.png index dfe3e6f082..f77349e702 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Night_8_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.sender_SenderName_Night_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:edc9cab8bd713547975f8c95d11f2758e3219dcac851a6a6ea0dee0016c60847 -size 6559 +oid sha256:cae79d7ef8e473f2e1a27e0cd61af4f4ccc1adcb226f5d9e427637b3ac18dc31 +size 4590 From 8f156ab46422e19845baa9b290455a99d3e7ecc9 Mon Sep 17 00:00:00 2001 From: yostyle Date: Thu, 5 Sep 2024 15:37:17 +0200 Subject: [PATCH 10/14] Disable element entreprise cloning (cherry picked from commit ffbfc7ba301ca70262c34d9d8cc8dc85f807327a) --- .github/workflows/build_enterprise.yml | 2 +- .github/workflows/danger.yml | 4 ++-- .github/workflows/generate_github_pages.yml | 2 +- .github/workflows/gradle-wrapper-update.yml | 2 +- .github/workflows/quality.yml | 26 ++++++++++----------- .github/workflows/release.yml | 4 ++-- .github/workflows/sync-localazy.yml | 2 +- .github/workflows/sync-sas-strings.yml | 2 +- .github/workflows/tests.yml | 4 ++-- 9 files changed, 24 insertions(+), 24 deletions(-) diff --git a/.github/workflows/build_enterprise.yml b/.github/workflows/build_enterprise.yml index 4370c75d0c..a11176ae91 100644 --- a/.github/workflows/build_enterprise.yml +++ b/.github/workflows/build_enterprise.yml @@ -17,7 +17,7 @@ jobs: name: Build Enterprise APKs runs-on: ubuntu-latest # Skip in forks - if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }} + if: ${{ github.repository == 'element-hq/element-x-android' }} strategy: matrix: variant: [debug, release, nightly] diff --git a/.github/workflows/danger.yml b/.github/workflows/danger.yml index 6b6ac8243e..293a4d8cca 100644 --- a/.github/workflows/danger.yml +++ b/.github/workflows/danger.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest name: Danger main check # Skip in forks, it doesn't work even with the fallback token - if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }} + if: ${{ github.repository == 'element-hq/element-x-android' }} steps: - uses: actions/checkout@v4 - name: Add SSH private keys for submodule repositories @@ -15,7 +15,7 @@ jobs: with: ssh-private-key: ${{ secrets.ELEMENT_ENTERPRISE_DEPLOY_KEY }} - name: Clone submodules - if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }} + if: ${{ github.repository == 'element-hq/element-x-android' }} run: git submodule update --init --recursive - run: | npm install --save-dev @babel/plugin-transform-flow-strip-types diff --git a/.github/workflows/generate_github_pages.yml b/.github/workflows/generate_github_pages.yml index e39175c755..874947df4e 100644 --- a/.github/workflows/generate_github_pages.yml +++ b/.github/workflows/generate_github_pages.yml @@ -9,7 +9,7 @@ jobs: generate-github-pages: runs-on: ubuntu-latest # Skip in forks - if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }} + if: ${{ github.repository == 'element-hq/element-x-android' }} steps: - name: ⏬ Checkout with LFS uses: nschloe/action-cached-lfs-checkout@v1.2.2 diff --git a/.github/workflows/gradle-wrapper-update.yml b/.github/workflows/gradle-wrapper-update.yml index f5a5b3c94c..e017ca350c 100644 --- a/.github/workflows/gradle-wrapper-update.yml +++ b/.github/workflows/gradle-wrapper-update.yml @@ -9,7 +9,7 @@ jobs: update-gradle-wrapper: runs-on: ubuntu-latest # Skip in forks - if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }} + if: ${{ github.repository == 'element-hq/element-x-android' }} steps: - uses: actions/checkout@v4 - uses: actions/setup-java@v4 diff --git a/.github/workflows/quality.yml b/.github/workflows/quality.yml index b69c693f19..204d2b5932 100644 --- a/.github/workflows/quality.yml +++ b/.github/workflows/quality.yml @@ -20,11 +20,11 @@ jobs: - uses: actions/checkout@v4 - name: Add SSH private keys for submodule repositories uses: webfactory/ssh-agent@v0.9.0 - if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }} + if: ${{ github.repository == 'element-hq/element-x-android' }} with: ssh-private-key: ${{ secrets.ELEMENT_ENTERPRISE_DEPLOY_KEY }} - name: Clone submodules - if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }} + if: ${{ github.repository == 'element-hq/element-x-android' }} run: git submodule update --init --recursive - name: Run code quality check suite run: ./tools/check/check_code_quality.sh @@ -78,11 +78,11 @@ jobs: ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.ref }} - name: Add SSH private keys for submodule repositories uses: webfactory/ssh-agent@v0.9.0 - if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }} + if: ${{ github.repository == 'element-hq/element-x-android' }} with: ssh-private-key: ${{ secrets.ELEMENT_ENTERPRISE_DEPLOY_KEY }} - name: Clone submodules - if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }} + if: ${{ github.repository == 'element-hq/element-x-android' }} run: git submodule update --init --recursive - name: Use JDK 21 uses: actions/setup-java@v4 @@ -118,11 +118,11 @@ jobs: ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.ref }} - name: Add SSH private keys for submodule repositories uses: webfactory/ssh-agent@v0.9.0 - if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }} + if: ${{ github.repository == 'element-hq/element-x-android' }} with: ssh-private-key: ${{ secrets.ELEMENT_ENTERPRISE_DEPLOY_KEY }} - name: Clone submodules - if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }} + if: ${{ github.repository == 'element-hq/element-x-android' }} run: git submodule update --init --recursive - name: Use JDK 21 uses: actions/setup-java@v4 @@ -162,11 +162,11 @@ jobs: ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.ref }} - name: Add SSH private keys for submodule repositories uses: webfactory/ssh-agent@v0.9.0 - if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }} + if: ${{ github.repository == 'element-hq/element-x-android' }} with: ssh-private-key: ${{ secrets.ELEMENT_ENTERPRISE_DEPLOY_KEY }} - name: Clone submodules - if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }} + if: ${{ github.repository == 'element-hq/element-x-android' }} run: git submodule update --init --recursive - name: Use JDK 21 uses: actions/setup-java@v4 @@ -202,11 +202,11 @@ jobs: ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.ref }} - name: Add SSH private keys for submodule repositories uses: webfactory/ssh-agent@v0.9.0 - if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }} + if: ${{ github.repository == 'element-hq/element-x-android' }} with: ssh-private-key: ${{ secrets.ELEMENT_ENTERPRISE_DEPLOY_KEY }} - name: Clone submodules - if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }} + if: ${{ github.repository == 'element-hq/element-x-android' }} run: git submodule update --init --recursive - name: Use JDK 21 uses: actions/setup-java@v4 @@ -242,11 +242,11 @@ jobs: ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.ref }} - name: Add SSH private keys for submodule repositories uses: webfactory/ssh-agent@v0.9.0 - if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }} + if: ${{ github.repository == 'element-hq/element-x-android' }} with: ssh-private-key: ${{ secrets.ELEMENT_ENTERPRISE_DEPLOY_KEY }} - name: Clone submodules - if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }} + if: ${{ github.repository == 'element-hq/element-x-android' }} run: git submodule update --init --recursive - name: Use JDK 21 uses: actions/setup-java@v4 @@ -277,7 +277,7 @@ jobs: name: Project Check Suite runs-on: ubuntu-latest needs: [konsist, lint, ktlint, detekt] - if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }} + if: ${{ github.repository == 'element-hq/element-x-android' }} steps: - uses: actions/checkout@v4 with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 99ee377c00..6e9028e661 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -42,7 +42,7 @@ jobs: enterprise: name: Create App Bundle Enterprise runs-on: ubuntu-latest - if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }} + if: ${{ github.repository == 'element-hq/element-x-android' }} concurrency: group: ${{ format('build-release-main-enterprise-{0}', github.sha) }} cancel-in-progress: true @@ -50,7 +50,7 @@ jobs: - uses: actions/checkout@v4 - name: Add SSH private keys for submodule repositories uses: webfactory/ssh-agent@v0.9.0 - if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }} + if: ${{ github.repository == 'element-hq/element-x-android' }} with: ssh-private-key: ${{ secrets.ELEMENT_ENTERPRISE_DEPLOY_KEY }} - name: Clone submodules diff --git a/.github/workflows/sync-localazy.yml b/.github/workflows/sync-localazy.yml index dc688cb5a4..65a1a75887 100644 --- a/.github/workflows/sync-localazy.yml +++ b/.github/workflows/sync-localazy.yml @@ -9,7 +9,7 @@ jobs: sync-localazy: runs-on: ubuntu-latest # Skip in forks - if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }} + if: ${{ github.repository == 'element-hq/element-x-android' }} steps: - uses: actions/checkout@v4 - name: Use JDK 21 diff --git a/.github/workflows/sync-sas-strings.yml b/.github/workflows/sync-sas-strings.yml index 632eb5d8ec..2d6c97f6ef 100644 --- a/.github/workflows/sync-sas-strings.yml +++ b/.github/workflows/sync-sas-strings.yml @@ -9,7 +9,7 @@ jobs: sync-sas-strings: runs-on: ubuntu-latest # Skip in forks - if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }} + if: ${{ github.repository == 'element-hq/element-x-android' }} # No concurrency required, runs every time on a schedule. steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index cdb81ff8d7..8d619cf86d 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -40,11 +40,11 @@ jobs: ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.ref }} - name: Add SSH private keys for submodule repositories uses: webfactory/ssh-agent@v0.9.0 - if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }} + if: ${{ github.repository == 'element-hq/element-x-android' }} with: ssh-private-key: ${{ secrets.ELEMENT_ENTERPRISE_DEPLOY_KEY }} - name: Clone submodules - if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }} + if: ${{ github.repository == 'element-hq/element-x-android' }} run: git submodule update --init --recursive - name: ☕️ Use JDK 21 uses: actions/setup-java@v4 From 240ea7fa098a3b924b0842174f001b9b8c89e14b Mon Sep 17 00:00:00 2001 From: yostyle Date: Thu, 5 Sep 2024 15:45:14 +0200 Subject: [PATCH 11/14] Add few comments (cherry picked from commit 1315d555503ad202e04eb45c65445e81ed027a3b) --- .github/workflows/danger.yml | 1 + .github/workflows/nightly.yml | 1 + .github/workflows/nightlyReports.yml | 1 + .github/workflows/nightly_enterprise.yml | 1 + .github/workflows/quality.yml | 13 +++++++++++++ .github/workflows/release.yml | 2 ++ .github/workflows/tests.yml | 2 ++ 7 files changed, 21 insertions(+) diff --git a/.github/workflows/danger.yml b/.github/workflows/danger.yml index 293a4d8cca..0a3e430f8b 100644 --- a/.github/workflows/danger.yml +++ b/.github/workflows/danger.yml @@ -15,6 +15,7 @@ jobs: with: ssh-private-key: ${{ secrets.ELEMENT_ENTERPRISE_DEPLOY_KEY }} - name: Clone submodules + # Skip in forks if: ${{ github.repository == 'element-hq/element-x-android' }} run: git submodule update --init --recursive - run: | diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 3ad597e658..f6cab44e0a 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -14,6 +14,7 @@ jobs: nightly: name: Build and publish nightly bundle to Firebase runs-on: ubuntu-latest + # Skip in forks if: ${{ github.repository == 'element-hq/element-x-android' }} steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/nightlyReports.yml b/.github/workflows/nightlyReports.yml index e49bcb9663..431bf107ca 100644 --- a/.github/workflows/nightlyReports.yml +++ b/.github/workflows/nightlyReports.yml @@ -15,6 +15,7 @@ jobs: nightlyReports: name: Create kover report artifact and upload sonar result. runs-on: ubuntu-latest + # Skip in forks if: ${{ github.repository == 'element-hq/element-x-android' }} steps: - name: ⏬ Checkout with LFS diff --git a/.github/workflows/nightly_enterprise.yml b/.github/workflows/nightly_enterprise.yml index 7d12ac66a8..f76bedb7c8 100644 --- a/.github/workflows/nightly_enterprise.yml +++ b/.github/workflows/nightly_enterprise.yml @@ -14,6 +14,7 @@ jobs: nightly: name: Build and publish Enterprise nightly bundle to Firebase runs-on: ubuntu-latest + # Skip in forks if: ${{ github.repository == 'element-hq/element-x-android' }} steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/quality.yml b/.github/workflows/quality.yml index 204d2b5932..7d966f01d8 100644 --- a/.github/workflows/quality.yml +++ b/.github/workflows/quality.yml @@ -20,10 +20,12 @@ jobs: - uses: actions/checkout@v4 - name: Add SSH private keys for submodule repositories uses: webfactory/ssh-agent@v0.9.0 + # Skip in forks if: ${{ github.repository == 'element-hq/element-x-android' }} with: ssh-private-key: ${{ secrets.ELEMENT_ENTERPRISE_DEPLOY_KEY }} - name: Clone submodules + # Skip in forks if: ${{ github.repository == 'element-hq/element-x-android' }} run: git submodule update --init --recursive - name: Run code quality check suite @@ -78,10 +80,12 @@ jobs: ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.ref }} - name: Add SSH private keys for submodule repositories uses: webfactory/ssh-agent@v0.9.0 + # Skip in forks if: ${{ github.repository == 'element-hq/element-x-android' }} with: ssh-private-key: ${{ secrets.ELEMENT_ENTERPRISE_DEPLOY_KEY }} - name: Clone submodules + # Skip in forks if: ${{ github.repository == 'element-hq/element-x-android' }} run: git submodule update --init --recursive - name: Use JDK 21 @@ -118,10 +122,12 @@ jobs: ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.ref }} - name: Add SSH private keys for submodule repositories uses: webfactory/ssh-agent@v0.9.0 + # Skip in forks if: ${{ github.repository == 'element-hq/element-x-android' }} with: ssh-private-key: ${{ secrets.ELEMENT_ENTERPRISE_DEPLOY_KEY }} - name: Clone submodules + # Skip in forks if: ${{ github.repository == 'element-hq/element-x-android' }} run: git submodule update --init --recursive - name: Use JDK 21 @@ -162,10 +168,12 @@ jobs: ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.ref }} - name: Add SSH private keys for submodule repositories uses: webfactory/ssh-agent@v0.9.0 + # Skip in forks if: ${{ github.repository == 'element-hq/element-x-android' }} with: ssh-private-key: ${{ secrets.ELEMENT_ENTERPRISE_DEPLOY_KEY }} - name: Clone submodules + # Skip in forks if: ${{ github.repository == 'element-hq/element-x-android' }} run: git submodule update --init --recursive - name: Use JDK 21 @@ -202,10 +210,12 @@ jobs: ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.ref }} - name: Add SSH private keys for submodule repositories uses: webfactory/ssh-agent@v0.9.0 + # Skip in forks if: ${{ github.repository == 'element-hq/element-x-android' }} with: ssh-private-key: ${{ secrets.ELEMENT_ENTERPRISE_DEPLOY_KEY }} - name: Clone submodules + # Skip in forks if: ${{ github.repository == 'element-hq/element-x-android' }} run: git submodule update --init --recursive - name: Use JDK 21 @@ -242,10 +252,12 @@ jobs: ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.ref }} - name: Add SSH private keys for submodule repositories uses: webfactory/ssh-agent@v0.9.0 + # Skip in forks if: ${{ github.repository == 'element-hq/element-x-android' }} with: ssh-private-key: ${{ secrets.ELEMENT_ENTERPRISE_DEPLOY_KEY }} - name: Clone submodules + # Skip in forks if: ${{ github.repository == 'element-hq/element-x-android' }} run: git submodule update --init --recursive - name: Use JDK 21 @@ -277,6 +289,7 @@ jobs: name: Project Check Suite runs-on: ubuntu-latest needs: [konsist, lint, ktlint, detekt] + # Skip in forks if: ${{ github.repository == 'element-hq/element-x-android' }} steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6e9028e661..b44f3b4007 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -42,6 +42,7 @@ jobs: enterprise: name: Create App Bundle Enterprise runs-on: ubuntu-latest + # Skip in forks if: ${{ github.repository == 'element-hq/element-x-android' }} concurrency: group: ${{ format('build-release-main-enterprise-{0}', github.sha) }} @@ -50,6 +51,7 @@ jobs: - uses: actions/checkout@v4 - name: Add SSH private keys for submodule repositories uses: webfactory/ssh-agent@v0.9.0 + # Skip in forks if: ${{ github.repository == 'element-hq/element-x-android' }} with: ssh-private-key: ${{ secrets.ELEMENT_ENTERPRISE_DEPLOY_KEY }} diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 8d619cf86d..56a88ed197 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -40,10 +40,12 @@ jobs: ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.ref }} - name: Add SSH private keys for submodule repositories uses: webfactory/ssh-agent@v0.9.0 + # Skip in forks if: ${{ github.repository == 'element-hq/element-x-android' }} with: ssh-private-key: ${{ secrets.ELEMENT_ENTERPRISE_DEPLOY_KEY }} - name: Clone submodules + # Skip in forks if: ${{ github.repository == 'element-hq/element-x-android' }} run: git submodule update --init --recursive - name: ☕️ Use JDK 21 From 8a6f6ff7d939b1874e3b0a518f8adf939af82bf6 Mon Sep 17 00:00:00 2001 From: yostyle Date: Tue, 8 Oct 2024 01:37:46 +0200 Subject: [PATCH 12/14] Disable jobs in fork --- .github/workflows/build_enterprise.yml | 2 +- .github/workflows/danger.yml | 4 +--- .github/workflows/generate_github_pages.yml | 2 +- .github/workflows/nightly.yml | 2 +- .github/workflows/quality.yml | 4 ++-- .github/workflows/release.yml | 4 ++-- .github/workflows/sync-localazy.yml | 2 +- .github/workflows/sync-sas-strings.yml | 2 +- .github/workflows/tests.yml | 4 ++-- 9 files changed, 12 insertions(+), 14 deletions(-) diff --git a/.github/workflows/build_enterprise.yml b/.github/workflows/build_enterprise.yml index a11176ae91..33920cbaed 100644 --- a/.github/workflows/build_enterprise.yml +++ b/.github/workflows/build_enterprise.yml @@ -17,7 +17,7 @@ jobs: name: Build Enterprise APKs runs-on: ubuntu-latest # Skip in forks - if: ${{ github.repository == 'element-hq/element-x-android' }} + if: ${{ github.repository == 'element-hq/element-x-android' && ('pull_request' != github.event_name || github.event.pull_request.head.repo.full_name == github.repository) }} strategy: matrix: variant: [debug, release, nightly] diff --git a/.github/workflows/danger.yml b/.github/workflows/danger.yml index 0a3e430f8b..7aa31bf854 100644 --- a/.github/workflows/danger.yml +++ b/.github/workflows/danger.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest name: Danger main check # Skip in forks, it doesn't work even with the fallback token - if: ${{ github.repository == 'element-hq/element-x-android' }} + if: ${{ github.repository == 'element-hq/element-x-android' && ('pull_request' != github.event_name || github.event.pull_request.head.repo.full_name == github.repository) }} steps: - uses: actions/checkout@v4 - name: Add SSH private keys for submodule repositories @@ -15,8 +15,6 @@ jobs: with: ssh-private-key: ${{ secrets.ELEMENT_ENTERPRISE_DEPLOY_KEY }} - name: Clone submodules - # Skip in forks - if: ${{ github.repository == 'element-hq/element-x-android' }} run: git submodule update --init --recursive - run: | npm install --save-dev @babel/plugin-transform-flow-strip-types diff --git a/.github/workflows/generate_github_pages.yml b/.github/workflows/generate_github_pages.yml index 874947df4e..6df98f8270 100644 --- a/.github/workflows/generate_github_pages.yml +++ b/.github/workflows/generate_github_pages.yml @@ -9,7 +9,7 @@ jobs: generate-github-pages: runs-on: ubuntu-latest # Skip in forks - if: ${{ github.repository == 'element-hq/element-x-android' }} + if: ${{ github.repository == 'element-hq/element-x-android' && ('pull_request' != github.event_name || github.event.pull_request.head.repo.full_name == github.repository) }} steps: - name: ⏬ Checkout with LFS uses: nschloe/action-cached-lfs-checkout@v1.2.2 diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index f6cab44e0a..b8dac16fbd 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -15,7 +15,7 @@ jobs: name: Build and publish nightly bundle to Firebase runs-on: ubuntu-latest # Skip in forks - if: ${{ github.repository == 'element-hq/element-x-android' }} + if: ${{ github.repository == 'element-hq/element-x-android' && ('pull_request' != github.event_name || github.event.pull_request.head.repo.full_name == github.repository) }} steps: - uses: actions/checkout@v4 - name: Use JDK 21 diff --git a/.github/workflows/quality.yml b/.github/workflows/quality.yml index 7d966f01d8..128bfaaf61 100644 --- a/.github/workflows/quality.yml +++ b/.github/workflows/quality.yml @@ -21,12 +21,12 @@ jobs: - name: Add SSH private keys for submodule repositories uses: webfactory/ssh-agent@v0.9.0 # Skip in forks - if: ${{ github.repository == 'element-hq/element-x-android' }} + if: ${{ github.repository == 'element-hq/element-x-android' && ('pull_request' != github.event_name || github.event.pull_request.head.repo.full_name == github.repository) }} with: ssh-private-key: ${{ secrets.ELEMENT_ENTERPRISE_DEPLOY_KEY }} - name: Clone submodules # Skip in forks - if: ${{ github.repository == 'element-hq/element-x-android' }} + if: ${{ github.repository == 'element-hq/element-x-android' && ('pull_request' != github.event_name || github.event.pull_request.head.repo.full_name == github.repository) }} run: git submodule update --init --recursive - name: Run code quality check suite run: ./tools/check/check_code_quality.sh diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b44f3b4007..a108fbcd7e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -43,7 +43,7 @@ jobs: name: Create App Bundle Enterprise runs-on: ubuntu-latest # Skip in forks - if: ${{ github.repository == 'element-hq/element-x-android' }} + if: ${{ github.repository == 'element-hq/element-x-android' && ('pull_request' != github.event_name || github.event.pull_request.head.repo.full_name == github.repository) }} concurrency: group: ${{ format('build-release-main-enterprise-{0}', github.sha) }} cancel-in-progress: true @@ -52,7 +52,7 @@ jobs: - name: Add SSH private keys for submodule repositories uses: webfactory/ssh-agent@v0.9.0 # Skip in forks - if: ${{ github.repository == 'element-hq/element-x-android' }} + if: ${{ github.repository == 'element-hq/element-x-android' && ('pull_request' != github.event_name || github.event.pull_request.head.repo.full_name == github.repository) }} with: ssh-private-key: ${{ secrets.ELEMENT_ENTERPRISE_DEPLOY_KEY }} - name: Clone submodules diff --git a/.github/workflows/sync-localazy.yml b/.github/workflows/sync-localazy.yml index 65a1a75887..bc031cab42 100644 --- a/.github/workflows/sync-localazy.yml +++ b/.github/workflows/sync-localazy.yml @@ -9,7 +9,7 @@ jobs: sync-localazy: runs-on: ubuntu-latest # Skip in forks - if: ${{ github.repository == 'element-hq/element-x-android' }} + if: ${{ github.repository == 'element-hq/element-x-android' && ('pull_request' != github.event_name || github.event.pull_request.head.repo.full_name == github.repository) }} steps: - uses: actions/checkout@v4 - name: Use JDK 21 diff --git a/.github/workflows/sync-sas-strings.yml b/.github/workflows/sync-sas-strings.yml index 2d6c97f6ef..ec1365a3de 100644 --- a/.github/workflows/sync-sas-strings.yml +++ b/.github/workflows/sync-sas-strings.yml @@ -9,7 +9,7 @@ jobs: sync-sas-strings: runs-on: ubuntu-latest # Skip in forks - if: ${{ github.repository == 'element-hq/element-x-android' }} + if: ${{ github.repository == 'element-hq/element-x-android' && ('pull_request' != github.event_name || github.event.pull_request.head.repo.full_name == github.repository) }} # No concurrency required, runs every time on a schedule. steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 56a88ed197..94c33bb830 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -41,12 +41,12 @@ jobs: - name: Add SSH private keys for submodule repositories uses: webfactory/ssh-agent@v0.9.0 # Skip in forks - if: ${{ github.repository == 'element-hq/element-x-android' }} + if: ${{ github.repository == 'element-hq/element-x-android' && ('pull_request' != github.event_name || github.event.pull_request.head.repo.full_name == github.repository) }} with: ssh-private-key: ${{ secrets.ELEMENT_ENTERPRISE_DEPLOY_KEY }} - name: Clone submodules # Skip in forks - if: ${{ github.repository == 'element-hq/element-x-android' }} + if: ${{ github.repository == 'element-hq/element-x-android' && ('pull_request' != github.event_name || github.event.pull_request.head.repo.full_name == github.repository) }} run: git submodule update --init --recursive - name: ☕️ Use JDK 21 uses: actions/setup-java@v4 From 34e6b63f732c0e38f68f1564eb0dbec7ae9838b0 Mon Sep 17 00:00:00 2001 From: yostyle Date: Tue, 8 Oct 2024 01:47:44 +0200 Subject: [PATCH 13/14] Skip upload coverage reports to codecov --- .github/workflows/tests.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 94c33bb830..92d4a2f347 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -85,6 +85,8 @@ jobs: # https://github.com/codecov/codecov-action - name: ☂️ Upload coverage reports to codecov uses: codecov/codecov-action@v4 + # Skip in forks + if: ${{ github.repository == 'element-hq/element-x-android' && ('pull_request' != github.event_name || github.event.pull_request.head.repo.full_name == github.repository) }} with: fail_ci_if_error: true token: ${{ secrets.CODECOV_TOKEN }} From e0f193854f2ff863f2bf8cc64ee2c2bcaa3c6878 Mon Sep 17 00:00:00 2001 From: yostyle Date: Tue, 8 Oct 2024 01:59:12 +0200 Subject: [PATCH 14/14] Remove unused import --- .../preferences/impl/root/PreferencesRootPresenterTest.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenterTest.kt b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenterTest.kt index 9a0e755ab2..60c2a1b82d 100644 --- a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenterTest.kt +++ b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenterTest.kt @@ -14,7 +14,6 @@ import app.cash.turbine.test import com.google.common.truth.Truth.assertThat import io.element.android.features.logout.api.direct.aDirectLogoutState import io.element.android.features.preferences.impl.utils.ShowDeveloperSettingsProvider -import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.core.meta.BuildType import io.element.android.libraries.designsystem.utils.snackbar.SnackbarDispatcher