diff --git a/.github/workflows/build_enterprise.yml b/.github/workflows/build_enterprise.yml
index 4370c75d0c..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.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' && ('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 6b6ac8243e..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.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' && ('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,7 +15,6 @@ 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' }}
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..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.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' && ('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/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/nightly.yml b/.github/workflows/nightly.yml
index 3ad597e658..b8dac16fbd 100644
--- a/.github/workflows/nightly.yml
+++ b/.github/workflows/nightly.yml
@@ -14,7 +14,8 @@ jobs:
nightly:
name: Build and publish nightly bundle to Firebase
runs-on: ubuntu-latest
- if: ${{ github.repository == 'element-hq/element-x-android' }}
+ # 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) }}
steps:
- uses: actions/checkout@v4
- name: Use JDK 21
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 b69c693f19..128bfaaf61 100644
--- a/.github/workflows/quality.yml
+++ b/.github/workflows/quality.yml
@@ -20,11 +20,13 @@ 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' }}
+ # 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:
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' }}
+ # 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) }}
run: git submodule update --init --recursive
- name: Run code quality check suite
run: ./tools/check/check_code_quality.sh
@@ -78,11 +80,13 @@ 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' }}
+ # Skip in forks
+ 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' }}
+ # Skip in forks
+ 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 +122,13 @@ 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' }}
+ # Skip in forks
+ 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' }}
+ # Skip in forks
+ 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 +168,13 @@ 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' }}
+ # Skip in forks
+ 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' }}
+ # Skip in forks
+ 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 +210,13 @@ 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' }}
+ # Skip in forks
+ 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' }}
+ # Skip in forks
+ 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 +252,13 @@ 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' }}
+ # Skip in forks
+ 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' }}
+ # Skip in forks
+ 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 +289,8 @@ 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' }}
+ # Skip in forks
+ 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..a108fbcd7e 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -42,7 +42,8 @@ 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' }}
+ # 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) }}
concurrency:
group: ${{ format('build-release-main-enterprise-{0}', github.sha) }}
cancel-in-progress: true
@@ -50,7 +51,8 @@ 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' }}
+ # 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:
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..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.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' && ('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 632eb5d8ec..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.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' && ('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 cdb81ff8d7..92d4a2f347 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -40,11 +40,13 @@ 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' }}
+ # 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:
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' }}
+ # 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) }}
run: git submodule update --init --recursive
- name: ☕️ Use JDK 21
uses: actions/setup-java@v4
@@ -83,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 }}
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 0000000000..992cd7cc71
Binary files /dev/null and b/app/src/gplay/res/raw/certignaservicesrootca.cer differ
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/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 e4218450f6..e192f974a8 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
@@ -23,6 +23,7 @@ import io.element.android.libraries.usersearch.api.UserSearchResult
@Composable
fun SearchMultipleUsersResultItem(
+ isDebugBuild: Boolean,
searchResult: UserSearchResult,
isUserSelected: Boolean,
onCheckedChange: (Boolean) -> Unit,
@@ -41,6 +42,7 @@ fun SearchMultipleUsersResultItem(
)
}
CheckableUserRow(
+ isDebugBuild = isDebugBuild,
checked = isUserSelected,
modifier = modifier,
data = data,
@@ -53,6 +55,7 @@ fun SearchMultipleUsersResultItem(
internal fun SearchMultipleUsersResultItemPreview() = ElementThemedPreview {
Column {
SearchMultipleUsersResultItem(
+ isDebugBuild = false,
searchResult = UserSearchResult(
aMatrixUser(),
isUnresolved = false
@@ -62,6 +65,7 @@ internal fun SearchMultipleUsersResultItemPreview() = ElementThemedPreview {
)
HorizontalDivider()
SearchMultipleUsersResultItem(
+ isDebugBuild = false,
searchResult = UserSearchResult(
aMatrixUser(),
isUnresolved = false
@@ -71,6 +75,7 @@ internal fun SearchMultipleUsersResultItemPreview() = ElementThemedPreview {
)
HorizontalDivider()
SearchMultipleUsersResultItem(
+ isDebugBuild = false,
searchResult = UserSearchResult(
aMatrixUser(),
isUnresolved = true
@@ -80,6 +85,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 c526ccddd1..8012da1ea0 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
@@ -23,6 +23,7 @@ import io.element.android.libraries.usersearch.api.UserSearchResult
@Composable
fun SearchSingleUserResultItem(
+ isDebugBuild: Boolean,
searchResult: UserSearchResult,
onClick: () -> Unit,
modifier: Modifier = Modifier,
@@ -35,6 +36,7 @@ fun SearchSingleUserResultItem(
)
} else {
MatrixUserRow(
+ isDebugBuild = isDebugBuild,
modifier = modifier.clickable(onClick = onClick),
matrixUser = searchResult.matrixUser,
avatarSize = AvatarSize.UserListItem,
@@ -47,11 +49,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 beac2e8c94..121306359a 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
@@ -39,6 +39,7 @@ import kotlinx.collections.immutable.ImmutableList
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun SearchUserBar(
+ isDebugBuild: Boolean,
query: String,
state: SearchBarResultState>,
showLoader: Boolean,
@@ -103,6 +104,7 @@ fun SearchUserBar(
if (isMultiSelectionEnable) {
itemsIndexed(users) { index, searchResult ->
SearchMultipleUsersResultItem(
+ isDebugBuild = isDebugBuild,
modifier = Modifier.fillMaxWidth(),
searchResult = searchResult,
isUserSelected = selectedUsers.contains(searchResult.matrixUser),
@@ -121,6 +123,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 2151381e2a..ba9d304e14 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
@@ -44,6 +44,7 @@ fun UserListView(
modifier = modifier,
) {
SearchUserBar(
+ isDebugBuild = state.isDebugBuild,
modifier = Modifier.fillMaxWidth(),
query = state.searchQuery,
state = state.searchResults,
@@ -89,6 +90,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 a2661f18a7..a832a696a5 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
@@ -57,6 +57,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 e34b860319..e37962202e 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
@@ -12,6 +12,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 58ef944683..8f09a3404b 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
@@ -58,6 +58,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 ab64b8e267..a5dcdf8e6e 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
@@ -166,6 +166,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 c9bf9dc885..a6690017c2 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
@@ -19,6 +19,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
@@ -35,6 +36,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
@@ -75,6 +77,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 e57dfcd0be..51109cc356 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
@@ -14,6 +14,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 a1a322a055..40ecb68f0d 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
@@ -68,6 +68,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 2a326bca36..a02dafaf0c 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
@@ -13,6 +13,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
@@ -29,6 +30,7 @@ class DefaultUserListPresenterTest {
val warmUpRule = WarmUpRule()
private val userRepository = FakeUserRepository()
+ private val buildMeta = aBuildMeta()
@Test
fun `present - initial state for single selection`() = runTest {
@@ -37,6 +39,7 @@ class DefaultUserListPresenterTest {
UserListPresenterArgs(selectionMode = SelectionMode.Single),
userRepository,
UserListDataStore(),
+ buildMeta,
FakeMatrixClient(),
)
moleculeFlow(RecompositionMode.Immediate) {
@@ -59,6 +62,7 @@ class DefaultUserListPresenterTest {
UserListPresenterArgs(selectionMode = SelectionMode.Multiple),
userRepository,
UserListDataStore(),
+ buildMeta,
FakeMatrixClient(),
)
moleculeFlow(RecompositionMode.Immediate) {
@@ -81,6 +85,7 @@ class DefaultUserListPresenterTest {
UserListPresenterArgs(selectionMode = SelectionMode.Single),
userRepository,
UserListDataStore(),
+ buildMeta,
FakeMatrixClient(),
)
moleculeFlow(RecompositionMode.Immediate) {
@@ -118,6 +123,7 @@ class DefaultUserListPresenterTest {
),
userRepository,
UserListDataStore(),
+ buildMeta,
FakeMatrixClient(),
)
moleculeFlow(RecompositionMode.Immediate) {
@@ -171,6 +177,7 @@ class DefaultUserListPresenterTest {
),
userRepository,
UserListDataStore(),
+ buildMeta,
FakeMatrixClient(),
)
moleculeFlow(RecompositionMode.Immediate) {
@@ -197,6 +204,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 236ea211fe..75861a097d 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
@@ -208,6 +208,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 2e03cbdb9d..05138cf41a 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
@@ -25,6 +25,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 985471c641..959ea21e88 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
@@ -117,6 +117,7 @@ fun aMessagesState(
pinnedMessagesBannerState: PinnedMessagesBannerState = aLoadedPinnedMessagesBannerState(),
eventSink: (MessagesEvents) -> Unit = {},
) = MessagesState(
+ isDebugBuild = false,
roomId = RoomId("!id:domain"),
roomName = roomName,
roomAvatar = roomAvatar,
@@ -177,6 +178,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 36bf0bc5fb..8ca303124b 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
@@ -440,6 +440,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 7a9c542a1b..19f1f3ce22 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
@@ -36,6 +36,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
@@ -44,6 +45,7 @@ import kotlinx.collections.immutable.persistentListOf
@Composable
fun SuggestionsPickerView(
+ isDebugBuild: Boolean,
roomId: RoomId,
roomName: String?,
roomAvatarData: AvatarData?,
@@ -66,6 +68,7 @@ fun SuggestionsPickerView(
) {
Column(modifier = Modifier.fillParentMaxWidth()) {
SuggestionItemView(
+ isDebugBuild = isDebugBuild,
suggestion = it,
roomId = roomId.value,
roomName = roomName,
@@ -81,6 +84,7 @@ fun SuggestionsPickerView(
@Composable
private fun SuggestionItemView(
+ isDebugBuild: Boolean,
suggestion: ResolvedSuggestion,
roomId: String,
roomName: String?,
@@ -100,12 +104,12 @@ 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 TODO should be applied in Element X
is ResolvedSuggestion.Alias -> suggestion.roomSummary.name
}
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
}
@@ -125,13 +129,15 @@ private fun SuggestionItemView(
overflow = TextOverflow.Ellipsis,
)
}
- Text(
- text = subtitle,
- style = ElementTheme.typography.fontBodySmRegular,
- color = ElementTheme.colors.textSecondary,
- maxLines = 1,
- overflow = TextOverflow.Ellipsis,
- )
+ subtitle?.let {
+ Text(
+ text = subtitle,
+ style = ElementTheme.typography.fontBodySmRegular,
+ color = ElementTheme.colors.textSecondary,
+ maxLines = 1,
+ overflow = TextOverflow.Ellipsis,
+ )
+ }
}
}
}
@@ -158,6 +164,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 84951cf265..f81122249e 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
@@ -15,6 +15,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
@@ -24,6 +25,7 @@ import kotlinx.collections.immutable.toImmutableList
import javax.inject.Inject
class ReactionSummaryPresenter @Inject constructor(
+ private val buildMeta: BuildMeta,
private val room: MatrixRoom,
) : Presenter {
@Composable
@@ -38,6 +40,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 32455250e6..916a38f054 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
@@ -16,6 +16,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 7f6f8ee436..f7284fefa2 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
@@ -19,6 +19,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 ba3d7c4348..8d24d243a6 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
@@ -67,6 +67,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
@@ -146,8 +147,10 @@ private fun SheetContent(
val user = sender.user ?: MatrixUser(userId = sender.senderId)
SenderRow(
+ isDebugBuild = summary.isDebugBuild,
avatarData = user.getAvatarData(AvatarSize.UserListItem),
- name = user.displayName ?: user.userId.value,
+ // TCHAP TODO should be applied in Element X
+ name = user.getBestName(),
userId = user.userId.value,
sentTime = sender.sentTime
)
@@ -223,6 +226,7 @@ private fun AggregatedReactionButton(
@Composable
private fun SenderRow(
+ isDebugBuild: Boolean,
avatarData: AvatarData,
name: String,
userId: String,
@@ -261,13 +265,15 @@ private fun SenderRow(
style = ElementTheme.typography.fontBodySmRegular,
)
}
- 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 ff4ed88f23..9575c558f5 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
@@ -92,6 +92,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 2a492378f7..cfc3bbd117 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
@@ -14,9 +14,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) }
@@ -34,6 +37,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 e9a3bbdb16..1eaa8f06b8 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
@@ -21,6 +21,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/timeline/components/reactionsummary/ReactionSummaryPresenterTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryPresenterTest.kt
index 2ded1cb4cc..17f3602f0d 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
@@ -17,6 +17,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
@@ -32,10 +33,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 07ea320982..c0e30de373 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
@@ -12,6 +12,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
@@ -49,5 +50,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 a957986e87..0cf4f80f2a 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
@@ -19,6 +19,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
@@ -30,6 +31,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 {
@@ -82,6 +84,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 20d4950ce3..fc1d1b5a9d 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
@@ -12,6 +12,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 15b6c6e10f..3d4c0e3bec 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
@@ -32,6 +32,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 8332fc959a..ca50c0ae26 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
@@ -66,6 +66,7 @@ fun BlockedUsersView(
) {
items(state.blockedUsers) { matrixUser ->
BlockedUserItem(
+ isDebugBuild = state.isDebugBuild,
matrixUser = matrixUser,
onClick = { state.eventSink(BlockedUsersEvents.Unblock(it)) }
)
@@ -112,10 +113,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 7429b3dc4e..9dffb0471c 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
@@ -19,6 +19,7 @@ import androidx.compose.runtime.setValue
import io.element.android.features.logout.api.direct.DirectLogoutState
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
@@ -35,6 +36,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,
@@ -106,6 +108,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 4ece77a55c..0b92c11953 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
@@ -13,6 +13,7 @@ import io.element.android.libraries.matrix.api.core.DeviceId
import io.element.android.libraries.matrix.api.user.MatrixUser
data class PreferencesRootState(
+ val isDebugBuild: Boolean,
val myUser: MatrixUser,
val version: String,
val deviceId: DeviceId?,
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 c91a7e1adc..68731b4945 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
@@ -17,6 +17,7 @@ fun aPreferencesRootState(
myUser: MatrixUser,
eventSink: (PreferencesRootEvents) -> Unit = { _ -> },
) = PreferencesRootState(
+ isDebugBuild = false,
myUser = myUser,
version = "Version 1.1 (1)",
deviceId = 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 10e59bf334..a24c0a050f 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
@@ -70,6 +70,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 7b379ad9b3..6e70179eb4 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
@@ -18,10 +18,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
)
@@ -30,5 +32,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 14d0bd7dcd..8a2e181585 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
@@ -25,6 +25,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
@@ -41,6 +42,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,
@@ -112,6 +114,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 2f6b9d5f30..e6f0bf8f00 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
@@ -15,6 +15,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 2f40d9caf7..29609b3432 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
@@ -22,6 +22,7 @@ open class EditUserProfileStateProvider : PreviewParameterProvider 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 b3b017f0e3..8e5edb371c 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
@@ -135,6 +135,7 @@ fun RoomDetailsView(
}
is RoomDetailsType.Dm -> {
DmHeaderSection(
+ isDebugBuild = state.isDebugBuild,
me = state.roomType.me,
otherMember = state.roomType.otherMember,
roomName = state.roomName,
@@ -352,6 +353,7 @@ private fun RoomHeaderSection(
@Composable
private fun DmHeaderSection(
+ isDebugBuild: Boolean,
me: RoomMember,
otherMember: RoomMember,
roomName: String,
@@ -372,7 +374,8 @@ private fun DmHeaderSection(
)
TitleAndSubtitle(
title = roomName,
- subtitle = otherMember.userId.value,
+ // 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/di/RoomMemberModule.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/di/RoomMemberModule.kt
index cf59f0db1c..d48a269ef2 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
@@ -12,6 +12,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
@@ -23,12 +24,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 85af521c4c..062b04caa4 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
@@ -20,6 +20,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
@@ -34,6 +35,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,
@@ -61,6 +63,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 203584bd0b..059f199055 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
@@ -12,6 +12,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 8af18f7e0b..234c2d53f7 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
@@ -78,6 +78,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 e4b93ebfbc..21bf300bff 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
@@ -76,6 +76,7 @@ fun RoomInviteMembersView(
verticalArrangement = Arrangement.spacedBy(16.dp),
) {
RoomInviteMembersSearchBar(
+ isDebugBuild = state.isDebugBuild,
modifier = Modifier.fillMaxWidth(),
query = state.searchQuery,
showLoader = state.showSearchLoader,
@@ -128,6 +129,7 @@ private fun RoomInviteMembersTopBar(
@OptIn(ExperimentalMaterial3Api::class)
@Composable
private fun RoomInviteMembersSearchBar(
+ isDebugBuild: Boolean,
query: String,
state: SearchBarResultState>,
showLoader: Boolean,
@@ -198,6 +200,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 c6fd2bc0b8..a49c659c0d 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
@@ -25,6 +25,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
@@ -37,6 +38,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,
@@ -146,6 +148,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 f1f8414ddb..77f772442c 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
@@ -14,6 +14,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 97f80776f1..e4714b6438 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
@@ -107,6 +107,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 9763d87994..b60871892a 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
@@ -107,6 +107,7 @@ fun RoomMemberListView(
verticalArrangement = Arrangement.spacedBy(16.dp),
) {
RoomMemberSearchBar(
+ isDebugBuild = state.isDebugBuild,
query = state.searchQuery,
state = state.searchResults,
active = state.isSearchActive,
@@ -120,6 +121,7 @@ fun RoomMemberListView(
if (!state.isSearchActive) {
RoomMemberList(
+ isDebugBuild = state.isDebugBuild,
roomMembers = state.roomMembers,
showMembersCount = true,
canDisplayBannedUsersControls = state.moderationState.canDisplayBannedUsers,
@@ -140,6 +142,7 @@ fun RoomMemberListView(
@OptIn(ExperimentalMaterial3Api::class, ExperimentalFoundationApi::class)
@Composable
private fun RoomMemberList(
+ isDebugBuild: Boolean,
roomMembers: AsyncData,
showMembersCount: Boolean,
selectedSection: SelectedSection,
@@ -185,6 +188,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,
@@ -196,6 +200,7 @@ private fun RoomMemberList(
}
private fun LazyListScope.memberItems(
+ isDebugBuild: Boolean,
roomMembers: RoomMembers,
selectedSection: SelectedSection,
onSelectUser: (RoomMember) -> Unit,
@@ -205,6 +210,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) }
@@ -212,6 +218,7 @@ private fun LazyListScope.memberItems(
}
if (roomMembers.joined.isNotEmpty()) {
roomMemberListSection(
+ isDebugBuild = isDebugBuild,
headerText = {
if (showMembersCount) {
val memberCount = roomMembers.joined.count()
@@ -228,6 +235,7 @@ private fun LazyListScope.memberItems(
SelectedSection.BANNED -> { // Banned users
if (roomMembers.banned.isNotEmpty()) {
roomMemberListSection(
+ isDebugBuild = isDebugBuild,
headerText = null,
members = roomMembers.banned,
onMemberSelected = { onSelectUser(it) }
@@ -268,6 +276,7 @@ private fun LazyListScope.failureItem(failure: Throwable) {
}
private fun LazyListScope.roomMemberListSection(
+ isDebugBuild: Boolean,
headerText: @Composable (() -> String)?,
members: ImmutableList?,
onMemberSelected: (RoomMember) -> Unit,
@@ -284,6 +293,7 @@ private fun LazyListScope.roomMemberListSection(
}
items(members.orEmpty()) { matrixUser ->
RoomMemberListItem(
+ isDebugBuild = isDebugBuild,
modifier = Modifier.fillMaxWidth(),
roomMember = matrixUser,
onClick = { onMemberSelected(matrixUser) }
@@ -293,6 +303,7 @@ private fun LazyListScope.roomMemberListSection(
@Composable
private fun RoomMemberListItem(
+ isDebugBuild: Boolean,
roomMember: RoomMember,
onClick: () -> Unit,
modifier: Modifier = Modifier,
@@ -303,6 +314,7 @@ private fun RoomMemberListItem(
RoomMember.Role.USER -> null
}
MatrixUserRow(
+ isDebugBuild = isDebugBuild,
modifier = modifier.clickable(onClick = onClick),
matrixUser = roomMember.toMatrixUser(),
avatarSize = AvatarSize.UserListItem,
@@ -347,6 +359,7 @@ private fun RoomMemberListTopBar(
@OptIn(ExperimentalMaterial3Api::class)
@Composable
private fun RoomMemberSearchBar(
+ isDebugBuild: Boolean,
query: String,
state: SearchBarResultState>,
active: Boolean,
@@ -367,6 +380,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 768c717e73..0ed828c6e4 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
@@ -27,6 +27,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
@@ -41,6 +42,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,
@@ -146,6 +148,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/RoomMembersModerationPresenter.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/moderation/RoomMembersModerationPresenter.kt
index 0b9e744dd2..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,6 +40,7 @@ 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,
@@ -133,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/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 18db706438..95ee118d73 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
@@ -13,6 +13,7 @@ import io.element.android.libraries.matrix.api.room.RoomMember
import kotlinx.collections.immutable.ImmutableList
data class RoomMembersModerationState(
+ val isDebugBuild: Boolean,
val canDisplayModerationActions: Boolean,
val selectedRoomMember: RoomMember?,
val actions: ImmutableList,
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 d7fb509995..93feb72551 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
@@ -80,6 +80,7 @@ fun aRoomMembersModerationState(
canDisplayBannedUsers: Boolean = false,
eventSink: (RoomMembersModerationEvents) -> Unit = {},
) = RoomMembersModerationState(
+ isDebugBuild = false,
canDisplayModerationActions = canDisplayModerationActions,
selectedRoomMember = selectedRoomMember,
actions = actions.toPersistentList(),
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 d420c98a37..0097c9994b 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
@@ -64,6 +64,7 @@ fun RoomMembersModerationView(
Box(modifier = modifier) {
if (state.actions.isNotEmpty()) {
RoomMemberActionsBottomSheet(
+ isDebugBuild = state.isDebugBuild,
roomMember = state.selectedRoomMember,
actions = state.actions,
onSelectAction = { action ->
@@ -186,6 +187,7 @@ fun RoomMembersModerationView(
@OptIn(ExperimentalMaterial3Api::class)
@Composable
private fun RoomMemberActionsBottomSheet(
+ isDebugBuild: Boolean,
roomMember: RoomMember?,
actions: ImmutableList,
onSelectAction: (ModerationAction) -> Unit,
@@ -213,29 +215,30 @@ private fun RoomMemberActionsBottomSheet(
.padding(bottom = 28.dp)
.align(Alignment.CenterHorizontally)
)
- roomMember.displayName?.let {
+ Text(
+ // TCHAP display a value generated from userId if displayname does not exist
+ text = roomMember.getBestName(),
+ 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()
+ )
+ if (isDebugBuild) { // TCHAP hide the Matrix Id in release mode
Text(
- text = it,
- style = ElementTheme.typography.fontHeadingLgBold,
+ text = roomMember.userId.toString(),
+ style = ElementTheme.typography.fontBodyLgRegular,
+ color = ElementTheme.colors.textSecondary,
maxLines = 1,
overflow = TextOverflow.Ellipsis,
textAlign = TextAlign.Center,
modifier = Modifier
- .padding(start = 16.dp, end = 16.dp, bottom = 8.dp)
+ .padding(horizontal = 16.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/ChangeRolesPresenter.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesPresenter.kt
index b91537f856..fae6b21465 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
@@ -28,6 +28,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
@@ -50,6 +51,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,
@@ -160,6 +162,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 36b79d8078..888045a63b 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
@@ -17,6 +17,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 b48677423e..8c1e4ef857 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
@@ -56,6 +56,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 ce362373f2..3a2a1cdd23 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
@@ -137,6 +137,7 @@ fun ChangeRolesView(
resultState = state.searchResults,
) { members ->
SearchResultsList(
+ isDebugBuild = state.isDebugBuild,
currentRole = state.role,
lazyListState = lazyListState,
searchResults = members,
@@ -153,6 +154,7 @@ fun ChangeRolesView(
) {
Column {
SearchResultsList(
+ isDebugBuild = state.isDebugBuild,
currentRole = state.role,
lazyListState = lazyListState,
searchResults = (state.searchResults as? SearchBarResultState.Results)?.results ?: MembersByRole(emptyList()),
@@ -228,6 +230,7 @@ fun ChangeRolesView(
@OptIn(ExperimentalFoundationApi::class)
@Composable
private fun SearchResultsList(
+ isDebugBuild: Boolean,
currentRole: RoomMember.Role,
searchResults: MembersByRole,
selectedUsers: ImmutableList,
@@ -258,6 +261,7 @@ private fun SearchResultsList(
}
items(searchResults.admins, key = { it.userId }) { roomMember ->
ListMemberItem(
+ isDebugBuild = isDebugBuild,
roomMember = roomMember,
canRemoveMember = canRemoveMember,
onToggleSelection = onToggleSelection,
@@ -269,6 +273,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,
@@ -280,6 +285,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,
@@ -304,6 +310,7 @@ private fun ListSectionHeader(text: String) {
@Composable
private fun ListMemberItem(
+ isDebugBuild: Boolean,
roomMember: RoomMember,
canRemoveMember: (UserId) -> Boolean,
onToggleSelection: (RoomMember) -> Unit,
@@ -318,6 +325,7 @@ private fun ListMemberItem(
)
}
MemberRow(
+ isDebugBuild = isDebugBuild,
modifier = Modifier.clickable(enabled = canToggle, onClick = { onToggleSelection(roomMember) }),
avatarData = roomMember.getAvatarData(size = AvatarSize.UserListItem),
name = roomMember.getBestName(),
@@ -329,6 +337,7 @@ private fun ListMemberItem(
@Composable
private fun MemberRow(
+ isDebugBuild: Boolean,
avatarData: AvatarData,
name: String,
userId: String?,
@@ -370,14 +379,16 @@ private fun MemberRow(
}
}
// Id
- userId?.let {
- 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
+ userId?.let {
+ Text(
+ text = userId,
+ color = MaterialTheme.colorScheme.secondary,
+ maxLines = 1,
+ overflow = TextOverflow.Ellipsis,
+ style = ElementTheme.typography.fontBodySmRegular,
+ )
+ }
}
}
trailingContent?.invoke()
@@ -400,6 +411,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 73eee2092e..8f953e33ae 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
@@ -40,6 +40,7 @@ import io.element.android.libraries.matrix.test.A_ROOM_TOPIC
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
@@ -80,15 +81,17 @@ class RoomDetailsPresenterTest {
isPinnedMessagesFeatureEnabled: Boolean = true,
): 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 c4627edd66..0bd9614920 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
@@ -23,6 +23,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
@@ -42,10 +43,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()
@@ -68,6 +71,7 @@ internal class RoomInviteMembersPresenterTest {
@Test
fun `present - updates search active state`() = runTest {
val presenter = RoomInviteMembersPresenter(
+ buildMeta = buildMeta,
userRepository = FakeUserRepository(),
roomMemberListDataSource = createDataSource(FakeMatrixRoom()),
coroutineDispatchers = testCoroutineDispatchers()
@@ -90,6 +94,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)
@@ -117,6 +122,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)
@@ -157,6 +163,7 @@ internal class RoomInviteMembersPresenterTest {
val repository = FakeUserRepository()
val coroutineDispatchers = testCoroutineDispatchers(useUnconfinedTestDispatcher = true)
val presenter = RoomInviteMembersPresenter(
+ buildMeta = buildMeta,
userRepository = repository,
roomMemberListDataSource = createDataSource(
matrixRoom = FakeMatrixRoom().apply {
@@ -218,6 +225,7 @@ internal class RoomInviteMembersPresenterTest {
val repository = FakeUserRepository()
val presenter = RoomInviteMembersPresenter(
+ buildMeta = buildMeta,
userRepository = repository,
roomMemberListDataSource = createDataSource(FakeMatrixRoom().apply {
givenRoomMembersState(
@@ -265,6 +273,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()
@@ -294,6 +303,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)
@@ -335,6 +345,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 e9414f90be..494aebe46b 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
@@ -22,10 +22,12 @@ import io.element.android.features.roomdetails.impl.members.moderation.RoomMembe
import io.element.android.features.roomdetails.impl.members.moderation.RoomMembersModerationState
import io.element.android.features.roomdetails.impl.members.moderation.aRoomMembersModerationState
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.EventsRecorder
@@ -260,6 +262,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) }
@@ -268,6 +271,7 @@ private fun TestScope.createPresenter(
roomMembersModerationStateLambda: () -> RoomMembersModerationState = { aRoomMembersModerationState() },
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 c987e308ab..6ab7bccc6e 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
@@ -21,6 +21,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
@@ -29,6 +30,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
@@ -334,12 +336,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/RoomMembersModerationPresenterTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/moderation/RoomMembersModerationPresenterTest.kt
index c2acd0a7de..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
@@ -19,11 +19,13 @@ import io.element.android.features.roomdetails.impl.members.moderation.RoomMembe
import io.element.android.features.roomdetails.impl.members.moderation.RoomMembersModerationPresenter
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 RoomMembersModerationPresenterTest {
}
private fun TestScope.createRoomMembersModerationPresenter(
+ buildMeta: BuildMeta = aBuildMeta(),
matrixRoom: FakeMatrixRoom = FakeMatrixRoom(),
dispatchers: CoroutineDispatchers = testCoroutineDispatchers(),
analyticsService: FakeAnalyticsService = FakeAnalyticsService(),
): RoomMembersModerationPresenter {
return RoomMembersModerationPresenter(
+ 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 bff07e06fc..143f36095a 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
@@ -17,12 +17,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
@@ -375,12 +377,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 8b216f3854..20a10ca22e 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
@@ -30,6 +30,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 8b034ad181..94439792e5 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
@@ -40,6 +40,7 @@ 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.bool.orFalse
+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
@@ -77,6 +78,7 @@ private const val EXTENDED_RANGE_SIZE = 40
private const val SUBSCRIBE_TO_VISIBLE_ROOMS_DEBOUNCE_IN_MILLIS = 300L
class RoomListPresenter @Inject constructor(
+ private val buildMeta: BuildMeta,
private val client: MatrixClient,
private val networkMonitor: NetworkMonitor,
private val snackbarDispatcher: SnackbarDispatcher,
@@ -230,6 +232,7 @@ class RoomListPresenter @Inject constructor(
else -> {
val securityBannerState by securityBannerState(securityBannerDismissed, needsSlidingSyncMigration)
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 642c7d879b..050c5a3b3a 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
@@ -63,6 +63,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 d4af5a3fe5..21143f1d44 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
@@ -224,6 +224,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 460871c62b..8f5bf19c1d 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
@@ -67,6 +67,7 @@ internal val minHeight = 84.dp
@Composable
internal fun RoomSummaryRow(
+ isDebugBuild: Boolean,
room: RoomListRoomSummary,
onClick: (RoomListRoomSummary) -> Unit,
eventSink: (RoomListEvents) -> Unit,
@@ -86,7 +87,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(
@@ -197,13 +198,14 @@ private fun NameAndTimestampRow(
@Composable
private fun InviteSubtitle(
+ isDebugBuild: Boolean,
isDm: Boolean,
inviteSender: InviteSender?,
canonicalAlias: RoomAlias?,
modifier: Modifier = Modifier
) {
val subtitle = if (isDm) {
- inviteSender?.userId?.value
+ inviteSender?.userId?.value.takeIf { isDebugBuild } // TCHAP hide the Matrix Id in release mode
} else {
canonicalAlias?.value
}
@@ -352,6 +354,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 58895b1838..dc396f68bd 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
@@ -15,12 +15,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 {
@@ -61,6 +63,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 d31e7aff23..2db298fcf2 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
@@ -11,6 +11,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 405d3e17d4..1666cc16cc 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
@@ -33,6 +33,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 73f00330b6..ac5dd478a3 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
@@ -191,6 +191,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 91242df095..a20c44ba55 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
@@ -30,6 +30,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
@@ -60,6 +61,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
@@ -627,6 +629,7 @@ class RoomListPresenterTest {
}
private fun TestScope.createRoomListPresenter(
+ buildMeta: BuildMeta = aBuildMeta(),
client: MatrixClient = FakeMatrixClient(),
networkMonitor: NetworkMonitor = FakeNetworkMonitor(),
snackbarDispatcher: SnackbarDispatcher = SnackbarDispatcher(),
@@ -643,6 +646,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 98e65c830b..246dbc1ecb 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
@@ -12,6 +12,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
@@ -19,6 +20,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
@@ -64,7 +66,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 {
@@ -99,7 +102,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 {
@@ -136,10 +140,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 ae30b10175..db8ef7015f 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
@@ -12,6 +12,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
@@ -21,12 +22,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 136ffcb206..c2342f4227 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
@@ -26,6 +26,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
@@ -38,6 +39,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 {
@@ -104,6 +106,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 043ea267d7..2946c378df 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
@@ -19,6 +19,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
@@ -26,6 +27,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
@@ -220,10 +222,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 00a69e9ca3..d4438eabfb 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
@@ -33,6 +33,7 @@ import io.element.android.libraries.testtags.testTag
@Composable
fun UserProfileHeaderSection(
+ isDebugBuild: Boolean,
avatarUrl: String?,
userId: UserId,
userName: String?,
@@ -61,15 +62,17 @@ 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,
- )
+ 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))
}
}
@@ -78,6 +81,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 ceb3cd7952..b90b474649 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
@@ -13,6 +13,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 9126ae49ad..b448d6f05c 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
@@ -41,6 +41,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 250ec0c86c..a56538cbbe 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
@@ -21,6 +21,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.unit.dp
+import 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
@@ -57,12 +58,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,
+ 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/designsystem/build.gradle.kts b/libraries/designsystem/build.gradle.kts
index 26f089221a..35e58448e2 100644
--- a/libraries/designsystem/build.gradle.kts
+++ b/libraries/designsystem/build.gradle.kts
@@ -33,6 +33,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 e57bf0c792..f9f138ce54 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
@@ -8,6 +8,7 @@
package io.element.android.libraries.designsystem.components.avatar
import androidx.compose.runtime.Immutable
+import fr.gouv.tchap.libraries.tchaputils.TchapPatterns.toUserDisplayName
@Immutable
data class AvatarData(
@@ -51,5 +52,5 @@ data class AvatarData(
}
fun AvatarData.getBestName(): String {
- return name?.takeIf { it.isNotEmpty() } ?: id
+ return name?.takeIf { it.isNotEmpty() } ?: id.toUserDisplayName()
}
diff --git a/libraries/matrix/api/build.gradle.kts b/libraries/matrix/api/build.gradle.kts
index cfdf2297ff..b540406e1a 100644
--- a/libraries/matrix/api/build.gradle.kts
+++ b/libraries/matrix/api/build.gradle.kts
@@ -25,6 +25,7 @@ setupAnvil()
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..dcc7ab0543
--- /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.toUserDisplayName
+import io.element.android.libraries.matrix.api.core.UserId
+
+fun UserId.toDisplayName() = this.value.toUserDisplayName()
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 52d45bfc11..dc848ba7be 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
@@ -7,6 +7,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
@@ -47,7 +48,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
}
@@ -68,7 +69,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 39e40733a8..b1cb6da950 100644
--- a/libraries/matrixui/build.gradle.kts
+++ b/libraries/matrixui/build.gradle.kts
@@ -31,6 +31,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/CheckableUserRow.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/CheckableUserRow.kt
index 9721d4f6f9..095d41e2e3 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
@@ -28,6 +28,7 @@ import io.element.android.libraries.matrix.ui.model.getAvatarData
@Composable
fun CheckableUserRow(
+ isDebugBuild: Boolean,
checked: Boolean,
onCheckedChange: (Boolean) -> Unit,
data: CheckableUserRowData,
@@ -46,6 +47,7 @@ fun CheckableUserRow(
when (data) {
is CheckableUserRowData.Resolved -> {
UserRow(
+ isDebugBuild = isDebugBuild,
modifier = rowModifier,
avatarData = data.avatarData,
name = data.name,
@@ -95,18 +97,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,
@@ -114,6 +119,7 @@ internal fun CheckableResolvedUserRowPreview() = ElementThemedPreview {
)
HorizontalDivider()
CheckableUserRow(
+ isDebugBuild = false,
checked = true,
onCheckedChange = { },
data = data,
@@ -132,18 +138,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,
@@ -151,6 +160,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 2b09ebeb59..8114f2ae62 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
@@ -32,6 +32,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.
@@ -41,6 +42,7 @@ fun MatrixUserHeader(
MatrixUserHeaderPlaceholder(modifier = modifier)
} else {
MatrixUserHeaderContent(
+ isDebugBuild = isDebugBuild,
matrixUser = matrixUser,
modifier = modifier,
// onClick = onClick
@@ -50,6 +52,7 @@ fun MatrixUserHeader(
@Composable
private fun MatrixUserHeaderContent(
+ isDebugBuild: Boolean,
matrixUser: MatrixUser,
modifier: Modifier = Modifier,
// onClick: () -> Unit,
@@ -80,7 +83,7 @@ private fun MatrixUserHeaderContent(
color = ElementTheme.materialColors.primary,
)
// Id
- if (matrixUser.displayName.isNullOrEmpty().not()) {
+ if (isDebugBuild && matrixUser.displayName.isNullOrEmpty().not()) { // TCHAP hide the Matrix Id in release mode
Text(
text = matrixUser.userId.value,
style = ElementTheme.typography.fontBodyMdRegular,
@@ -96,5 +99,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 33a0de8371..8ae899c771 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
@@ -19,11 +19,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,
@@ -34,5 +36,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 bee5029ac4..6f8934b41c 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
@@ -26,6 +26,7 @@ import io.element.android.libraries.designsystem.theme.components.Text
@Composable
internal fun UserRow(
+ isDebugBuild: Boolean,
avatarData: AvatarData,
name: String,
subtext: String?,
@@ -55,14 +56,16 @@ internal fun UserRow(
style = ElementTheme.typography.fontBodyLgRegular,
)
// Id
- subtext?.let {
- Text(
- text = subtext,
- color = MaterialTheme.colorScheme.secondary,
- maxLines = 1,
- overflow = TextOverflow.Ellipsis,
- style = ElementTheme.typography.fontBodySmRegular,
- )
+ 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/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 950f035d97..9cae434e4e 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
@@ -18,6 +18,7 @@ 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 io.element.android.compound.theme.ElementTheme
import io.element.android.libraries.designsystem.preview.ElementPreview
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
@@ -42,16 +43,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 6dae0baf75..0c41d882bf 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
@@ -29,7 +29,7 @@ data class InviteSender(
) {
@Composable
fun annotatedString(): AnnotatedString {
- return stringResource(R.string.screen_invites_invited_you, displayName, userId.value).let { text ->
+ 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/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 9414a1d039..7c3adc816f 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
@@ -7,6 +7,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
@@ -19,5 +20,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..5115b02812
--- /dev/null
+++ b/libraries/tchaputils/src/main/java/fr/gouv/tchap/libraries/tchaputils/TchapPatterns.kt
@@ -0,0 +1,177 @@
+/*
+ * 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".
+ *
+ * @return the homeserver name, if any.
+ */
+ fun String.toHomeserverName() = this.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 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".
+ *
+ * @return the Tchap display name of the homeserver.
+ */
+ fun String.toHomeserverDisplayName(): String {
+ var homeserverName = this.toHomeserverName()
+ if (homeserverName.contains("tchap.gouv.fr")) {
+ homeserverName.split('.').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.
+ *
+ * @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".
+ *
+ * @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".
+ *
+ * @return displayName without name, empty string if no domain is available.
+ */
+ fun String.getUserDomain() = this.substringBeforeLast(']', "").substringAfterLast('[', "").trim()
+
+ /**
+ * 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.toUserDisplayName(): 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.
+ *
+ * @return true if external.
+ */
+ fun String.isExternalTchapUser() = this.toHomeserverName().isExternalTchapServer()
+
+ /**
+ * Create a room alias name with a prefix.
+ *
+ * @param prefix the alias name prefix.
+ * @return the suggested alias name.
+ */
+ fun createRoomAliasName(prefix: String) = "${prefix.trim().replace("[^a-zA-Z0-9]".toRegex(), "")}${getRandomString(10)}"
+
+ /**
+ * Create a room alias with a prefix.
+ *
+ * @param sessionId the user's id session.
+ * @param prefix the alias name prefix.
+ * @return the suggested alias.
+ */
+ fun createRoomAlias(sessionId: String, prefix: String) = "#${createRoomAliasName(prefix)}:${sessionId.toHomeserverName()}"
+
+ /**
+ * 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) = 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("")
+ }
+}
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..68c835cdb7
--- /dev/null
+++ b/libraries/tchaputils/src/test/java/fr/gouv/tchap/libraries/tchaputils/TchapPatternsTest.kt
@@ -0,0 +1,102 @@
+/*
+ * 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.getUserDomain
+import fr.gouv.tchap.libraries.tchaputils.TchapPatterns.getUserName
+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())
+ }
+
+ @Test
+ fun `given a displayName if it doesn't contain brackets then return the original display name`() {
+ assertEquals("Nom Prenom", "Nom Prenom ".getUserName())
+ }
+
+ /**
+ * Test getting domain only.
+ */
+
+ @Test
+ fun `given a displayName if it contains brackets then return domain name inside`() {
+ assertEquals("Modernisation", "Nom Prenom [Modernisation]".getUserDomain())
+ }
+
+ @Test
+ fun `given a displayName if it doesn't contain brackets then return empty string`() {
+ assertEquals("", "Nom Prenom ".getUserDomain())
+ }
+
+ @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".toUserDisplayName())
+ }
+
+ @Test
+ fun computeDisplayNameFromUserId_dash() {
+ 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".toUserDisplayName())
+ }
+
+ @Test
+ fun computeDisplayNameFromUserId_emptydashes() {
+ 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".toUserDisplayName())
+ }
+
+ @Test
+ fun computeDisplayNameFromUserId_external_user() {
+ 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".toUserDisplayName())
+ }
+}
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 51ab4b2849..989b15e07f 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
@@ -64,7 +64,8 @@ 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 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/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 59969ec622..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()
@@ -83,6 +86,7 @@ class RoomListScreen(
),
)
private val presenter = RoomListPresenter(
+ buildMeta = buildMeta,
client = matrixClient,
networkMonitor = DefaultNetworkMonitor(context, Singleton.appScope),
snackbarDispatcher = SnackbarDispatcher(),
@@ -100,6 +104,7 @@ class RoomListScreen(
),
featureFlagService = featureFlagService,
searchPresenter = RoomListSearchPresenter(
+ buildMeta = buildMeta,
RoomListSearchDataSource(
roomListService = matrixClient.roomListService,
roomSummaryFactory = roomListRoomSummaryFactory,
diff --git a/settings.gradle.kts b/settings.gradle.kts
index e99b6811bc..31114b9bb8 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -58,7 +58,7 @@ dependencyResolutionManagement {
enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")
-rootProject.name = "ElementX"
+rootProject.name = "TchapX"
include(":app")
include(":appnav")
include(":appconfig")
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 78e79afca7..237bd85542 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
@@ -44,6 +44,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()
}
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