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