From 50034599628a320ca7ea32ef5f6a4a31ebf515e1 Mon Sep 17 00:00:00 2001 From: NIkita Fedrunov <fedrunov@element.io> Date: Thu, 1 Sep 2022 14:39:13 +0200 Subject: [PATCH 01/57] empty state for new invites screen --- changelog.d/6876.feature | 1 + .../room/list/home/invites/InvitesFragment.kt | 43 ++++++++++----- .../list/home/invites/InvitesViewEvents.kt | 1 - .../list/home/invites/InvitesViewModel.kt | 53 +++++++++++++++---- .../list/home/invites/InvitesViewState.kt | 15 +++++- .../main/res/drawable/ic_invites_empty.xml | 14 +++++ .../src/main/res/layout/fragment_invites.xml | 21 +++++--- vector/src/main/res/values/strings.xml | 3 ++ 8 files changed, 117 insertions(+), 34 deletions(-) create mode 100644 changelog.d/6876.feature create mode 100644 vector/src/main/res/drawable/ic_invites_empty.xml diff --git a/changelog.d/6876.feature b/changelog.d/6876.feature new file mode 100644 index 0000000000..12a2b78a1e --- /dev/null +++ b/changelog.d/6876.feature @@ -0,0 +1 @@ +[App Layout] - Invites now show empty screen after you reject last invite diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesFragment.kt b/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesFragment.kt index 74b46cec33..7fbc6f5c3f 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesFragment.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesFragment.kt @@ -20,15 +20,19 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.lifecycle.lifecycleScope +import androidx.paging.PagedList import com.airbnb.mvrx.fragmentViewModel -import com.airbnb.mvrx.withState import dagger.hilt.android.AndroidEntryPoint import im.vector.app.core.extensions.configureWith +import im.vector.app.core.platform.StateView import im.vector.app.core.platform.VectorBaseFragment import im.vector.app.databinding.FragmentInvitesBinding import im.vector.app.features.analytics.plan.ViewRoom import im.vector.app.features.home.room.list.RoomListListener import im.vector.app.features.notifications.NotificationDrawerManager +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.flow.onEach import org.matrix.android.sdk.api.session.room.model.RoomSummary import org.matrix.android.sdk.api.session.room.model.SpaceChildInfo import javax.inject.Inject @@ -51,6 +55,8 @@ class InvitesFragment : VectorBaseFragment<FragmentInvitesBinding>(), RoomListLi setupToolbar(views.invitesToolbar) .allowBack() + views.invitesStateView.contentView = views.invitesRecycler + views.invitesRecycler.configureWith(controller) controller.listener = this @@ -62,13 +68,32 @@ class InvitesFragment : VectorBaseFragment<FragmentInvitesBinding>(), RoomListLi when (it) { is InvitesViewEvents.Failure -> showFailure(it.throwable) is InvitesViewEvents.OpenRoom -> handleOpenRoom(it.roomSummary, it.shouldCloseInviteView) - InvitesViewEvents.Close -> handleClose() } } - } - private fun handleClose() { - requireActivity().finish() + viewModel.invites.onEach { + when (it) { + is InvitesContentState.Content -> { + views.invitesStateView.state = StateView.State.Content + Suppress("UNCHECKED_CAST") + controller.submitList(it.content as? PagedList<RoomSummary>) + } + is InvitesContentState.Empty -> { + views.invitesStateView.state = StateView.State.Empty( + title = it.title, + image = it.image, + message = it.message + ) + } + is InvitesContentState.Error -> { + when (views.invitesStateView.state) { + StateView.State.Content -> showErrorInSnackbar(it.throwable) + else -> views.invitesStateView.state = StateView.State.Error(it.throwable.message) + } + } + InvitesContentState.Loading -> views.invitesStateView.state = StateView.State.Loading + } + }.launchIn(viewLifecycleOwner.lifecycleScope) } private fun handleOpenRoom(roomSummary: RoomSummary, shouldCloseInviteView: Boolean) { @@ -83,14 +108,6 @@ class InvitesFragment : VectorBaseFragment<FragmentInvitesBinding>(), RoomListLi } } - override fun invalidate(): Unit = withState(viewModel) { state -> - super.invalidate() - - state.pagedList?.observe(viewLifecycleOwner) { list -> - controller.submitList(list) - } - } - override fun onRejectRoomInvitation(room: RoomSummary) { notificationDrawerManager.updateEvents { it.clearMemberShipNotificationForRoom(room.roomId) } viewModel.handle(InvitesAction.RejectInvitation(room)) diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesViewEvents.kt b/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesViewEvents.kt index d68577cf95..21310592a4 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesViewEvents.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesViewEvents.kt @@ -22,5 +22,4 @@ import org.matrix.android.sdk.api.session.room.model.RoomSummary sealed class InvitesViewEvents : VectorViewEvents { data class Failure(val throwable: Throwable) : InvitesViewEvents() data class OpenRoom(val roomSummary: RoomSummary, val shouldCloseInviteView: Boolean) : InvitesViewEvents() - object Close : InvitesViewEvents() } diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesViewModel.kt b/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesViewModel.kt index b0d854be66..1e5880d772 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesViewModel.kt @@ -16,14 +16,25 @@ package im.vector.app.features.home.room.list.home.invites +import androidx.lifecycle.asFlow import androidx.paging.PagedList import com.airbnb.mvrx.MavericksViewModelFactory import dagger.assisted.Assisted import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject +import im.vector.app.R import im.vector.app.core.di.MavericksAssistedViewModelFactory import im.vector.app.core.di.hiltMavericksViewModelFactory import im.vector.app.core.platform.VectorViewModel +import im.vector.app.core.resources.DrawableProvider +import im.vector.app.core.resources.StringProvider +import kotlinx.coroutines.flow.MutableSharedFlow +import kotlinx.coroutines.flow.asSharedFlow +import kotlinx.coroutines.flow.catch +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.onEach +import kotlinx.coroutines.flow.onStart import kotlinx.coroutines.launch import org.matrix.android.sdk.api.extensions.orFalse import org.matrix.android.sdk.api.session.Session @@ -36,6 +47,8 @@ import timber.log.Timber class InvitesViewModel @AssistedInject constructor( @Assisted val initialState: InvitesViewState, private val session: Session, + private val stringProvider: StringProvider, + private val drawableProvider: DrawableProvider ) : VectorViewModel<InvitesViewState, InvitesAction, InvitesViewEvents>(initialState) { private val pagedListConfig = PagedList.Config.Builder() @@ -52,6 +65,11 @@ class InvitesViewModel @AssistedInject constructor( companion object : MavericksViewModelFactory<InvitesViewModel, InvitesViewState> by hiltMavericksViewModelFactory() + private val _invites = MutableSharedFlow<InvitesContentState>(replay = 1) + val invites = _invites.asSharedFlow() + + var invitesCount = -1 + init { observeInvites() } @@ -72,8 +90,6 @@ class InvitesViewModel @AssistedInject constructor( return@withState } - val shouldCloseInviteView = state.pagedList?.value?.size == 1 - viewModelScope.launch { try { session.roomService().leaveRoom(roomId) @@ -81,9 +97,6 @@ class InvitesViewModel @AssistedInject constructor( // Instead, we wait for the room to be rejected // Known bug: if the user is invited again (after rejecting the first invitation), the loading will be displayed instead of the buttons. // If we update the state, the button will be displayed again, so it's not ideal... - if (shouldCloseInviteView) { - _viewEvents.post(InvitesViewEvents.Close) - } } catch (failure: Throwable) { // Notify the user _viewEvents.post(InvitesViewEvents.Failure(failure)) @@ -101,9 +114,7 @@ class InvitesViewModel @AssistedInject constructor( } // close invites view when navigate to a room from the last one invite - val shouldCloseInviteView = state.pagedList?.value?.size == 1 - - _viewEvents.post(InvitesViewEvents.OpenRoom(action.roomSummary, shouldCloseInviteView)) + val shouldCloseInviteView = invitesCount == 1 // quick echo setState { @@ -117,6 +128,8 @@ class InvitesViewModel @AssistedInject constructor( } ) } + + _viewEvents.post(InvitesViewEvents.OpenRoom(action.roomSummary, shouldCloseInviteView)) } private fun observeInvites() { @@ -129,8 +142,26 @@ class InvitesViewModel @AssistedInject constructor( sortOrder = RoomSortOrder.ACTIVITY ) - setState { - copy(pagedList = pagedList) - } + pagedList.asFlow() + .map { + if (it.isEmpty()) { + InvitesContentState.Empty( + title = stringProvider.getString(R.string.invites_empty_title), + image = drawableProvider.getDrawable(R.drawable.ic_invites_empty), + message = stringProvider.getString(R.string.invites_empty_message) + ) + } else { + invitesCount = it.loadedCount + InvitesContentState.Content(it) + } + } + .catch { + emit(InvitesContentState.Error(it)) + } + .onStart { + emit(InvitesContentState.Loading) + }.onEach { + _invites.emit(it) + }.launchIn(viewModelScope) } } diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesViewState.kt b/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesViewState.kt index 708db29604..397042a96a 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesViewState.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesViewState.kt @@ -16,13 +16,24 @@ package im.vector.app.features.home.room.list.home.invites -import androidx.lifecycle.LiveData +import android.graphics.drawable.Drawable import androidx.paging.PagedList import com.airbnb.mvrx.MavericksState import org.matrix.android.sdk.api.session.room.members.ChangeMembershipState import org.matrix.android.sdk.api.session.room.model.RoomSummary data class InvitesViewState( - val pagedList: LiveData<PagedList<RoomSummary>>? = null, val roomMembershipChanges: Map<String, ChangeMembershipState> = emptyMap(), ) : MavericksState + +sealed class InvitesContentState { + object Loading : InvitesContentState() + data class Empty( + val title: CharSequence, + val image: Drawable?, + val message: CharSequence + ) : InvitesContentState() + + data class Content(val content: PagedList<RoomSummary>) : InvitesContentState() + data class Error(val throwable: Throwable) : InvitesContentState() +} diff --git a/vector/src/main/res/drawable/ic_invites_empty.xml b/vector/src/main/res/drawable/ic_invites_empty.xml new file mode 100644 index 0000000000..79908ff380 --- /dev/null +++ b/vector/src/main/res/drawable/ic_invites_empty.xml @@ -0,0 +1,14 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="60dp" + android:height="60dp" + android:viewportWidth="60" + android:viewportHeight="60"> + <path + android:pathData="M30,30m-30,0a30,30 0,1 1,60 0a30,30 0,1 1,-60 0" + android:fillColor="#E3E8F0"/> + <path + android:pathData="M25.665,33.544L15.229,23.209L29.236,13.398C29.993,12.868 31.007,12.868 31.764,13.398L45.771,23.209L35.247,33.631L33.851,32.446C31.93,30.816 29.11,30.778 27.145,32.355L25.665,33.544ZM22.439,36.134L14,42.91V27.777L22.439,36.134ZM47,27.777V43.606L38.393,36.301L47,27.777ZM31.177,35.566L43.47,46H16.714L29.733,35.546C30.156,35.208 30.765,35.216 31.177,35.566Z" + android:strokeWidth="2" + android:fillColor="#737D8C" + android:strokeColor="#737D8C"/> +</vector> diff --git a/vector/src/main/res/layout/fragment_invites.xml b/vector/src/main/res/layout/fragment_invites.xml index 74226357c9..070cad5ec8 100644 --- a/vector/src/main/res/layout/fragment_invites.xml +++ b/vector/src/main/res/layout/fragment_invites.xml @@ -20,17 +20,24 @@ </com.google.android.material.appbar.AppBarLayout> - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/invites_recycler" + <im.vector.app.core.platform.StateView + android:id="@+id/invites_state_view" android:layout_width="0dp" android:layout_height="0dp" - android:fastScrollEnabled="true" - android:overScrollMode="always" - android:scrollbars="vertical" - app:layout_behavior="@string/appbar_scrolling_view_behavior" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/appBarLayout" /> + app:layout_constraintTop_toBottomOf="@id/appBarLayout"> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/invites_recycler" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:fastScrollEnabled="true" + android:overScrollMode="always" + android:scrollbars="vertical" /> + + </im.vector.app.core.platform.StateView> + </androidx.constraintlayout.widget.ConstraintLayout> diff --git a/vector/src/main/res/values/strings.xml b/vector/src/main/res/values/strings.xml index f8eb4b8de0..178feb2223 100644 --- a/vector/src/main/res/values/strings.xml +++ b/vector/src/main/res/values/strings.xml @@ -445,6 +445,9 @@ <!-- Invites fragment --> <string name="invites_title">Invites</string> + <string name="invites_empty_title">Nothing new.</string> + <string name="invites_empty_message">This is where your new requests and invites will be.</string> + <!-- People fragment --> <string name="direct_chats_header">Conversations</string> <string name="matrix_only_filter">Matrix contacts only</string> From da7355049310179dc18dc982c429dd2105e68a33 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Sep 2022 23:10:39 +0000 Subject: [PATCH 02/57] Bump android-embedded_fcm_distributor from 2.1.2 to 2.1.3 Bumps android-embedded_fcm_distributor from 2.1.2 to 2.1.3. --- updated-dependencies: - dependency-name: com.github.UnifiedPush:android-embedded_fcm_distributor dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> --- vector/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vector/build.gradle b/vector/build.gradle index ee549fc4b6..51ee8b561c 100644 --- a/vector/build.gradle +++ b/vector/build.gradle @@ -264,7 +264,7 @@ dependencies { // UnifiedPush implementation 'com.github.UnifiedPush:android-connector:2.0.1' // UnifiedPush gplay flavor only - gplayImplementation('com.github.UnifiedPush:android-embedded_fcm_distributor:2.1.2') { + gplayImplementation('com.github.UnifiedPush:android-embedded_fcm_distributor:2.1.3') { exclude group: 'com.google.firebase', module: 'firebase-core' exclude group: 'com.google.firebase', module: 'firebase-analytics' exclude group: 'com.google.firebase', module: 'firebase-measurement-connector' From ad360074bf523abd9b9017a2ab8c1c1ee87384ae Mon Sep 17 00:00:00 2001 From: Germain <germain@souquet.com> Date: Fri, 2 Sep 2022 15:54:08 +0100 Subject: [PATCH 03/57] Remove threads board automation The threads board has been closed and is now replaced by the Delight board --- .github/workflows/triage-labelled.yml | 26 -------------------------- 1 file changed, 26 deletions(-) diff --git a/.github/workflows/triage-labelled.yml b/.github/workflows/triage-labelled.yml index f478d2bd7b..174e3c54c0 100644 --- a/.github/workflows/triage-labelled.yml +++ b/.github/workflows/triage-labelled.yml @@ -142,32 +142,6 @@ jobs: env: PROJECT_ID: "PN_kwDOAM0swc2KCw" GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }} - - move_threads_issues: - name: A-Threads to Thread board - runs-on: ubuntu-latest - # Skip in forks - if: > - github.repository == 'vector-im/element-android' && - contains(github.event.issue.labels.*.name, 'A-Threads') - steps: - - uses: octokit/graphql-action@v2.x - with: - headers: '{"GraphQL-Features": "projects_next_graphql"}' - query: | - mutation add_to_project($projectid:ID!,$contentid:ID!) { - addProjectNextItem(input:{projectId:$projectid contentId:$contentid}) { - projectNextItem { - id - } - } - } - projectid: ${{ env.PROJECT_ID }} - contentid: ${{ github.event.issue.node_id }} - env: - PROJECT_ID: "PN_kwDOAM0swc0rRA" - GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }} - move_message_bubbles_issues: name: A-Message-Bubbles to Message bubbles board runs-on: ubuntu-latest From 0f4deb70670a0417d5039a567ed27161f2ab16bb Mon Sep 17 00:00:00 2001 From: bmarty <bmarty@users.noreply.github.com> Date: Mon, 5 Sep 2022 00:03:36 +0000 Subject: [PATCH 04/57] Sync analytics plan --- .../features/analytics/plan/Interaction.kt | 51 +++++++++++++++++++ .../features/analytics/plan/MobileScreen.kt | 15 ++++++ .../features/analytics/plan/UserProperties.kt | 28 ++++++++++ .../app/features/analytics/plan/ViewRoom.kt | 5 ++ 4 files changed, 99 insertions(+) diff --git a/vector/src/main/java/im/vector/app/features/analytics/plan/Interaction.kt b/vector/src/main/java/im/vector/app/features/analytics/plan/Interaction.kt index 6336faa74c..1df1b35439 100644 --- a/vector/src/main/java/im/vector/app/features/analytics/plan/Interaction.kt +++ b/vector/src/main/java/im/vector/app/features/analytics/plan/Interaction.kt @@ -40,6 +40,46 @@ data class Interaction( ) : VectorAnalyticsEvent { enum class Name { + /** + * User tapped the All filter in the All Chats filter tab. + */ + MobileAllChatsFilterAll, + + /** + * User tapped the Favourites filter in the All Chats filter tab. + */ + MobileAllChatsFilterFavourites, + + /** + * User tapped the People filter in the All Chats filter tab. + */ + MobileAllChatsFilterPeople, + + /** + * User tapped the Unreads filter in the All Chats filter tab. + */ + MobileAllChatsFilterUnreads, + + /** + * User disabled filters from the all chats layout settings. + */ + MobileAllChatsFiltersDisabled, + + /** + * User enabled filters from the all chats layout settings. + */ + MobileAllChatsFiltersEnabled, + + /** + * User disabled recents from the all chats layout settings. + */ + MobileAllChatsRecentsDisabled, + + /** + * User enabled recents from the all chats layout settings. + */ + MobileAllChatsRecentsEnabled, + /** * User tapped on Add to Home button on Room Details screen. */ @@ -60,6 +100,11 @@ data class Interaction( */ MobileRoomThreadSummaryItem, + /** + * User validated the creation of a new space. + */ + MobileSpaceCreationValidated, + /** * User tapped on the filter button on ThreadList screen. */ @@ -81,6 +126,12 @@ data class Interaction( */ SpacePanelSwitchSpace, + /** + * User tapped an unselected sub space from the space list -> space + * switching should occur. + */ + SpacePanelSwitchSubSpace, + /** * User clicked the create room button in the add existing room to space * dialog in Element Web/Desktop. diff --git a/vector/src/main/java/im/vector/app/features/analytics/plan/MobileScreen.kt b/vector/src/main/java/im/vector/app/features/analytics/plan/MobileScreen.kt index 3ce3dfb578..7ea41e2d78 100644 --- a/vector/src/main/java/im/vector/app/features/analytics/plan/MobileScreen.kt +++ b/vector/src/main/java/im/vector/app/features/analytics/plan/MobileScreen.kt @@ -43,6 +43,11 @@ data class MobileScreen( */ CreateRoom, + /** + * The screen shown to create a new space. + */ + CreateSpace, + /** * The confirmation screen shown before deactivating an account. */ @@ -78,6 +83,11 @@ data class MobileScreen( */ InviteFriends, + /** + * Room accessed via space bottom sheet list. + */ + Invites, + /** * The screen that displays the login flow (when the user already has an * account). @@ -261,6 +271,11 @@ data class MobileScreen( */ Sidebar, + /** + * Room accessed via space bottom sheet list. + */ + SpaceBottomSheet, + /** * Screen that displays the list of rooms and spaces of a space. */ diff --git a/vector/src/main/java/im/vector/app/features/analytics/plan/UserProperties.kt b/vector/src/main/java/im/vector/app/features/analytics/plan/UserProperties.kt index 77be2456cd..d6fa918b8e 100644 --- a/vector/src/main/java/im/vector/app/features/analytics/plan/UserProperties.kt +++ b/vector/src/main/java/im/vector/app/features/analytics/plan/UserProperties.kt @@ -44,6 +44,10 @@ data class UserProperties( * Whether the user has the people space enabled. */ val webMetaSpacePeopleEnabled: Boolean? = null, + /** + * The active filter in the All Chats screen + */ + val allChatsActiveFilter: AllChatsActiveFilter? = null, /** * The selected messaging use case during the onboarding flow. */ @@ -80,6 +84,29 @@ data class UserProperties( WorkMessaging, } + enum class AllChatsActiveFilter { + + /** + * Filters are activated and All is selected + */ + All, + + /** + * Filters are activated and Favourites is selected + */ + Favourites, + + /** + * Filters are activated and People is selected + */ + People, + + /** + * Filters are activated and Unreads is selected + */ + Unreads, + } + fun getProperties(): Map<String, Any>? { return mutableMapOf<String, Any>().apply { webMetaSpaceFavouritesEnabled?.let { put("WebMetaSpaceFavouritesEnabled", it) } @@ -87,6 +114,7 @@ data class UserProperties( webMetaSpaceHomeEnabled?.let { put("WebMetaSpaceHomeEnabled", it) } webMetaSpaceOrphansEnabled?.let { put("WebMetaSpaceOrphansEnabled", it) } webMetaSpacePeopleEnabled?.let { put("WebMetaSpacePeopleEnabled", it) } + allChatsActiveFilter?.let { put("allChatsActiveFilter", it.name) } ftueUseCaseSelection?.let { put("ftueUseCaseSelection", it.name) } numFavouriteRooms?.let { put("numFavouriteRooms", it) } numSpaces?.let { put("numSpaces", it) } diff --git a/vector/src/main/java/im/vector/app/features/analytics/plan/ViewRoom.kt b/vector/src/main/java/im/vector/app/features/analytics/plan/ViewRoom.kt index f6a724304b..366979025a 100644 --- a/vector/src/main/java/im/vector/app/features/analytics/plan/ViewRoom.kt +++ b/vector/src/main/java/im/vector/app/features/analytics/plan/ViewRoom.kt @@ -110,6 +110,11 @@ data class ViewRoom( */ MobileSearchContactDetail, + /** + * Room accessed via space bottom sheet list. + */ + MobileSpaceBottomSheet, + /** * Room accessed via interacting with direct chat item in the space * contact detail screen. From b37996e4c3a054f6faf6dea37869040873ebf150 Mon Sep 17 00:00:00 2001 From: Nikita Fedrunov <66663241+fedrunov@users.noreply.github.com> Date: Mon, 5 Sep 2022 16:11:50 +0200 Subject: [PATCH 05/57] space switcher empty spaces (#6988) --- changelog.d/6754.bugfix | 1 + .../src/main/res/values/strings.xml | 4 ++ .../app/features/spaces/SpaceListFragment.kt | 16 ++++++- .../main/res/layout/fragment_space_list.xml | 44 +++++++++++++++++++ 4 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 changelog.d/6754.bugfix diff --git a/changelog.d/6754.bugfix b/changelog.d/6754.bugfix new file mode 100644 index 0000000000..e9f6960595 --- /dev/null +++ b/changelog.d/6754.bugfix @@ -0,0 +1 @@ +[App Layout] - space switcher now has empty state diff --git a/library/ui-strings/src/main/res/values/strings.xml b/library/ui-strings/src/main/res/values/strings.xml index df0e10627a..6b44377b79 100644 --- a/library/ui-strings/src/main/res/values/strings.xml +++ b/library/ui-strings/src/main/res/values/strings.xml @@ -442,6 +442,10 @@ <string name="system_alerts_header">"System Alerts"</string> <string name="suggested_header">Suggested Rooms</string> + <!-- Space List fragment --> + <string name="space_list_empty_title">No spaces yet.</string> + <string name="space_list_empty_message">Spaces are a new way to group rooms and people. Create a space to get started.</string> + <!-- Invites fragment --> <string name="invites_title">Invites</string> diff --git a/vector/src/main/java/im/vector/app/features/spaces/SpaceListFragment.kt b/vector/src/main/java/im/vector/app/features/spaces/SpaceListFragment.kt index ca9279cb37..0153d64df7 100644 --- a/vector/src/main/java/im/vector/app/features/spaces/SpaceListFragment.kt +++ b/vector/src/main/java/im/vector/app/features/spaces/SpaceListFragment.kt @@ -21,6 +21,7 @@ import android.view.HapticFeedbackConstants import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.core.view.isVisible import com.airbnb.epoxy.EpoxyTouchHelper import com.airbnb.mvrx.Loading import com.airbnb.mvrx.Success @@ -28,6 +29,7 @@ import com.airbnb.mvrx.Uninitialized import com.airbnb.mvrx.fragmentViewModel import com.airbnb.mvrx.withState import dagger.hilt.android.AndroidEntryPoint +import im.vector.app.core.epoxy.onClick import im.vector.app.core.extensions.cleanup import im.vector.app.core.extensions.configureWith import im.vector.app.core.platform.StateView @@ -71,6 +73,7 @@ class SpaceListFragment : homeActivitySharedActionViewModel = activityViewModelProvider[HomeSharedActionViewModel::class.java] roomListSharedActionViewModel = activityViewModelProvider[RoomListSharedActionViewModel::class.java] views.stateView.contentView = views.groupListView + views.spacesEmptyButton.onClick { onAddSpaceSelected() } setupSpaceController() observeViewEvents() } @@ -147,13 +150,22 @@ class SpaceListFragment : } override fun invalidate() = withState(viewModel) { state -> - when (state.asyncSpaces) { + when (val spaces = state.asyncSpaces) { Uninitialized, is Loading -> { views.stateView.state = StateView.State.Loading return@withState } - is Success -> views.stateView.state = StateView.State.Content + is Success -> { + views.stateView.state = StateView.State.Content + if (spaces.invoke().isEmpty()) { + views.spacesEmptyGroup.isVisible = true + views.groupListView.isVisible = false + } else { + views.spacesEmptyGroup.isVisible = false + views.groupListView.isVisible = true + } + } else -> Unit } diff --git a/vector/src/main/res/layout/fragment_space_list.xml b/vector/src/main/res/layout/fragment_space_list.xml index d54ffa7155..8dfbb4a9c6 100644 --- a/vector/src/main/res/layout/fragment_space_list.xml +++ b/vector/src/main/res/layout/fragment_space_list.xml @@ -12,4 +12,48 @@ android:overScrollMode="always" tools:listitem="@layout/item_space" /> + + <LinearLayout + android:id="@+id/spaces_empty_group" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:orientation="vertical" + android:padding="@dimen/layout_horizontal_margin" + android:visibility="gone" + tools:visibility="visible"> + + <TextView + android:id="@+id/spaces_empty_title" + style="@style/Widget.Vector.TextView.Subtitle" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center_horizontal" + android:gravity="center" + android:text="@string/space_list_empty_title" + android:textColor="?vctr_content_primary" + android:textStyle="bold" /> + + <TextView + android:id="@+id/spaces_empty_message" + style="@style/Widget.Vector.TextView.Body" + android:layout_width="220dp" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:layout_marginTop="20dp" + android:gravity="center" + android:text="@string/space_list_empty_message" + android:textColor="?vctr_content_secondary" /> + + <Button + android:id="@+id/spaces_empty_button" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:layout_marginTop="8dp" + android:minWidth="190dp" + android:text="@string/create_space" /> + + </LinearLayout> + </im.vector.app.core.platform.StateView> From ecd1776085092a96936f56230598a57d62b11281 Mon Sep 17 00:00:00 2001 From: NIkita Fedrunov <fedrunov@element.io> Date: Mon, 5 Sep 2022 16:51:38 +0200 Subject: [PATCH 06/57] removed obsolete cast --- .../features/home/room/list/home/invites/InvitesFragment.kt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesFragment.kt b/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesFragment.kt index 7fbc6f5c3f..f557483289 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesFragment.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesFragment.kt @@ -21,7 +21,6 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.lifecycle.lifecycleScope -import androidx.paging.PagedList import com.airbnb.mvrx.fragmentViewModel import dagger.hilt.android.AndroidEntryPoint import im.vector.app.core.extensions.configureWith @@ -75,8 +74,7 @@ class InvitesFragment : VectorBaseFragment<FragmentInvitesBinding>(), RoomListLi when (it) { is InvitesContentState.Content -> { views.invitesStateView.state = StateView.State.Content - Suppress("UNCHECKED_CAST") - controller.submitList(it.content as? PagedList<RoomSummary>) + controller.submitList(it.content) } is InvitesContentState.Empty -> { views.invitesStateView.state = StateView.State.Empty( From 7879289877d64fcde40787b5c1d6831746b44dcd Mon Sep 17 00:00:00 2001 From: Benoit Marty <benoit@matrix.org> Date: Mon, 5 Sep 2022 17:35:03 +0200 Subject: [PATCH 07/57] Remove useless field. They are defined in `vector-app` now. --- vector/build.gradle | 7 ------- 1 file changed, 7 deletions(-) diff --git a/vector/build.gradle b/vector/build.gradle index ee549fc4b6..4f8db05e73 100644 --- a/vector/build.gradle +++ b/vector/build.gradle @@ -78,17 +78,10 @@ android { productFlavors { gplay { dimension "store" - isDefault = true - - buildConfigField "String", "SHORT_FLAVOR_DESCRIPTION", "\"G\"" - buildConfigField "String", "FLAVOR_DESCRIPTION", "\"GooglePlay\"" } fdroid { dimension "store" - - buildConfigField "String", "SHORT_FLAVOR_DESCRIPTION", "\"F\"" - buildConfigField "String", "FLAVOR_DESCRIPTION", "\"FDroid\"" } } From bf25ef436979762324bbc9d56c07031f4c68c702 Mon Sep 17 00:00:00 2001 From: Benoit Marty <benoit@matrix.org> Date: Mon, 5 Sep 2022 17:40:34 +0200 Subject: [PATCH 08/57] There are no views to bind in this module. --- vector-app/build.gradle | 4 ---- 1 file changed, 4 deletions(-) diff --git a/vector-app/build.gradle b/vector-app/build.gradle index 2368586bfb..a8262fde40 100644 --- a/vector-app/build.gradle +++ b/vector-app/build.gradle @@ -340,10 +340,6 @@ android { "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi", ] } - - buildFeatures { - viewBinding true - } } dependencies { From 896895b43e1c57e379deb70a975cee6753732a48 Mon Sep 17 00:00:00 2001 From: ericdecanini <eddecanini@gmail.com> Date: Mon, 5 Sep 2022 17:46:17 +0200 Subject: [PATCH 09/57] Fixes sync state not visible in new layout --- vector/src/main/res/layout/fragment_new_home_detail.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vector/src/main/res/layout/fragment_new_home_detail.xml b/vector/src/main/res/layout/fragment_new_home_detail.xml index 82bc6bb36e..1be68cc163 100644 --- a/vector/src/main/res/layout/fragment_new_home_detail.xml +++ b/vector/src/main/res/layout/fragment_new_home_detail.xml @@ -39,7 +39,7 @@ android:layout_width="match_parent" android:layout_height="0dp" app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintTop_toBottomOf="@id/currentCallsView"> + app:layout_constraintTop_toBottomOf="@id/syncStateView"> <com.google.android.material.appbar.AppBarLayout android:id="@+id/appBarLayout" From 59f55beab1487aaa0f80d049830ad43518f9f052 Mon Sep 17 00:00:00 2001 From: Benoit Marty <benoit@matrix.org> Date: Mon, 5 Sep 2022 17:49:42 +0200 Subject: [PATCH 10/57] Moving manifest `manifest.application$name` attribute to the main manifest, to make it available for both fdroid and gplay variant. Fixes #6995. --- vector-app/src/gplay/AndroidManifest.xml | 2 +- vector-app/src/main/AndroidManifest.xml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/vector-app/src/gplay/AndroidManifest.xml b/vector-app/src/gplay/AndroidManifest.xml index bc74b9bb52..a5f0eae6be 100755 --- a/vector-app/src/gplay/AndroidManifest.xml +++ b/vector-app/src/gplay/AndroidManifest.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"> - <application android:name="im.vector.app.VectorApplication"> + <application> <!-- Firebase components --> <meta-data diff --git a/vector-app/src/main/AndroidManifest.xml b/vector-app/src/main/AndroidManifest.xml index 774fc43d48..84607cf3d7 100644 --- a/vector-app/src/main/AndroidManifest.xml +++ b/vector-app/src/main/AndroidManifest.xml @@ -4,6 +4,7 @@ package="im.vector.application"> <application + android:name="im.vector.app.VectorApplication" android:allowBackup="false" android:hasFragileUserData="true" android:icon="@mipmap/ic_launcher" From ae653eb672889317276ec4de4db6c6585e5a69a0 Mon Sep 17 00:00:00 2001 From: Jorge Martin Espinosa <jorgem@element.io> Date: Mon, 5 Sep 2022 17:57:16 +0200 Subject: [PATCH 11/57] Catch race condition while recording voice audio (#7009) --- changelog.d/6989.bugfix | 1 + .../room/detail/composer/AudioMessageHelper.kt | 18 +++++++++++------- .../composer/MessageComposerViewModel.kt | 6 +++++- 3 files changed, 17 insertions(+), 8 deletions(-) create mode 100644 changelog.d/6989.bugfix diff --git a/changelog.d/6989.bugfix b/changelog.d/6989.bugfix new file mode 100644 index 0000000000..cf740ca741 --- /dev/null +++ b/changelog.d/6989.bugfix @@ -0,0 +1 @@ +Catch race condition crash in voice recording diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/composer/AudioMessageHelper.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/composer/AudioMessageHelper.kt index 2e150daee6..7d25471e51 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/composer/AudioMessageHelper.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/composer/AudioMessageHelper.kt @@ -79,18 +79,19 @@ class AudioMessageHelper @Inject constructor( } fun stopRecording(): MultiPickerAudioType? { - tryOrNull("Cannot stop media recording amplitude") { - stopRecordingAmplitudes() - } val voiceMessageFile = tryOrNull("Cannot stop media recorder!") { voiceRecorder.stopRecord() voiceRecorder.getVoiceMessageFile() } - try { + tryOrNull("Cannot stop media recording amplitude") { + stopRecordingAmplitudes() + } + + return try { voiceMessageFile?.let { val outputFileUri = FileProvider.getUriForFile(context, buildMeta.applicationId + ".fileProvider", it, "Voice message.${it.extension}") - return outputFileUri + outputFileUri .toMultiPickerAudioType(context) ?.apply { waveform = if (amplitudeList.size < 50) { @@ -99,10 +100,13 @@ class AudioMessageHelper @Inject constructor( amplitudeList.chunked(amplitudeList.size / 50) { items -> items.maxOrNull() ?: 0 } } } - } ?: return null + } } catch (e: FileNotFoundException) { Timber.e(e, "Cannot stop voice recording") - return null + null + } catch (e: RuntimeException) { + Timber.e(e, "Error while retrieving metadata") + null } } diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/composer/MessageComposerViewModel.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/composer/MessageComposerViewModel.kt index ca86010915..7d67ec8c60 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/composer/MessageComposerViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/composer/MessageComposerViewModel.kt @@ -883,7 +883,11 @@ class MessageComposerViewModel @AssistedInject constructor( } private fun handlePlayOrPauseRecordingPlayback() { - audioMessageHelper.startOrPauseRecordingPlayback() + try { + audioMessageHelper.startOrPauseRecordingPlayback() + } catch (failure: Throwable) { + _viewEvents.post(MessageComposerViewEvents.VoicePlaybackOrRecordingFailure(failure)) + } } fun endAllVoiceActions(deleteRecord: Boolean = true) { From ad49b4513ce6206f76238919286e02f0b3e0009e Mon Sep 17 00:00:00 2001 From: ericdecanini <eddecanini@gmail.com> Date: Mon, 5 Sep 2022 18:07:22 +0200 Subject: [PATCH 12/57] Fixes recents background color not matching app bar --- .../room/list/home/recent/RecentRoomCarouselController.kt | 6 ++++++ vector/src/main/res/layout/item_recent_room.xml | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/home/recent/RecentRoomCarouselController.kt b/vector/src/main/java/im/vector/app/features/home/room/list/home/recent/RecentRoomCarouselController.kt index ebec912779..608a2f3484 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/home/recent/RecentRoomCarouselController.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/home/recent/RecentRoomCarouselController.kt @@ -23,6 +23,8 @@ import com.airbnb.epoxy.CarouselModelBuilder import com.airbnb.epoxy.EpoxyController import com.airbnb.epoxy.EpoxyModel import com.airbnb.epoxy.carousel +import com.google.android.material.color.MaterialColors +import im.vector.app.R import im.vector.app.features.home.AvatarRenderer import im.vector.app.features.home.room.list.RoomListListener import org.matrix.android.sdk.api.session.room.model.RoomSummary @@ -66,6 +68,10 @@ class RecentRoomCarouselController @Inject constructor( 0, host.itemSpacing) ) + onBind { _, view, _ -> + val colorSurface = MaterialColors.getColor(view, R.attr.colorSurface) + view.setBackgroundColor(colorSurface) + } withModelsFrom(data) { roomSummary -> val onClick = host.listener?.let { it::onRoomClicked } val onLongClick = host.listener?.let { it::onRoomLongClicked } diff --git a/vector/src/main/res/layout/item_recent_room.xml b/vector/src/main/res/layout/item_recent_room.xml index 8e17707ff3..56ed3c40c0 100644 --- a/vector/src/main/res/layout/item_recent_room.xml +++ b/vector/src/main/res/layout/item_recent_room.xml @@ -5,7 +5,7 @@ android:id="@+id/recentRoot" android:layout_width="60dp" android:layout_height="wrap_content" - android:background="?android:colorBackground" + android:background="?colorSurface" android:clickable="true" android:focusable="true" android:foreground="?attr/selectableItemBackground" From efe5eb0501ebe96b07a7a52e3ca839b1dd2e9acb Mon Sep 17 00:00:00 2001 From: Nikita Fedrunov <66663241+fedrunov@users.noreply.github.com> Date: Mon, 5 Sep 2022 18:11:25 +0200 Subject: [PATCH 13/57] App layout Home screen empty states (#7007) --- changelog.d/6835.feature | 1 + .../src/main/res/values/strings.xml | 10 ++++ .../im/vector/app/core/platform/StateView.kt | 5 +- .../room/list/home/HomeRoomListFragment.kt | 6 ++ .../room/list/home/HomeRoomListViewModel.kt | 55 ++++++++++++++++++ .../home/room/list/home/RoomListEmptyItem.kt | 40 +++++++++++++ .../filter/HomeFilteredRoomsController.kt | 23 +++++++- .../drawable-hdpi/ill_empty_all_chats.webp | Bin 0 -> 3960 bytes .../res/drawable-hdpi/ill_empty_space.webp | Bin 0 -> 2202 bytes .../res/drawable-hdpi/ill_empty_unreads.webp | Bin 0 -> 794 bytes .../drawable-mdpi/ill_empty_all_chats.webp | Bin 0 -> 2604 bytes .../res/drawable-mdpi/ill_empty_space.webp | Bin 0 -> 1440 bytes .../res/drawable-mdpi/ill_empty_unreads.webp | Bin 0 -> 556 bytes .../drawable-xhdpi/ill_empty_all_chats.webp | Bin 0 -> 5346 bytes .../res/drawable-xhdpi/ill_empty_space.webp | Bin 0 -> 2928 bytes .../res/drawable-xhdpi/ill_empty_unreads.webp | Bin 0 -> 1068 bytes .../drawable-xxhdpi/ill_empty_all_chats.webp | Bin 0 -> 8944 bytes .../res/drawable-xxhdpi/ill_empty_space.webp | Bin 0 -> 4562 bytes .../drawable-xxhdpi/ill_empty_unreads.webp | Bin 0 -> 1540 bytes .../drawable-xxxhdpi/ill_empty_all_chats.webp | Bin 0 -> 12010 bytes .../res/drawable-xxxhdpi/ill_empty_space.webp | Bin 0 -> 6368 bytes .../drawable-xxxhdpi/ill_empty_unreads.webp | Bin 0 -> 2034 bytes .../src/main/res/layout/item_state_view.xml | 8 +++ 23 files changed, 145 insertions(+), 3 deletions(-) create mode 100644 changelog.d/6835.feature create mode 100644 vector/src/main/java/im/vector/app/features/home/room/list/home/RoomListEmptyItem.kt create mode 100644 vector/src/main/res/drawable-hdpi/ill_empty_all_chats.webp create mode 100644 vector/src/main/res/drawable-hdpi/ill_empty_space.webp create mode 100644 vector/src/main/res/drawable-hdpi/ill_empty_unreads.webp create mode 100644 vector/src/main/res/drawable-mdpi/ill_empty_all_chats.webp create mode 100644 vector/src/main/res/drawable-mdpi/ill_empty_space.webp create mode 100644 vector/src/main/res/drawable-mdpi/ill_empty_unreads.webp create mode 100644 vector/src/main/res/drawable-xhdpi/ill_empty_all_chats.webp create mode 100644 vector/src/main/res/drawable-xhdpi/ill_empty_space.webp create mode 100644 vector/src/main/res/drawable-xhdpi/ill_empty_unreads.webp create mode 100644 vector/src/main/res/drawable-xxhdpi/ill_empty_all_chats.webp create mode 100644 vector/src/main/res/drawable-xxhdpi/ill_empty_space.webp create mode 100644 vector/src/main/res/drawable-xxhdpi/ill_empty_unreads.webp create mode 100644 vector/src/main/res/drawable-xxxhdpi/ill_empty_all_chats.webp create mode 100644 vector/src/main/res/drawable-xxxhdpi/ill_empty_space.webp create mode 100644 vector/src/main/res/drawable-xxxhdpi/ill_empty_unreads.webp create mode 100644 vector/src/main/res/layout/item_state_view.xml diff --git a/changelog.d/6835.feature b/changelog.d/6835.feature new file mode 100644 index 0000000000..e4e610f7e0 --- /dev/null +++ b/changelog.d/6835.feature @@ -0,0 +1 @@ +[App Layout] New empty states for home screen diff --git a/library/ui-strings/src/main/res/values/strings.xml b/library/ui-strings/src/main/res/values/strings.xml index 6b44377b79..26f26dc7e5 100644 --- a/library/ui-strings/src/main/res/values/strings.xml +++ b/library/ui-strings/src/main/res/values/strings.xml @@ -3244,4 +3244,14 @@ <item quantity="other">Consider signing out from old sessions (%1$d days or more) that you don’t use anymore.</item> </plurals> + <!-- Note to translators: %s will be replaces with selected space name --> + <string name="home_empty_space_no_rooms_title">%s\nis looking a little empty.</string> + <!-- Note to translators: for RTL languages, Spaces will be at the bottom left. Please translate "bottom-left" instead of "bottom-right". Thanks!--> + <string name="home_empty_space_no_rooms_message">Spaces are a new way to group rooms and people. Add an existing room, or create a new one, using the bottom-right button.</string> + <!-- Note to translators: %s will be replaces with current user displayname --> + <string name="home_empty_no_rooms_title">Welcome to ${app_name},\n%s.</string> + <string name="home_empty_no_rooms_message">The all-in-one secure chat app for teams, friends and organisations. Create a chat, or join an existing room, to get started.</string> + <string name="home_empty_no_unreads_title">Nothing to report.</string> + <string name="home_empty_no_unreads_message">This is where your unread messages will show up, when you have some.</string> + </resources> diff --git a/vector/src/main/java/im/vector/app/core/platform/StateView.kt b/vector/src/main/java/im/vector/app/core/platform/StateView.kt index 6f36787d0c..2fb99c705a 100755 --- a/vector/src/main/java/im/vector/app/core/platform/StateView.kt +++ b/vector/src/main/java/im/vector/app/core/platform/StateView.kt @@ -21,6 +21,7 @@ import android.graphics.drawable.Drawable import android.util.AttributeSet import android.view.View import android.widget.FrameLayout +import android.widget.ImageView import androidx.core.view.isVisible import im.vector.app.R import im.vector.app.core.extensions.updateConstraintSet @@ -36,7 +37,8 @@ class StateView @JvmOverloads constructor(context: Context, attrs: AttributeSet? val title: CharSequence? = null, val image: Drawable? = null, val isBigImage: Boolean = false, - val message: CharSequence? = null + val message: CharSequence? = null, + val imageScaleType: ImageView.ScaleType? = ImageView.ScaleType.FIT_CENTER, ) : State() data class Error(val message: CharSequence? = null) : State() @@ -79,6 +81,7 @@ class StateView @JvmOverloads constructor(context: Context, attrs: AttributeSet? is State.Content -> Unit is State.Loading -> Unit is State.Empty -> { + views.emptyImageView.scaleType = newState.imageScaleType views.emptyImageView.setImageDrawable(newState.image) views.emptyView.updateConstraintSet { it.constrainPercentHeight(R.id.emptyImageView, if (newState.isBigImage) 0.5f else 0.1f) diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/home/HomeRoomListFragment.kt b/vector/src/main/java/im/vector/app/features/home/room/list/home/HomeRoomListFragment.kt index 32635e3407..edb619cd90 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/home/HomeRoomListFragment.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/home/HomeRoomListFragment.kt @@ -199,11 +199,17 @@ class HomeRoomListFragment : ).also { controller -> controller.listener = this controller.onFilterChanged = ::onRoomFilterChanged + roomListViewModel.emptyStateFlow.onEach { emptyStateOptional -> + controller.submitEmptyStateData(emptyStateOptional.getOrNull()) + }.launchIn(lifecycleScope) section.filtersData.onEach { controller.submitFiltersData(it.getOrNull()) }.launchIn(lifecycleScope) section.list.observe(viewLifecycleOwner) { list -> controller.submitList(list) + if (list.isEmpty()) { + controller.requestForcedModelBuild() + } } }.adapter } diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/home/HomeRoomListViewModel.kt b/vector/src/main/java/im/vector/app/features/home/room/list/home/HomeRoomListViewModel.kt index 425f309202..021b979b2b 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/home/HomeRoomListViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/home/HomeRoomListViewModel.kt @@ -16,6 +16,7 @@ package im.vector.app.features.home.room.list.home +import android.widget.ImageView import androidx.lifecycle.map import androidx.paging.PagedList import arrow.core.toOption @@ -23,11 +24,14 @@ import com.airbnb.mvrx.MavericksViewModelFactory import dagger.assisted.Assisted import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject +import im.vector.app.R import im.vector.app.SpaceStateHandler import im.vector.app.core.di.MavericksAssistedViewModelFactory import im.vector.app.core.di.hiltMavericksViewModelFactory import im.vector.app.core.platform.StateView import im.vector.app.core.platform.VectorViewModel +import im.vector.app.core.resources.DrawableProvider +import im.vector.app.core.resources.StringProvider import im.vector.app.features.home.room.list.home.filter.HomeRoomFilter import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableSharedFlow @@ -52,6 +56,7 @@ import org.matrix.android.sdk.api.session.room.RoomSortOrder import org.matrix.android.sdk.api.session.room.RoomSummaryQueryParams import org.matrix.android.sdk.api.session.room.UpdatableLivePageResult import org.matrix.android.sdk.api.session.room.model.Membership +import org.matrix.android.sdk.api.session.room.model.RoomSummary import org.matrix.android.sdk.api.session.room.model.tag.RoomTag import org.matrix.android.sdk.api.session.room.roomSummaryQueryParams import org.matrix.android.sdk.api.session.room.state.isPublic @@ -63,6 +68,8 @@ class HomeRoomListViewModel @AssistedInject constructor( private val session: Session, private val spaceStateHandler: SpaceStateHandler, private val preferencesStore: HomeLayoutPreferencesStore, + private val stringProvider: StringProvider, + private val drawableProvider: DrawableProvider, ) : VectorViewModel<HomeRoomListViewState, HomeRoomListAction, HomeRoomListViewEvents>(initialState) { @AssistedFactory @@ -82,6 +89,10 @@ class HomeRoomListViewModel @AssistedInject constructor( private val _sections = MutableSharedFlow<Set<HomeRoomSection>>(replay = 1) val sections = _sections.asSharedFlow() + private var currentFilter: HomeRoomFilter = HomeRoomFilter.ALL + private val _emptyStateFlow = MutableSharedFlow<Optional<StateView.State.Empty>>(replay = 1) + val emptyStateFlow = _emptyStateFlow.asSharedFlow() + private var filteredPagedRoomSummariesLive: UpdatableLivePageResult? = null init { @@ -109,6 +120,7 @@ class HomeRoomListViewModel @AssistedInject constructor( } newSections.add(getFilteredRoomsSection()) + emitEmptyState() _sections.emit(newSections) setState { @@ -171,6 +183,7 @@ class HomeRoomListViewModel @AssistedInject constructor( liveResults.queryParams = liveResults.queryParams.copy( spaceFilter = selectedSpace?.roomId.toActiveSpaceOrNoFilter() ) + emitEmptyState() }.launchIn(viewModelScope) return HomeRoomSection.RoomSummaryData( @@ -179,6 +192,13 @@ class HomeRoomListViewModel @AssistedInject constructor( ) } + private fun emitEmptyState() { + viewModelScope.launch { + val emptyState = getEmptyStateData(currentFilter, spaceStateHandler.getCurrentSpace()) + _emptyStateFlow.emit(Optional.from(emptyState)) + } + } + private fun getFiltersDataFlow(): SharedFlow<Optional<List<HomeRoomFilter>>> { val flow = MutableSharedFlow<Optional<List<HomeRoomFilter>>>(replay = 1) @@ -250,6 +270,38 @@ class HomeRoomListViewModel @AssistedInject constructor( } } + private fun getEmptyStateData(filter: HomeRoomFilter, selectedSpace: RoomSummary?): StateView.State.Empty? { + return when (filter) { + HomeRoomFilter.ALL -> + if (selectedSpace != null) { + StateView.State.Empty( + title = stringProvider.getString(R.string.home_empty_space_no_rooms_title, selectedSpace.displayName), + message = stringProvider.getString(R.string.home_empty_space_no_rooms_message), + image = drawableProvider.getDrawable(R.drawable.ill_empty_space), + isBigImage = true + ) + } else { + val userName = session.userService().getUser(session.myUserId)?.displayName ?: "" + StateView.State.Empty( + title = stringProvider.getString(R.string.home_empty_no_rooms_title, userName), + message = stringProvider.getString(R.string.home_empty_no_rooms_message), + image = drawableProvider.getDrawable(R.drawable.ill_empty_all_chats), + isBigImage = true + ) + } + HomeRoomFilter.UNREADS -> + StateView.State.Empty( + title = stringProvider.getString(R.string.home_empty_no_unreads_title), + message = stringProvider.getString(R.string.home_empty_no_unreads_message), + image = drawableProvider.getDrawable(R.drawable.ill_empty_unreads), + isBigImage = true, + imageScaleType = ImageView.ScaleType.CENTER_INSIDE + ) + else -> + null + } + } + override fun handle(action: HomeRoomListAction) { when (action) { is HomeRoomListAction.SelectRoom -> handleSelectRoom(action) @@ -261,9 +313,12 @@ class HomeRoomListViewModel @AssistedInject constructor( } private fun handleChangeRoomFilter(action: HomeRoomListAction.ChangeRoomFilter) { + currentFilter = action.filter filteredPagedRoomSummariesLive?.let { liveResults -> liveResults.queryParams = getFilteredQueryParams(action.filter, liveResults.queryParams) } + + emitEmptyState() } fun isPublicRoom(roomId: String): Boolean { diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/home/RoomListEmptyItem.kt b/vector/src/main/java/im/vector/app/features/home/room/list/home/RoomListEmptyItem.kt new file mode 100644 index 0000000000..f7b3262529 --- /dev/null +++ b/vector/src/main/java/im/vector/app/features/home/room/list/home/RoomListEmptyItem.kt @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2022 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.app.features.home.room.list.home + +import com.airbnb.epoxy.EpoxyAttribute +import com.airbnb.epoxy.EpoxyModelClass +import im.vector.app.R +import im.vector.app.core.epoxy.VectorEpoxyHolder +import im.vector.app.core.epoxy.VectorEpoxyModel +import im.vector.app.core.platform.StateView + +@EpoxyModelClass +abstract class RoomListEmptyItem : VectorEpoxyModel<RoomListEmptyItem.Holder>(R.layout.item_state_view) { + + @EpoxyAttribute + lateinit var emptyData: StateView.State.Empty + + override fun bind(holder: Holder) { + super.bind(holder) + holder.stateView.state = emptyData + } + + class Holder : VectorEpoxyHolder() { + val stateView by bind<StateView>(R.id.stateView) + } +} diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/home/filter/HomeFilteredRoomsController.kt b/vector/src/main/java/im/vector/app/features/home/room/list/home/filter/HomeFilteredRoomsController.kt index 2d673bc089..789c9e9985 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/home/filter/HomeFilteredRoomsController.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/home/filter/HomeFilteredRoomsController.kt @@ -18,11 +18,13 @@ package im.vector.app.features.home.room.list.home.filter import com.airbnb.epoxy.EpoxyModel import com.airbnb.epoxy.paging.PagedListEpoxyController +import im.vector.app.core.platform.StateView import im.vector.app.core.utils.createUIHandler import im.vector.app.features.home.RoomListDisplayMode import im.vector.app.features.home.room.list.RoomListListener import im.vector.app.features.home.room.list.RoomSummaryItemFactory import im.vector.app.features.home.room.list.RoomSummaryItemPlaceHolder_ +import im.vector.app.features.home.room.list.home.roomListEmptyItem import org.matrix.android.sdk.api.session.room.members.ChangeMembershipState import org.matrix.android.sdk.api.session.room.model.RoomSummary @@ -44,6 +46,8 @@ class HomeFilteredRoomsController( var onFilterChanged: ((HomeRoomFilter) -> Unit)? = null private var filtersData: List<HomeRoomFilter>? = null + private var emptyStateData: StateView.State.Empty? = null + private var currentState: StateView.State = StateView.State.Content override fun addModels(models: List<EpoxyModel<*>>) { val host = this @@ -54,14 +58,29 @@ class HomeFilteredRoomsController( onFilterChangedListener(host.onFilterChanged) } } - super.addModels(models) + + if (models.isEmpty() && emptyStateData != null) { + emptyStateData?.let { emptyState -> + roomListEmptyItem { + id("state_item") + emptyData(emptyState) + } + currentState = emptyState + } + } else { + currentState = StateView.State.Content + super.addModels(models) + } + } + + fun submitEmptyStateData(state: StateView.State.Empty?) { + this.emptyStateData = state } fun submitFiltersData(data: List<HomeRoomFilter>?) { this.filtersData = data requestForcedModelBuild() } - override fun buildItemModel(currentPosition: Int, item: RoomSummary?): EpoxyModel<*> { item ?: return RoomSummaryItemPlaceHolder_().apply { id(currentPosition) } return roomSummaryItemFactory.create(item, roomChangeMembershipStates.orEmpty(), emptySet(), RoomListDisplayMode.ROOMS, listener) diff --git a/vector/src/main/res/drawable-hdpi/ill_empty_all_chats.webp b/vector/src/main/res/drawable-hdpi/ill_empty_all_chats.webp new file mode 100644 index 0000000000000000000000000000000000000000..6f5211b17e57fa7003d0fe6cd235906c0eb34d3c GIT binary patch literal 3960 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 literal 0 HcmV?d00001 diff --git a/vector/src/main/res/drawable-hdpi/ill_empty_space.webp b/vector/src/main/res/drawable-hdpi/ill_empty_space.webp new file mode 100644 index 0000000000000000000000000000000000000000..b33fe7937c4dd09c1206cf27d73c62b313ac7f74 GIT binary patch literal 2202 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 literal 0 HcmV?d00001 diff --git a/vector/src/main/res/drawable-hdpi/ill_empty_unreads.webp b/vector/src/main/res/drawable-hdpi/ill_empty_unreads.webp new file mode 100644 index 0000000000000000000000000000000000000000..ce94823cc763aed061f9cc92d958c2e47e956497 GIT binary patch literal 794 zcmV+#1LgcuNk&Ez0{{S5MM6+kP&il$0000G00015003G506|PpNVx$300EFy+jiYn z8-gGl2!bF8fglDogNT8}z+uob5CoUOfp8$4`>-8Z+V}Ap5fgwRW3Jn-=I(CVKFcG5 zV|q68o~@?YQZ>I(w=_?9n%}NjrU*~-F*g}5Jk7^lWvmbLp*0UA&4+I?%7^)cwhR$g zpL88SzI|GiyF`6rm3yN4)Ee)I=963OC+gFy^b&P~DxK6R?xD--B-b7vPIGxrjEBiv z&55>mvQu5IiE^=UX?3#Yia1*f7hZI{oQd<baFPjmIZ;M-l$>%pcyX!+%E^99PC5ao ztO|g}ssV7;21HsO@!*wFcvXDy+R%9IP+kh-WpLvEBaD|pc`0^Y4KH3_sJsd?uLmNp z2pBB@ja36sSXBUtRRRFxr1-sZ+71$@bO2+dI4+FxNiafkg2HFRc`!P10fkM))nHsy zE@9!4@n&Pv@U9pSlee(&SkSSusOTAX4vM~_3{*NnbUqbyk2ae{+!%E(jkr~GCKcQ) zI?uP@{yIwy7;&)~Y{8(?#%qFcvyNp8hL$>zm4MOZHHejf871p|RsyC?FTKNR!sMy8 zF4jr{$M`6pP3<?+eXBX*j}HJ=P&gnm0RR9{3ILq}Dq8?s06uLpmPe!`A|WBnIDid_ zX#mh5s;-j$07-vY!BZ|KQe@7q-UT3OQqLgF^yVNAig~I^O@*~7{3hMdv1#+TynE2F zW!J)<t0s%i0j27YLo@*X_N4#+IG_LK`@jFqJf#2R79Ln9bLS>DNGAR}t?>y*{De@@ z-5I{gG(cd=mpYDo!zXV8kMBt)2wag{X}*Ou9xT_+<BAv~Ho%#3hL=|NpN0?k7H43* zaP|Q*H@GQMiIO}BX)&b)i?q{}fBR`B%-L$SS+hRrj*hy-S=gjzilXkPcaIK85S%4} z6*CP93j3hT^rpx^yZtt&Z3|ooAqN(S){aPu9M=3Fp`_IiAfx}rghyBCe)l}GCsj`c Y&jMKW_{%^4<3uCkrb*-fYocHP0I0=lE&u=k literal 0 HcmV?d00001 diff --git a/vector/src/main/res/drawable-mdpi/ill_empty_all_chats.webp b/vector/src/main/res/drawable-mdpi/ill_empty_all_chats.webp new file mode 100644 index 0000000000000000000000000000000000000000..41c83c6b50f9b129de8459b88405a95b24f10a18 GIT binary patch literal 2604 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 OH}_x*B7pz^0001KUj70A literal 0 HcmV?d00001 diff --git a/vector/src/main/res/drawable-mdpi/ill_empty_space.webp b/vector/src/main/res/drawable-mdpi/ill_empty_space.webp new file mode 100644 index 0000000000000000000000000000000000000000..379bf44b6362eee9ff89dcb448d86cee0c2e088c GIT binary patch literal 1440 zcmV;R1z-A7Nk&GP1pok7MM6+kP&il$0000G0001=0065106|PpNS*@#00EFtYf~Lb zNI(J-A^{0;FgO?-G!7;X(hj;EAR!WvfP~sdmQ+<!|Gsx40)iw-Qk!Z!c2VoH7nlQH z;3iVMJsJ_US{8>$snSR-!67!fQj1u)5l1&9d=O6`VCKlC@5EQeK<EN`fWVz3+98Z2 zlLx>iqyV4^Y3R0zf_YXkt9i1RY@Q;f-~-<VzNh>+yiwd+Cpz{OR9txP{F<f+*{tk5 zmBy-Jh)1v;7)4jWlGl08uH8J8y!b<0b7jd%*YcSwj$dLtX5BST2%G75blly#`-_jV z9PuM@6=C#MGMnqpQyNd|^nIxp9dt{nr@r2!aGv4QcAT4jTMAat-8U=IysMffIHyKd zTuBz5qL?#qBW{=m&weAP#lp|~+A_`0_S%f&t&>1+b8m(zs*X7GuxY)b3+Z9zyiSQm zQZ+wsUaZz{ma9x#SE!bh(>^4L>Rm4)+^?8E_gnAB7q9J6aj{8-Zn?3W&H(GXR3)lm zNQrKjMGIQ&Hq_KemK&1bo><f<`1oPjNNTJ<EN|qx7C$g?HP0Ou{JI^TUZ~0|hz0fC zlX~4(-Puj#DW;Q~3i~KQ?R(I?i1B)rQ`M+4j?aMoru69ffSO_`T0yIgD=M`jagxC+ z)U}KN(t>>c^>>m%r!T-+hr`Qn;hIK|Q`1c&q~4Y97F%f|WpVWHiF;F)urO^i(HE7z z-l84JBE4LkV=Ua6)bQ;|KzA7b4SSp?!)rw1s~+*<4_3-`;#@iCW#1^W4!EvT>c)xF z>5#VbMUP`kUY^E8KH2vDT3w?Qs<v+!+%#Tnyc$`D%`^qaTf`3y`N|&7qz<`J$CtE? z8wv|MI~u#ShJ(o1EEStC+OLnXW8F9u97M(npx5EMEH2&0y$%3|@U(1~BFc-xg@edg zIhR6g=XS}s^OD4}*}4>`l9)@J#WIWF#)>p{AQ{gAPuo042H#1x$?V-{89KHJY$J^; zS`<bG;Yd#ZPeH(dVF=E5FpLF6Lq!xn*$ovOMup*M1kh;LQ7galxS@i?C;%LB`LEK? zv)<q1HB=B8n{7u}z_R*zU<^h>#X6kboZ}!eHo~K;{ro`2aau-b^3JW;SWg$u!5IfO znhOL@enm&RqhoLAXarCH{pT-88aj?AI%-Boj_6oi1?M;iZb;5y8=Ct<=(y;?eN_VX zF7B*?isHUihGh2SMhbw!YYpx~=>Ri}j-e%25LSES(aZr>P&gpe0RRB-5&)e6Dxd(Y z06uLrlt!c@A|Wi**kFJSiDz!!v(6g~`r9)37b54NA3y-Fw8hOLPFfY4bOVM*fvR6l z`_B%Y#4YuqrF0Aukc{qjPB<h+eFZ0E!oa0okNP{GXxmgXf*gVG1N<TR*noA5Wo|o1 ziK#+FBQ+8s(7xxDGSU}4E(51psrvFdDLU+?R=_pP*MIT1L^yWmOxJ($w(tM|{`>u0 zAN&9~7n)EX=1H-&PAUP$k67SFu?Keu<X5`h^`Z?&V*zdAR-gP`EEg#h!hie(Kx*RH z!zuIoc*LH_`#;qE9|VeU=KX15Bhp?0TKwEq`=rAEI%X+bEqLCOssI13tGAt;q$vtO z8+F@oSZpph;M6Q~OJ8M(0G(fEc#i-5HfRP-lln#f{;>(tfHq0h;qd<?@H2El6V*rX znMuRt_L8x>p)C%^pTCdXJc_e{T2`nS&|H!%1?qt&oB8wFfgmdn_sFY2MKjm&EATm! z^dPr01W?Z;1+wqSfH>`~pEp5NqXg`pkwR-OV0kUt-e=2Fn6;67^0KRA*}fJAdK(r% uoW8@pmz5lj{0z`p2@ouJ>w-a!Ys4(kKuqBbv)}*#1Vzpspa5@L)$RatPqr}t literal 0 HcmV?d00001 diff --git a/vector/src/main/res/drawable-mdpi/ill_empty_unreads.webp b/vector/src/main/res/drawable-mdpi/ill_empty_unreads.webp new file mode 100644 index 0000000000000000000000000000000000000000..4209c0591d7785760835d868440f82f5e99583f0 GIT binary patch literal 556 zcmV+{0@M9cNk&E_0ssJ4MM6+kP&il$0000G0000x0027x06|PpNE87800DqjZExM? zgCGckA_#^M1~Y?&LBb$q&@vDNhk+mzf_jfF?eaGwCIFqO)UBDjyXkorLR|V*KdhBw zh<az0aiTuZ${1E3yzzjqs}HxS7cCxg=|j5*ZQOy)!x|rA^T0+&b`Ra?v&DliA59*< ze!v#*%I{8|P~Q|!DX%Ptz7S6;Pntymu%{)U=9vM_qaaUAlBvv@>Lt^rnVMxX|94v^ zYnk+v=~6SzC6iDlg62_R&Qk%(!vHjk0)S+ZCuk1COUY4QK{IT4%h!0u?@;4S_;ii7 z;$v#Db{r&&WPAi{ag1@CTa=y9b&atSI!`w4TG5|Rqm(hU*a#I27wx5jkX-ec&V;xm z^I7f5+ExppGgeSIAnE`B0PqF?odGI506YLbZ7`Haq#~jrE)q!KfDMUh0L@S^2><Ie z@2ZnfEHe8VO*#G5)(Cr*{+}F-%ve}V4;R4;fB^pQxc~no|NqGc|NoCgNb$L_EiwP0 zLupA?o3ne7q=f#u#7R&zSvSPv*=<qt--&pOG;y&WOx~hyZb<)Io40!uZ-4zGPPsiD zZa+@hvqRx5KX_+h5+_K)CN1)$AjPQ6v8?JqxC#(N3aZ-99=IQ4kL@n4O)iF!NUp&R uXc3Vi0g<GE)Bf;DbzD;{I%x1s!nvi*|L%(a|037_$bJ9+kY;<U00006BK$T0 literal 0 HcmV?d00001 diff --git a/vector/src/main/res/drawable-xhdpi/ill_empty_all_chats.webp b/vector/src/main/res/drawable-xhdpi/ill_empty_all_chats.webp new file mode 100644 index 0000000000000000000000000000000000000000..c8374d11607dfca546052af7c20804d27792d4a5 GIT binary patch literal 5346 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 literal 0 HcmV?d00001 diff --git a/vector/src/main/res/drawable-xhdpi/ill_empty_space.webp b/vector/src/main/res/drawable-xhdpi/ill_empty_space.webp new file mode 100644 index 0000000000000000000000000000000000000000..c6d83f16c78f681359f12d16409f670a62f81190 GIT binary patch literal 2928 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 a;yEu0`>yT9Fag$?vo^%n@(_^E>EHl18j$w@ literal 0 HcmV?d00001 diff --git a/vector/src/main/res/drawable-xhdpi/ill_empty_unreads.webp b/vector/src/main/res/drawable-xhdpi/ill_empty_unreads.webp new file mode 100644 index 0000000000000000000000000000000000000000..14d2dbdf9a4c6d6fd6cfa8bae07722d73f2f2f9d GIT binary patch literal 1068 zcmV+{1k?LcNk&E_1ONb6MM6+kP&il$0000G0001Y004IY06|PpNHGEc00DqiZExP@ zgJ1}PPzZt$1~r43!OEavkTOUZ2tvj{5ClON{Yz}=oLxr51fc)IbzVf({8@KdZ;cCr z=eDXJtZU<_N)z*wZLJheY2uwqrAYW;-t)pyuz2@-jeymM)H)iA534*9i4VQdFhAyl z+wT}89-z_yKjtA?>#f{9%zNpI{yb2njxOq<Ds?lN2WwL&R}c8w#nnT;c5wBeucu8O z_H+_iTy{By)B{&KLp}7p9C!EN?}z<(`0XIF_>7KGPf!l|^%UCyWH}gp_wXd;EA}+` z8_h$$sGcZ)rkUtR)l=n9_FUux_GJ0pBb((7dA3$w)pWeQl6>R^dBWwXX4IaxjO58O zG63u;GthEsz?RbnXikdaNf*wFTUPa!)x2f3NLI3ErJ9y!ZE5|ZTUwfxrnO5}^2lnN zv%1x+8fV2Ns{+kQfi0&EXgM{2b7BCNkpX~Yv^}+q>Ql*xo*?-MUbcMdt77TUD?GAU z@RqaTcaU6me8{=fPoSA7KITm7XOKJ;UveJ&4J3;NUz6ov^c`9bHykM$C=Mly&*&Jm z_!^F$qnmMf*<;gk97rQm!kHI~%LwOAaZNb8Mpbcsjj5u?8c{``lSN|_dL@lTFX)#v zl0QP%a~yL)=gnfUhW<$-5W<i*8_gO<rN>x87?^b&VGLe%3}pmZ_x^+tBtN>cg%K!K z=|x&Wv{Y9+%cK<q&281AbZv~_3%A=UyS^}0S?0<G{R042P&gpW0RRB74gj42DtG{R z06uLpmPn)`q9Gxgs(646iD?EX0STu$JOEp-YTdXzjim*>N81K!I#!@4G4=8(z5lh4 z5`={~a87WBgkQV=xLbVCl>uP2Prncw6jp0AtFZc-0^=zU%Pm=iPquXF!iL-O0c@@J z@148lCN{`UoiM3afB^pdtz&;BkAM7MWSzrjxGtyZzz=>NG95N|KmX>}|NP%~|M|B6 z_2BM^@BfSNZ|MXhzky(c<lq`WYRt}hUb+D4!%a;G7viy(vTn(}h9xh;ul(g{yiXT! z-tCg&Y0MUicV$$Kyk{F2N<TPUK3WDZwllWEp<*SzbYEmYH`D-4fFcNcAbp8(d_v^J zi`RkL(MGNX#?1Z!pfRocXI-1`<TLa-79kB&5mTvXDq?=NDM6L(7PEm|Y1#x&f)fDN z{OSY-mrFAw_#LvJuZLE+$*>2qTFRg2*(ER@0x&o5GT36N3|kp9(~w=IlPO04l{06l zcZa5<GC*OQ?wCT;OD@0!URkXiZJX*?D4+qdH>Jl3wrBtO#Q*;_{r~=Lz0acwkYWG) mXjyRf)cWtSmV{%e|I4POxLJT;NMQ53VeWP-<!_0+0001DEd53R literal 0 HcmV?d00001 diff --git a/vector/src/main/res/drawable-xxhdpi/ill_empty_all_chats.webp b/vector/src/main/res/drawable-xxhdpi/ill_empty_all_chats.webp new file mode 100644 index 0000000000000000000000000000000000000000..fc19311fafe25fe48dcde39ff97350e50e227425 GIT binary patch literal 8944 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 KjW7K-yZ;L=q&Ox3 literal 0 HcmV?d00001 diff --git a/vector/src/main/res/drawable-xxhdpi/ill_empty_space.webp b/vector/src/main/res/drawable-xxhdpi/ill_empty_space.webp new file mode 100644 index 0000000000000000000000000000000000000000..18b26b82fff025d3c023249332255cd3d98a3514 GIT binary patch literal 4562 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 literal 0 HcmV?d00001 diff --git a/vector/src/main/res/drawable-xxhdpi/ill_empty_unreads.webp b/vector/src/main/res/drawable-xxhdpi/ill_empty_unreads.webp new file mode 100644 index 0000000000000000000000000000000000000000..17127018ba55d38ae695abcdc0ed607103ebd58c GIT binary patch literal 1540 zcmV+f2K)I^Nk&He1pok7MM6+kP&il$0000G00029006T906|PpNJ|3%00Dqh+gjf0 zN<ab<A^{1J@Hu!mC=OZju+35kPG0usJK{}KXs^ac?z0qCorCFQlKR(o4@D{D>? zCQ$0;nAJ|*))X8QK4!H>b(M($C%IbVnrAmO7mHoAh#!;-#V)<dfTmlu%WL*y3B@{D z=5a`|j;f47)H<uuKT+$jO5Z}UPHX6wU#;WWcj~WN*XylE({9~Y-<_Kc@zxi=+aT3< z<geN=YwU%)+feVW3x2o3s_#IkHe3yt`?Dd(i`{I{w@YOk_WeTH2A;3tb{qQUF5z|? z{N}E(+wivwWFs&)cQ*=iV>cu5*3_TT7#j*kWN5}K6V*53)TrEC8+Rk~-o&5L85{7G zkLu4;BXm3MW|XFrypcMcqpWPF+>F+Eg0H+(f81iku7?GqHXNngl!L^`m1C40Jw%LN zIYRl-1H=fH-;|;9(`*!nUkXR%2X7=#-z_Yq@06wLz7eB2eDma~eBq5~_eq$Fp9)ju zgEOk#yO}F_w{Vr;DOdH)WMumnVJp5o*~%}<mI81_w*vxSGm!X-z>}{GY<wwTgkxgN z2gYV$OcG;hVJtrxdltsZ#+WK)m9c97Hde-}GNzPmg|YHv?71+O6JtpjlbNyL8JoZu zpnPq>!q*dsd?jG!D*%o!2SC|U09e?1zC^a<#j`cNpmL>nyKt4?30Lzw$CZ1B!c@V> z$dr6?O!-eJJU#Jc;7Pu5l_ka3iKYDA#FGCGg`<KW14r{OC=4ln7KY?EC_jn=g&#Qr z%8uetVMmTZ;YM+A;3gb}m6?pgedVS4;}CgCICEn~aq7g1KL?4EgtIqB6sP;jNA>3+ z@)6PEgN+B8bQ>4y+JLW2s7I@TiGX$^4-qXV782TCIC!A-g@Fa_Z{yo>LAQ-=cUOSh z#<n|LbQ#%#>psS{;L2%K3D=Heinw~v@zj9pdmYX0(L?tb%fq3Qv5uog^waAoc8{*6 zF(mZXYyb8M9Zt1xHKNac>DlVh?V!CX0bLjEkqWvm+8Y%NQM4yTFwD91q67@pFM7S2 zCX83sYn9+IW-sL`B|41U&5O2Hvp5hq$*Qerjvhq1kk;)S&2e_1bPAI4S~jiks%lwt zlG&rL09H^qAc_J201z7hodGJe0JH!;Z8Vrjq#~lBB6Zp5fDMUhZs5VM6brx~q#wv2 zfPMgefPVn;0Q>;`0R8}+?o%&Ge*i7fwQsN)K?SRj5}<oodf?07ct5+}nu)l@Uxe;T zS}+k{bdl^kV26&RjHS803dLVgM&*P2aO9A-;dL6KE9M}}=PEDIo%Yg&2>wCg;MInD zPrnx5jv@dhHPPBDb)s{nLS5PZBbc|hCt0!(FjSZe)$F1~2p66Yk_&y1V=d{){}7$i z!6j|?HL&*p0nx7Wxs@rGm_6aOb_7Xr=Juju^nd{V<GOwfD@ot3i%W{m?_YQMQR+^F z+=!JLlN!lxks-a&x{v?)ApigJFRuE|R(!w#dw)=~8qjfYvL2y`Ko4^4(ro;I5BC$} zWwM-!<XO7;XUwRcTzAULrJo~(mie*=v}N3>?x_AvU89E^BAfuB#?v>KLtS5PXuId0 z+_6eu@v-9lXDk;);>swIF(_6JaQa<rv`5eW*O)SXdB5QtZ|G?+Ga{~7w||y^fp5h3 z9kBNqblWIEmVs?{qNR~m@(eloSMl@ycW=fbI=sx+8s6F*!>c`I<Ks_2zM~Knz%=;_ zbe2L_E-JM(uu_&77?)aHI9y;}W_d^t&Y37oAJk_VdjZ1D2LsUviMuKq$m!F%g|L^W zR2fb`Y9;Ln1jf|FDp$)g=bSIG_@>{`o`+3g<rau5K(iugJ<3K6gJV-V=qqDW8CeGs zmO0x((i-ry$7~!OUwI4=Py}E93^*UV(*SRIEKvk+s3&+QZ~wy$nwm(lyt_h4svrC? q+pUY2@Ba)eUYba;trTd4okB6m4K{HBV+wc4cL_-7(i7+a0000Y|L<r3 literal 0 HcmV?d00001 diff --git a/vector/src/main/res/drawable-xxxhdpi/ill_empty_all_chats.webp b/vector/src/main/res/drawable-xxxhdpi/ill_empty_all_chats.webp new file mode 100644 index 0000000000000000000000000000000000000000..e020c33543458cf3188260a0da4d07eebd5f88a7 GIT binary patch literal 12010 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%0Ak;eZS5H0odlkcZ=cOVVUxWrvOLD^B|qBdKjZ4 z-~f}V=1fgnveq`<R@m?$tix?vZ<m#rYHD!Wr^!W;bnBOy(H!B@nylht_QF*A%0s;B zvGzvsX@qy*1!>+HK6-j`v-+~56&H!R2H2VA7=cF|Q`gCiK>Q*-4Rx`-sjoDxo5R(s zR;$Dx0em|plo|OotyKe0Fg@Y)b2$B{(Ha>TX0cx=Pl}PQZGB3Y*;@;GtL*M#+eFbc z47HjjyHoC+P1s)vzzWP>4)4N?;-A@Y$e?*(<ZK!=>A3DsI<|pZXAMq0JKlRiq$^fL zs?LNIfias#e6BlQ!|0F9y%XeDNYRqc?{Jw;lFOR?BQ+%JOUbLyQgK*z`R>h-RI0V4 zrS;gqq43{6AiL+=D3T|i`*`3qCae=mMcx#&=3L=;Mo2T}rU(e|yUZ=u`ye0?>5q{o z-(Eb6dPT(Ek*D{pRW+c~8ni2Tb-X72xcT9%Brjbsi~_P(maEZxzBCKCRRr=rHX{cf zsx!Z)9IZ+kf0*ewP&+1#jyDU#Gb4sX;#J+@+^X)w7L}+9tjqI`yzZ#2-y0$I;eagr zAbne(uaU)nX{vE`*DjZCidetzvAT1%WSS%;C<&J^zJ2&b@W(i=M79eXn_ucAR+QQ9 zY%pYa%k}lyH;1T%lKiVJt~dsn6(_^>g^2Nq?e>6i6gl$LAc1anto4YIQnj;zBY<m& zIM2HLo(_UI{Pj6<JhEWuE!v#2{R4Bi1H>@~YM~gnpeM(Ro*>a8S0=x#dbh!Ek63qO zhdH3xZkGC5CyGT^8goBuT9)p&BSlR}Ff_MUsiY+a={FL5X(FuX;Sz6LlKa!L%S0dA z!_;L-rJkH7-ng3fS;0l@Z1ZS<iWADUikl(lX`?t1*%Hq*;>a)qp-t&tH!%;T>hF(| z+@09pc@q<UON!BAzPRKvRS1mYfq@1rzMpTld@y%@)F$5-nRKfjeAzTUiV%abq~(pt zXS$oJA2jV>4K3*yAN~l%b)#*3gR6o5HELKaW69Rv>KNI}uIGrmN>82$iB1S}Klrh4 zrZp-Ez8EMETb^dIFBjYflQr@Pjmbfg_iyA!TS^CfM8y4*SCTIn%4w3W?St6TciDz4 z`F>^U2*EI@rK*oIPg!9@hb!u1L0h@xo{XvsVaq`EZK_X2F;}_+MfWSwTnK$+jHSd1 zyE5n0;Ll;`bq`sdcK)dMmzwguEd*-1UU`NEUmsSbjKqaxxg>(~ZLJyI2N7v~(iqdA zt5-_r?WI4_xNk~K!>nfL0_xKAhF81Q*3_E(e&O=C;H`lW@K_b8b1EF=Atfd*g6rZ` zpAp1kz>{rFFC5~11O@p(VL@9+Hq0(>ydT<cA0EEyE+C*>Lu!~?@KAaTPpY#RsOek% z@Qn(wo`?PZs4|hQoA4!f6zMr#sOrz~7qX_;d-1ipoUII5HV6omS7p!D>ALw{d8)u0 ze7}R#yR2@m`d^wJDn7$UerVLS%k<D$%d(xqqI{$nCeEMw@{5c`ph>jh!f|L`r*SKx z5fd_<({JCf6(6w$cWs@Bay<b(N8Cr2ARs7GD3HG{cpt!RUfW~yVFmrTR8ML8<WqH@ zmf!CKJ6e}#<_6^0v-P~)1@s`r9Qu$uT|gbhs&sx7-@OSyW$$aI@xjA=5?AuKr_K-% F{ugME8Jz$C literal 0 HcmV?d00001 diff --git a/vector/src/main/res/drawable-xxxhdpi/ill_empty_space.webp b/vector/src/main/res/drawable-xxxhdpi/ill_empty_space.webp new file mode 100644 index 0000000000000000000000000000000000000000..2c11bbafa0734350da0531549ae5471fae475c54 GIT binary patch literal 6368 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 z⁣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 RH9b$0nHSnIHyQwd{{nb&`M3Z8 literal 0 HcmV?d00001 diff --git a/vector/src/main/res/drawable-xxxhdpi/ill_empty_unreads.webp b/vector/src/main/res/drawable-xxxhdpi/ill_empty_unreads.webp new file mode 100644 index 0000000000000000000000000000000000000000..278fbfac0baa576537d478b011502b85d4e7761b GIT binary patch literal 2034 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 Q6^dW@VYWcpYYIRB091$HRsaA1 literal 0 HcmV?d00001 diff --git a/vector/src/main/res/layout/item_state_view.xml b/vector/src/main/res/layout/item_state_view.xml new file mode 100644 index 0000000000..3cf2e3e6d2 --- /dev/null +++ b/vector/src/main/res/layout/item_state_view.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<im.vector.app.core.platform.StateView xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/stateView" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?android:colorBackground"> + +</im.vector.app.core.platform.StateView> From 5e00fe54aeed2fc88fbcee2ab82aadd9c86332be Mon Sep 17 00:00:00 2001 From: ericdecanini <eddecanini@gmail.com> Date: Mon, 5 Sep 2022 18:39:12 +0200 Subject: [PATCH 14/57] Fixes bg and divider colors and top margin of recents --- .../list/home/recent/RecentRoomCarouselController.kt | 10 ++++++++-- vector/src/main/res/layout/item_invites_count.xml | 2 +- vector/src/main/res/layout/item_recent_room.xml | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/home/recent/RecentRoomCarouselController.kt b/vector/src/main/java/im/vector/app/features/home/room/list/home/recent/RecentRoomCarouselController.kt index 608a2f3484..0c5d9a3533 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/home/recent/RecentRoomCarouselController.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/home/recent/RecentRoomCarouselController.kt @@ -45,6 +45,12 @@ class RecentRoomCarouselController @Inject constructor( resources.displayMetrics ).toInt() + private val topPadding = TypedValue.applyDimension( + TypedValue.COMPLEX_UNIT_DIP, + 12f, + resources.displayMetrics + ).toInt() + private val itemSpacing = TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, 24f, @@ -63,13 +69,13 @@ class RecentRoomCarouselController @Inject constructor( id("recents_carousel") padding(Carousel.Padding( host.hPadding, - 0, + host.topPadding, host.hPadding, 0, host.itemSpacing) ) onBind { _, view, _ -> - val colorSurface = MaterialColors.getColor(view, R.attr.colorSurface) + val colorSurface = MaterialColors.getColor(view, R.attr.vctr_toolbar_background) view.setBackgroundColor(colorSurface) } withModelsFrom(data) { roomSummary -> diff --git a/vector/src/main/res/layout/item_invites_count.xml b/vector/src/main/res/layout/item_invites_count.xml index 8a5c2b1222..8ec4eb0279 100644 --- a/vector/src/main/res/layout/item_invites_count.xml +++ b/vector/src/main/res/layout/item_invites_count.xml @@ -50,7 +50,7 @@ android:layout_height="1dp" android:layout_marginStart="22dp" android:layout_marginEnd="16dp" - android:background="?vctr_list_separator_system" + android:background="?vctr_list_separator" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" /> diff --git a/vector/src/main/res/layout/item_recent_room.xml b/vector/src/main/res/layout/item_recent_room.xml index 56ed3c40c0..ef82784f8b 100644 --- a/vector/src/main/res/layout/item_recent_room.xml +++ b/vector/src/main/res/layout/item_recent_room.xml @@ -5,7 +5,7 @@ android:id="@+id/recentRoot" android:layout_width="60dp" android:layout_height="wrap_content" - android:background="?colorSurface" + android:background="?vctr_toolbar_background" android:clickable="true" android:focusable="true" android:foreground="?attr/selectableItemBackground" From 61cf3c3125a82c71e73bb271396fa4ab4084d17f Mon Sep 17 00:00:00 2001 From: NIkita Fedrunov <fedrunov@element.io> Date: Mon, 5 Sep 2022 18:56:43 +0200 Subject: [PATCH 15/57] review changes --- .../features/home/room/list/home/invites/InvitesViewModel.kt | 2 +- .../features/home/room/list/home/invites/InvitesViewState.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesViewModel.kt b/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesViewModel.kt index 1e5880d772..b8034d2364 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesViewModel.kt @@ -68,7 +68,7 @@ class InvitesViewModel @AssistedInject constructor( private val _invites = MutableSharedFlow<InvitesContentState>(replay = 1) val invites = _invites.asSharedFlow() - var invitesCount = -1 + private var invitesCount = -1 init { observeInvites() diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesViewState.kt b/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesViewState.kt index 397042a96a..12ce5cd9e4 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesViewState.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesViewState.kt @@ -26,7 +26,7 @@ data class InvitesViewState( val roomMembershipChanges: Map<String, ChangeMembershipState> = emptyMap(), ) : MavericksState -sealed class InvitesContentState { +sealed interface InvitesContentState { object Loading : InvitesContentState() data class Empty( val title: CharSequence, From 05f7850a0188b3115981a72f2cf0d8dcf3a4f72b Mon Sep 17 00:00:00 2001 From: ericdecanini <eddecanini@gmail.com> Date: Mon, 5 Sep 2022 20:28:11 +0200 Subject: [PATCH 16/57] Adds space name to expand / collapse chevron content description in space bottom sheet --- library/ui-strings/src/main/res/values/strings.xml | 6 ++++-- .../im/vector/app/features/spaces/NewSpaceSummaryItem.kt | 5 ++++- .../im/vector/app/features/spaces/NewSubSpaceSummaryItem.kt | 5 +++++ 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/library/ui-strings/src/main/res/values/strings.xml b/library/ui-strings/src/main/res/values/strings.xml index 26f26dc7e5..1317ec3c65 100644 --- a/library/ui-strings/src/main/res/values/strings.xml +++ b/library/ui-strings/src/main/res/values/strings.xml @@ -140,8 +140,10 @@ <string name="start_chat">Start Chat</string> <string name="create_room">Create Room</string> <string name="explore_rooms">Explore Rooms</string> - <string name="a11y_expand_space_children">Expand space children</string> - <string name="a11y_collapse_space_children">Collapse space children</string> + <!-- Note to translators: %s refers to the space whose children is being expanded --> + <string name="a11y_expand_space_children">Expand %s children</string> + <!-- Note to translators: %s refers to the space whose children is being collapsed --> + <string name="a11y_collapse_space_children">Collapse %s children</string> <!-- Last seen time --> diff --git a/vector/src/main/java/im/vector/app/features/spaces/NewSpaceSummaryItem.kt b/vector/src/main/java/im/vector/app/features/spaces/NewSpaceSummaryItem.kt index e6e4aadb9c..d59de6ac99 100644 --- a/vector/src/main/java/im/vector/app/features/spaces/NewSpaceSummaryItem.kt +++ b/vector/src/main/java/im/vector/app/features/spaces/NewSpaceSummaryItem.kt @@ -58,7 +58,10 @@ abstract class NewSpaceSummaryItem : VectorEpoxyModel<NewSpaceSummaryItem.Holder holder.chevron.setOnClickListener(onToggleExpandListener) holder.chevron.isVisible = hasChildren holder.chevron.setImageResource(if (expanded) R.drawable.ic_expand_more else R.drawable.ic_arrow_right) - holder.chevron.contentDescription = context.getString(if (expanded) R.string.a11y_collapse_space_children else R.string.a11y_expand_space_children) + holder.chevron.contentDescription = context.getString( + if (expanded) R.string.a11y_collapse_space_children else R.string.a11y_expand_space_children, + matrixItem.displayName, + ) avatarRenderer.render(matrixItem, holder.avatar) holder.unreadCounter.render(countState) diff --git a/vector/src/main/java/im/vector/app/features/spaces/NewSubSpaceSummaryItem.kt b/vector/src/main/java/im/vector/app/features/spaces/NewSubSpaceSummaryItem.kt index fae600917c..638cc09474 100644 --- a/vector/src/main/java/im/vector/app/features/spaces/NewSubSpaceSummaryItem.kt +++ b/vector/src/main/java/im/vector/app/features/spaces/NewSubSpaceSummaryItem.kt @@ -50,6 +50,7 @@ abstract class NewSubSpaceSummaryItem : VectorEpoxyModel<NewSubSpaceSummaryItem. override fun bind(holder: Holder) { super.bind(holder) + val context = holder.root.context holder.root.onClick(onSubSpaceSelectedListener) holder.name.text = matrixItem.displayName holder.root.isChecked = selected @@ -63,6 +64,10 @@ abstract class NewSubSpaceSummaryItem : VectorEpoxyModel<NewSubSpaceSummaryItem. ) holder.chevron.onClick(onToggleExpandListener) holder.chevron.isVisible = hasChildren + holder.chevron.contentDescription = context.getString( + if (expanded) R.string.a11y_collapse_space_children else R.string.a11y_expand_space_children, + matrixItem.displayName, + ) holder.indent.isVisible = indent > 0 holder.indent.updateLayoutParams { From 93ce7f8db55fe05e7db134fcd9fbfceadfe8543e Mon Sep 17 00:00:00 2001 From: ericdecanini <eddecanini@gmail.com> Date: Mon, 5 Sep 2022 20:52:45 +0200 Subject: [PATCH 17/57] Fixes home screen talkback jumping to fabs too early --- vector/src/main/res/layout/fragment_new_home_detail.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/vector/src/main/res/layout/fragment_new_home_detail.xml b/vector/src/main/res/layout/fragment_new_home_detail.xml index 82bc6bb36e..150673b486 100644 --- a/vector/src/main/res/layout/fragment_new_home_detail.xml +++ b/vector/src/main/res/layout/fragment_new_home_detail.xml @@ -127,7 +127,6 @@ android:layout_height="wrap_content" android:layout_marginEnd="16dp" android:layout_marginBottom="16dp" - android:accessibilityTraversalBefore="@id/roomListView" android:contentDescription="@string/a11y_create_message" android:src="@drawable/ic_new_chat" android:visibility="gone" From 289ed86be77450cf0372a76047643787f163871c Mon Sep 17 00:00:00 2001 From: ericdecanini <eddecanini@gmail.com> Date: Mon, 5 Sep 2022 20:53:03 +0200 Subject: [PATCH 18/57] Fixes recents carousel saying name twice in talkback --- vector/src/main/res/layout/item_recent_room.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/vector/src/main/res/layout/item_recent_room.xml b/vector/src/main/res/layout/item_recent_room.xml index 8e17707ff3..3e10d90e4e 100644 --- a/vector/src/main/res/layout/item_recent_room.xml +++ b/vector/src/main/res/layout/item_recent_room.xml @@ -50,6 +50,7 @@ android:layout_marginTop="4dp" android:layout_marginBottom="16dp" android:ellipsize="end" + android:importantForAccessibility="no" android:lines="1" android:textColor="?vctr_content_primary" app:layout_constraintBottom_toBottomOf="parent" From 14bce28c87a8d911b4ea100311d56113e0cabf3c Mon Sep 17 00:00:00 2001 From: ericdecanini <eddecanini@gmail.com> Date: Mon, 5 Sep 2022 21:17:59 +0200 Subject: [PATCH 19/57] Adds changelog file --- changelog.d/7016.wip | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/7016.wip diff --git a/changelog.d/7016.wip b/changelog.d/7016.wip new file mode 100644 index 0000000000..6918991a86 --- /dev/null +++ b/changelog.d/7016.wip @@ -0,0 +1 @@ +[New Layout] Improves talkback accessibility From 83b8a0ea9405954086c041692b8f144b2b7fef9a Mon Sep 17 00:00:00 2001 From: ericdecanini <eddecanini@gmail.com> Date: Mon, 5 Sep 2022 22:27:18 +0200 Subject: [PATCH 20/57] Fixes avatar not shown on fresh login --- .../app/features/home/NewHomeDetailFragment.kt | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/home/NewHomeDetailFragment.kt b/vector/src/main/java/im/vector/app/features/home/NewHomeDetailFragment.kt index f47da1e6a0..12dee92430 100644 --- a/vector/src/main/java/im/vector/app/features/home/NewHomeDetailFragment.kt +++ b/vector/src/main/java/im/vector/app/features/home/NewHomeDetailFragment.kt @@ -58,14 +58,11 @@ import im.vector.app.features.settings.VectorSettingsActivity.Companion.EXTRA_DI import im.vector.app.features.spaces.SpaceListBottomSheet import im.vector.app.features.workers.signout.BannerState import im.vector.app.features.workers.signout.ServerBackupStatusViewModel -import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach -import kotlinx.coroutines.launch import org.matrix.android.sdk.api.session.Session import org.matrix.android.sdk.api.session.crypto.model.DeviceInfo import org.matrix.android.sdk.api.session.room.model.RoomSummary -import org.matrix.android.sdk.api.util.toMatrixItem import javax.inject.Inject @AndroidEntryPoint @@ -322,12 +319,6 @@ class NewHomeDetailFragment : private fun setupToolbar() { setupToolbar(views.toolbar) - lifecycleScope.launch(Dispatchers.IO) { - session.userService().getUser(session.myUserId)?.let { user -> - avatarRenderer.render(user.toMatrixItem(), views.avatar) - } - } - views.collapsingToolbar.debouncedClicks(::openSpaceSettings) views.toolbar.debouncedClicks(::openSpaceSettings) @@ -373,9 +364,16 @@ class NewHomeDetailFragment : vectorPreferences.developerShowDebugInfo() ) + refreshAvatar() hasUnreadRooms = it.hasUnreadMessages } + private fun refreshAvatar() = withState(viewModel) { state -> + state.myMatrixItem?.let { user -> + avatarRenderer.render(user, views.avatar) + } + } + override fun onTapToReturnToCall() { callManager.getCurrentCall()?.let { call -> VectorCallActivity.newIntent( From 9a29c792332627c47f776bb301e3e4c875f596c6 Mon Sep 17 00:00:00 2001 From: NIkita Fedrunov <fedrunov@element.io> Date: Tue, 6 Sep 2022 00:41:58 +0200 Subject: [PATCH 21/57] obsolete settings are hidden when app layout flag is enabled --- changelog.d/6646.misc | 1 + .../im/vector/app/features/settings/VectorPreferences.kt | 5 +++++ .../app/features/settings/VectorSettingsLabsFragment.kt | 6 ++++++ .../features/settings/VectorSettingsPreferencesFragment.kt | 7 +++++++ vector/src/main/res/xml/vector_settings_preferences.xml | 4 +++- 5 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 changelog.d/6646.misc diff --git a/changelog.d/6646.misc b/changelog.d/6646.misc new file mode 100644 index 0000000000..0f2e3f0881 --- /dev/null +++ b/changelog.d/6646.misc @@ -0,0 +1 @@ +[App Layout] Obsolete settings are not shown when App Layout flag is enabled diff --git a/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt b/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt index cefbe64d9d..d60d0ea73a 100755 --- a/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt +++ b/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt @@ -165,6 +165,11 @@ class VectorPreferences @Inject constructor( const val SETTINGS_LABS_AUTO_REPORT_UISI = "SETTINGS_LABS_AUTO_REPORT_UISI" const val SETTINGS_PREF_SPACE_SHOW_ALL_ROOM_IN_HOME = "SETTINGS_PREF_SPACE_SHOW_ALL_ROOM_IN_HOME" + /** + * This is not preference, but category on preferences screen which contains [SETTINGS_PREF_SPACE_SHOW_ALL_ROOM_IN_HOME]. + * Needed to show/hide this category, depending on visibility of [SETTINGS_PREF_SPACE_SHOW_ALL_ROOM_IN_HOME]. */ + const val SETTINGS_PREF_SPACE_SHOW_ALL_ROOM_IN_HOME_CATEGORY = "SETTINGS_PREF_SPACE_SHOW_ALL_ROOM_IN_HOME_CATEGORY" + private const val SETTINGS_DEVELOPER_MODE_PREFERENCE_KEY = "SETTINGS_DEVELOPER_MODE_PREFERENCE_KEY" private const val SETTINGS_LABS_SHOW_HIDDEN_EVENTS_PREFERENCE_KEY = "SETTINGS_LABS_SHOW_HIDDEN_EVENTS_PREFERENCE_KEY" private const val SETTINGS_LABS_ENABLE_SWIPE_TO_REPLY = "SETTINGS_LABS_ENABLE_SWIPE_TO_REPLY" diff --git a/vector/src/main/java/im/vector/app/features/settings/VectorSettingsLabsFragment.kt b/vector/src/main/java/im/vector/app/features/settings/VectorSettingsLabsFragment.kt index eb7864a89d..c1253f4ab4 100644 --- a/vector/src/main/java/im/vector/app/features/settings/VectorSettingsLabsFragment.kt +++ b/vector/src/main/java/im/vector/app/features/settings/VectorSettingsLabsFragment.kt @@ -27,6 +27,7 @@ import im.vector.app.R import im.vector.app.core.preference.VectorSwitchPreference import im.vector.app.features.MainActivity import im.vector.app.features.MainActivityArgs +import im.vector.app.features.VectorFeatures import im.vector.app.features.analytics.plan.MobileScreen import im.vector.app.features.home.room.threads.ThreadsManager import org.matrix.android.sdk.api.settings.LightweightSettingsStorage @@ -39,6 +40,7 @@ class VectorSettingsLabsFragment : @Inject lateinit var vectorPreferences: VectorPreferences @Inject lateinit var lightweightSettingsStorage: LightweightSettingsStorage @Inject lateinit var threadsManager: ThreadsManager + @Inject lateinit var vectorFeatures: VectorFeatures override var titleRes = R.string.room_settings_labs_pref_title override val preferenceXmlRes = R.xml.vector_settings_labs @@ -72,6 +74,10 @@ class VectorSettingsLabsFragment : true } } + + findPreference<VectorSwitchPreference>(VectorPreferences.SETTINGS_LABS_UNREAD_NOTIFICATIONS_AS_TAB)!!.let { + it.isVisible = !vectorFeatures.isNewAppLayoutEnabled() + } } /** diff --git a/vector/src/main/java/im/vector/app/features/settings/VectorSettingsPreferencesFragment.kt b/vector/src/main/java/im/vector/app/features/settings/VectorSettingsPreferencesFragment.kt index 0bd5316b8f..458ba79ee3 100644 --- a/vector/src/main/java/im/vector/app/features/settings/VectorSettingsPreferencesFragment.kt +++ b/vector/src/main/java/im/vector/app/features/settings/VectorSettingsPreferencesFragment.kt @@ -28,9 +28,11 @@ import im.vector.app.core.dialogs.PhotoOrVideoDialog import im.vector.app.core.extensions.restart import im.vector.app.core.preference.VectorListPreference import im.vector.app.core.preference.VectorPreference +import im.vector.app.core.preference.VectorPreferenceCategory import im.vector.app.core.preference.VectorSwitchPreference import im.vector.app.features.MainActivity import im.vector.app.features.MainActivityArgs +import im.vector.app.features.VectorFeatures import im.vector.app.features.analytics.plan.MobileScreen import im.vector.app.features.settings.font.FontScaleSettingActivity import im.vector.app.features.themes.ThemeUtils @@ -44,6 +46,7 @@ class VectorSettingsPreferencesFragment : @Inject lateinit var vectorPreferences: VectorPreferences @Inject lateinit var fontScalePreferences: FontScalePreferences + @Inject lateinit var vectorFeatures: VectorFeatures override var titleRes = R.string.settings_preferences override val preferenceXmlRes = R.xml.vector_settings_preferences @@ -99,6 +102,10 @@ class VectorSettingsPreferencesFragment : } } + findPreference<VectorPreferenceCategory>(VectorPreferences.SETTINGS_PREF_SPACE_SHOW_ALL_ROOM_IN_HOME_CATEGORY)!!.let { pref -> + pref.isVisible = !vectorFeatures.isNewAppLayoutEnabled() + } + // Url preview /* TODO Note: we keep the setting client side for now diff --git a/vector/src/main/res/xml/vector_settings_preferences.xml b/vector/src/main/res/xml/vector_settings_preferences.xml index a3b8a3476c..7700de6986 100644 --- a/vector/src/main/res/xml/vector_settings_preferences.xml +++ b/vector/src/main/res/xml/vector_settings_preferences.xml @@ -30,7 +30,9 @@ </im.vector.app.core.preference.VectorPreferenceCategory> - <im.vector.app.core.preference.VectorPreferenceCategory android:title="@string/spaces"> + <im.vector.app.core.preference.VectorPreferenceCategory + android:title="@string/spaces" + android:key="SETTINGS_PREF_SPACE_SHOW_ALL_ROOM_IN_HOME_CATEGORY"> <im.vector.app.core.preference.VectorSwitchPreference android:defaultValue="false" From 0a1c7561bdaa05de92b47353f1487b4291a89098 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jorge=20Mart=C3=ADn?= <jorgem@element.io> Date: Mon, 5 Sep 2022 12:43:37 +0200 Subject: [PATCH 22/57] Use embedded libopus encoder for devices that somehow lack the official one --- changelog.d/7010.feature | 1 + .../room/detail/composer/AudioMessageHelper.kt | 2 +- .../features/voice/VoiceRecorderProvider.kt | 18 +++++++++++++++--- 3 files changed, 17 insertions(+), 4 deletions(-) create mode 100644 changelog.d/7010.feature diff --git a/changelog.d/7010.feature b/changelog.d/7010.feature new file mode 100644 index 0000000000..d6c7c85b3e --- /dev/null +++ b/changelog.d/7010.feature @@ -0,0 +1 @@ +Try to detect devices that lack Opus encoder support, use bundled libopus library for those. diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/composer/AudioMessageHelper.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/composer/AudioMessageHelper.kt index 7d25471e51..a5e899c672 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/composer/AudioMessageHelper.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/composer/AudioMessageHelper.kt @@ -48,7 +48,7 @@ class AudioMessageHelper @Inject constructor( ) { private var mediaPlayer: MediaPlayer? = null private var currentPlayingId: String? = null - private var voiceRecorder: VoiceRecorder = voiceRecorderProvider.provideVoiceRecorder() + private val voiceRecorder: VoiceRecorder by lazy { voiceRecorderProvider.provideVoiceRecorder() } private val amplitudeList = mutableListOf<Int>() diff --git a/vector/src/main/java/im/vector/app/features/voice/VoiceRecorderProvider.kt b/vector/src/main/java/im/vector/app/features/voice/VoiceRecorderProvider.kt index 28693ca287..3441d0231a 100644 --- a/vector/src/main/java/im/vector/app/features/voice/VoiceRecorderProvider.kt +++ b/vector/src/main/java/im/vector/app/features/voice/VoiceRecorderProvider.kt @@ -17,6 +17,8 @@ package im.vector.app.features.voice import android.content.Context +import android.media.MediaCodecList +import android.media.MediaFormat import android.os.Build import im.vector.app.features.VectorFeatures import kotlinx.coroutines.Dispatchers @@ -27,10 +29,20 @@ class VoiceRecorderProvider @Inject constructor( private val vectorFeatures: VectorFeatures, ) { fun provideVoiceRecorder(): VoiceRecorder { - return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q && vectorFeatures.forceUsageOfOpusEncoder().not()) { - VoiceRecorderQ(context) - } else { + return if (useFallbackRecorder()) { VoiceRecorderL(context, Dispatchers.IO) + } else { + VoiceRecorderQ(context) } } + + private fun useFallbackRecorder(): Boolean { + return Build.VERSION.SDK_INT < Build.VERSION_CODES.Q || !hasOpusEncoder() || vectorFeatures.forceUsageOfOpusEncoder() + } + + private fun hasOpusEncoder(): Boolean { + val codecList = MediaCodecList(MediaCodecList.ALL_CODECS) + val format = MediaFormat.createAudioFormat(MediaFormat.MIMETYPE_AUDIO_OPUS, 48000, 1) + return codecList.findEncoderForFormat(format) != null + } } From 891173c04af26d7d2f6b6319cc2afacdcdf5193b Mon Sep 17 00:00:00 2001 From: NIkita Fedrunov <fedrunov@element.io> Date: Tue, 6 Sep 2022 07:18:45 +0200 Subject: [PATCH 23/57] compilation error fixed --- .../home/room/list/home/invites/InvitesViewState.kt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesViewState.kt b/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesViewState.kt index 12ce5cd9e4..2f82c3fe76 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesViewState.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesViewState.kt @@ -27,13 +27,13 @@ data class InvitesViewState( ) : MavericksState sealed interface InvitesContentState { - object Loading : InvitesContentState() + object Loading : InvitesContentState data class Empty( val title: CharSequence, val image: Drawable?, val message: CharSequence - ) : InvitesContentState() + ) : InvitesContentState - data class Content(val content: PagedList<RoomSummary>) : InvitesContentState() - data class Error(val throwable: Throwable) : InvitesContentState() + data class Content(val content: PagedList<RoomSummary>) : InvitesContentState + data class Error(val throwable: Throwable) : InvitesContentState } From ee300cf11dd717570fa31dade5c733bea65da983 Mon Sep 17 00:00:00 2001 From: NIkita Fedrunov <fedrunov@element.io> Date: Tue, 6 Sep 2022 07:54:16 +0200 Subject: [PATCH 24/57] hide favourites and dms filters for a selected space, if they are empty --- .../room/list/home/HomeRoomListViewModel.kt | 47 ++++++++++++------- 1 file changed, 31 insertions(+), 16 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/home/HomeRoomListViewModel.kt b/vector/src/main/java/im/vector/app/features/home/room/list/home/HomeRoomListViewModel.kt index 021b979b2b..b52c4e0190 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/home/HomeRoomListViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/home/HomeRoomListViewModel.kt @@ -40,6 +40,7 @@ import kotlinx.coroutines.flow.asSharedFlow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.first +import kotlinx.coroutines.flow.flatMapLatest import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.onEach @@ -202,24 +203,38 @@ class HomeRoomListViewModel @AssistedInject constructor( private fun getFiltersDataFlow(): SharedFlow<Optional<List<HomeRoomFilter>>> { val flow = MutableSharedFlow<Optional<List<HomeRoomFilter>>>(replay = 1) - val favouritesFlow = session.flow() - .liveRoomSummaries( - RoomSummaryQueryParams.Builder().also { builder -> - builder.roomTagQueryFilter = RoomTagQueryFilter(true, null, null) - }.build() - ) - .map { it.isNotEmpty() } + val spaceFLow = spaceStateHandler.getSelectedSpaceFlow() .distinctUntilChanged() + .onStart { + emit(spaceStateHandler.getCurrentSpace().toOption()) + } - val dmsFLow = session.flow() - .liveRoomSummaries( - RoomSummaryQueryParams.Builder().also { builder -> - builder.memberships = listOf(Membership.JOIN) - builder.roomCategoryFilter = RoomCategoryFilter.ONLY_DM - }.build() - ) - .map { it.isNotEmpty() } - .distinctUntilChanged() + val favouritesFlow = + spaceFLow.flatMapLatest { selectedSpace -> + session.flow() + .liveRoomSummaries( + RoomSummaryQueryParams.Builder().also { builder -> + builder.spaceFilter = selectedSpace.orNull()?.roomId.toActiveSpaceOrNoFilter() + builder.roomTagQueryFilter = RoomTagQueryFilter(true, null, null) + }.build() + ) + } + .map { it.isNotEmpty() } + .distinctUntilChanged() + + val dmsFLow = + spaceFLow.flatMapLatest { selectedSpace -> + session.flow() + .liveRoomSummaries( + RoomSummaryQueryParams.Builder().also { builder -> + builder.spaceFilter = selectedSpace.orNull()?.roomId.toActiveSpaceOrNoFilter() + builder.memberships = listOf(Membership.JOIN) + builder.roomCategoryFilter = RoomCategoryFilter.ONLY_DM + }.build() + ) + } + .map { it.isNotEmpty() } + .distinctUntilChanged() combine(favouritesFlow, dmsFLow, preferencesStore.areFiltersEnabledFlow) { hasFavourite, hasDm, areFiltersEnabled -> Triple(hasFavourite, hasDm, areFiltersEnabled) From e0c455a476febf52b6d9ea0d9f899e094c70391e Mon Sep 17 00:00:00 2001 From: NIkita Fedrunov <fedrunov@element.io> Date: Tue, 6 Sep 2022 10:08:32 +0200 Subject: [PATCH 25/57] update according to code review --- .../java/im/vector/app/features/settings/VectorPreferences.kt | 2 +- .../app/features/settings/VectorSettingsPreferencesFragment.kt | 3 +-- vector/src/main/res/xml/vector_settings_preferences.xml | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt b/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt index d60d0ea73a..5e0cdf3baf 100755 --- a/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt +++ b/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt @@ -168,7 +168,7 @@ class VectorPreferences @Inject constructor( /** * This is not preference, but category on preferences screen which contains [SETTINGS_PREF_SPACE_SHOW_ALL_ROOM_IN_HOME]. * Needed to show/hide this category, depending on visibility of [SETTINGS_PREF_SPACE_SHOW_ALL_ROOM_IN_HOME]. */ - const val SETTINGS_PREF_SPACE_SHOW_ALL_ROOM_IN_HOME_CATEGORY = "SETTINGS_PREF_SPACE_SHOW_ALL_ROOM_IN_HOME_CATEGORY" + const val SETTINGS_PREF_SPACE_CATEGORY = "SETTINGS_PREF_SPACE_CATEGORY" private const val SETTINGS_DEVELOPER_MODE_PREFERENCE_KEY = "SETTINGS_DEVELOPER_MODE_PREFERENCE_KEY" private const val SETTINGS_LABS_SHOW_HIDDEN_EVENTS_PREFERENCE_KEY = "SETTINGS_LABS_SHOW_HIDDEN_EVENTS_PREFERENCE_KEY" diff --git a/vector/src/main/java/im/vector/app/features/settings/VectorSettingsPreferencesFragment.kt b/vector/src/main/java/im/vector/app/features/settings/VectorSettingsPreferencesFragment.kt index 458ba79ee3..135c25cd8d 100644 --- a/vector/src/main/java/im/vector/app/features/settings/VectorSettingsPreferencesFragment.kt +++ b/vector/src/main/java/im/vector/app/features/settings/VectorSettingsPreferencesFragment.kt @@ -28,7 +28,6 @@ import im.vector.app.core.dialogs.PhotoOrVideoDialog import im.vector.app.core.extensions.restart import im.vector.app.core.preference.VectorListPreference import im.vector.app.core.preference.VectorPreference -import im.vector.app.core.preference.VectorPreferenceCategory import im.vector.app.core.preference.VectorSwitchPreference import im.vector.app.features.MainActivity import im.vector.app.features.MainActivityArgs @@ -102,7 +101,7 @@ class VectorSettingsPreferencesFragment : } } - findPreference<VectorPreferenceCategory>(VectorPreferences.SETTINGS_PREF_SPACE_SHOW_ALL_ROOM_IN_HOME_CATEGORY)!!.let { pref -> + findPreference<Preference>(VectorPreferences.SETTINGS_PREF_SPACE_CATEGORY)!!.let { pref -> pref.isVisible = !vectorFeatures.isNewAppLayoutEnabled() } diff --git a/vector/src/main/res/xml/vector_settings_preferences.xml b/vector/src/main/res/xml/vector_settings_preferences.xml index 7700de6986..172fa5606c 100644 --- a/vector/src/main/res/xml/vector_settings_preferences.xml +++ b/vector/src/main/res/xml/vector_settings_preferences.xml @@ -32,7 +32,7 @@ <im.vector.app.core.preference.VectorPreferenceCategory android:title="@string/spaces" - android:key="SETTINGS_PREF_SPACE_SHOW_ALL_ROOM_IN_HOME_CATEGORY"> + android:key="SETTINGS_PREF_SPACE_CATEGORY"> <im.vector.app.core.preference.VectorSwitchPreference android:defaultValue="false" From 7cc7444bd585ba807a56a4f902135bc1dd04260b Mon Sep 17 00:00:00 2001 From: Nikita Fedrunov <66663241+fedrunov@users.noreply.github.com> Date: Tue, 6 Sep 2022 11:32:11 +0200 Subject: [PATCH 26/57] applayout release experience (#7003) --- .../src/main/res/values/strings.xml | 11 ++ .../src/main/res/values-h720dp/dimens.xml | 6 +- .../ui-styles/src/main/res/values/dimens.xml | 5 + vector/src/main/AndroidManifest.xml | 1 + .../app/core/di/MavericksViewModelModule.kt | 6 + .../vector/app/features/home/HomeActivity.kt | 6 + .../features/home/HomeActivityViewEvents.kt | 1 + .../features/home/HomeActivityViewModel.kt | 22 +++ .../list/home/release/ReleaseCarouselData.kt | 30 ++++ .../list/home/release/ReleaseCarouselItem.kt | 46 ++++++ .../list/home/release/ReleaseNotesAction.kt | 28 ++++ .../list/home/release/ReleaseNotesActivity.kt | 41 ++++++ .../release/ReleaseNotesCarouselController.kt | 31 ++++ .../list/home/release/ReleaseNotesFragment.kt | 138 ++++++++++++++++++ .../release/ReleaseNotesPreferencesStore.kt | 48 ++++++ .../home/release/ReleaseNotesViewEvents.kt | 24 +++ .../home/release/ReleaseNotesViewModel.kt | 63 ++++++++ .../onboarding/OnboardingViewModel.kt | 2 +- .../app/features/popup/PopupAlertManager.kt | 2 + .../ill_app_layout_onboarding_rooms.webp | Bin 0 -> 10362 bytes .../ill_app_layout_onboarding_spaces.webp | Bin 0 -> 14102 bytes .../ill_app_layout_onboarding_rooms.webp | Bin 0 -> 5398 bytes .../ill_app_layout_onboarding_spaces.webp | Bin 0 -> 7372 bytes .../ill_app_layout_onboarding_rooms.webp | Bin 0 -> 13106 bytes .../ill_app_layout_onboarding_spaces.webp | Bin 0 -> 19894 bytes .../ill_app_layout_onboarding_rooms.webp | Bin 0 -> 22692 bytes .../ill_app_layout_onboarding_spaces.webp | Bin 0 -> 34900 bytes .../ill_app_layout_onboarding_rooms.webp | Bin 0 -> 32874 bytes .../ill_app_layout_onboarding_spaces.webp | Bin 0 -> 52942 bytes vector/src/main/res/layout/activity_home.xml | 2 +- .../res/layout/bottom_sheet_release_notes.xml | 55 +++++++ .../main/res/layout/item_release_carousel.xml | 63 ++++++++ .../app_layout_onboarding_feedback.webp | Bin 0 -> 10362 bytes .../app_layout_onboarding_spaces.webp | Bin 0 -> 14102 bytes .../app_layout_onboarding_welcome.webp | Bin 0 -> 10362 bytes .../app_layout_onboarding_feedback.webp | Bin 0 -> 5398 bytes .../app_layout_onboarding_spaces.webp | Bin 0 -> 7372 bytes .../app_layout_onboarding_welcome.webp | Bin 0 -> 5398 bytes .../app_layout_onboarding_feedback.webp | Bin 0 -> 13106 bytes .../app_layout_onboarding_spaces.webp | Bin 0 -> 19894 bytes .../app_layout_onboarding_welcome.webp | Bin 0 -> 13106 bytes .../app_layout_onboarding_feedback.webp | Bin 0 -> 22692 bytes .../app_layout_onboarding_spaces.webp | Bin 0 -> 34900 bytes .../app_layout_onboarding_welcome.webp | Bin 0 -> 22692 bytes .../app_layout_onboarding_feedback.webp | Bin 0 -> 32874 bytes .../app_layout_onboarding_spaces.webp | Bin 0 -> 52942 bytes .../app_layout_onboarding_welcome.webp | Bin 0 -> 32874 bytes .../onboarding/OnboardingViewModelTest.kt | 8 +- 48 files changed, 632 insertions(+), 7 deletions(-) create mode 100644 vector/src/main/java/im/vector/app/features/home/room/list/home/release/ReleaseCarouselData.kt create mode 100644 vector/src/main/java/im/vector/app/features/home/room/list/home/release/ReleaseCarouselItem.kt create mode 100644 vector/src/main/java/im/vector/app/features/home/room/list/home/release/ReleaseNotesAction.kt create mode 100644 vector/src/main/java/im/vector/app/features/home/room/list/home/release/ReleaseNotesActivity.kt create mode 100644 vector/src/main/java/im/vector/app/features/home/room/list/home/release/ReleaseNotesCarouselController.kt create mode 100644 vector/src/main/java/im/vector/app/features/home/room/list/home/release/ReleaseNotesFragment.kt create mode 100644 vector/src/main/java/im/vector/app/features/home/room/list/home/release/ReleaseNotesPreferencesStore.kt create mode 100644 vector/src/main/java/im/vector/app/features/home/room/list/home/release/ReleaseNotesViewEvents.kt create mode 100644 vector/src/main/java/im/vector/app/features/home/room/list/home/release/ReleaseNotesViewModel.kt create mode 100644 vector/src/main/res/drawable-hdpi/ill_app_layout_onboarding_rooms.webp create mode 100644 vector/src/main/res/drawable-hdpi/ill_app_layout_onboarding_spaces.webp create mode 100644 vector/src/main/res/drawable-mdpi/ill_app_layout_onboarding_rooms.webp create mode 100644 vector/src/main/res/drawable-mdpi/ill_app_layout_onboarding_spaces.webp create mode 100644 vector/src/main/res/drawable-xhdpi/ill_app_layout_onboarding_rooms.webp create mode 100644 vector/src/main/res/drawable-xhdpi/ill_app_layout_onboarding_spaces.webp create mode 100644 vector/src/main/res/drawable-xxhdpi/ill_app_layout_onboarding_rooms.webp create mode 100644 vector/src/main/res/drawable-xxhdpi/ill_app_layout_onboarding_spaces.webp create mode 100644 vector/src/main/res/drawable-xxxhdpi/ill_app_layout_onboarding_rooms.webp create mode 100644 vector/src/main/res/drawable-xxxhdpi/ill_app_layout_onboarding_spaces.webp create mode 100644 vector/src/main/res/layout/bottom_sheet_release_notes.xml create mode 100644 vector/src/main/res/layout/item_release_carousel.xml create mode 100644 vector/src/main/res/res/drawable-hdpi/app_layout_onboarding_feedback.webp create mode 100644 vector/src/main/res/res/drawable-hdpi/app_layout_onboarding_spaces.webp create mode 100644 vector/src/main/res/res/drawable-hdpi/app_layout_onboarding_welcome.webp create mode 100644 vector/src/main/res/res/drawable-mdpi/app_layout_onboarding_feedback.webp create mode 100644 vector/src/main/res/res/drawable-mdpi/app_layout_onboarding_spaces.webp create mode 100644 vector/src/main/res/res/drawable-mdpi/app_layout_onboarding_welcome.webp create mode 100644 vector/src/main/res/res/drawable-xhdpi/app_layout_onboarding_feedback.webp create mode 100644 vector/src/main/res/res/drawable-xhdpi/app_layout_onboarding_spaces.webp create mode 100644 vector/src/main/res/res/drawable-xhdpi/app_layout_onboarding_welcome.webp create mode 100644 vector/src/main/res/res/drawable-xxhdpi/app_layout_onboarding_feedback.webp create mode 100644 vector/src/main/res/res/drawable-xxhdpi/app_layout_onboarding_spaces.webp create mode 100644 vector/src/main/res/res/drawable-xxhdpi/app_layout_onboarding_welcome.webp create mode 100644 vector/src/main/res/res/drawable-xxxhdpi/app_layout_onboarding_feedback.webp create mode 100644 vector/src/main/res/res/drawable-xxxhdpi/app_layout_onboarding_spaces.webp create mode 100644 vector/src/main/res/res/drawable-xxxhdpi/app_layout_onboarding_welcome.webp diff --git a/library/ui-strings/src/main/res/values/strings.xml b/library/ui-strings/src/main/res/values/strings.xml index 1317ec3c65..6e11682e77 100644 --- a/library/ui-strings/src/main/res/values/strings.xml +++ b/library/ui-strings/src/main/res/values/strings.xml @@ -3256,4 +3256,15 @@ <string name="home_empty_no_unreads_title">Nothing to report.</string> <string name="home_empty_no_unreads_message">This is where your unread messages will show up, when you have some.</string> + <string name="onboarding_new_app_layout_welcome_title">Welcome to a new view!</string> + <!-- Note to translators: for RTL languages, menu will be at the bottom left. Please translate "bottom-left" instead of "bottom-right". Thanks!--> + <string name="onboarding_new_app_layout_welcome_message">To simplify your ${app_name}, tabs are now optional. Manage them using the top-right menu.</string> + <string name="onboarding_new_app_layout_spaces_title">Access Spaces</string> + <!-- Note to translators: for RTL languages, Spaces will be at the bottom left. Please translate "bottom-left" instead of "bottom-right". Thanks!--> + <string name="onboarding_new_app_layout_spaces_message">Access your Spaces (bottom-right) faster and easier than ever before.</string> + <string name="onboarding_new_app_layout_feedback_title">Give Feedback</string> + <!-- Note to translators: for RTL languages, context menu will be at top left corner instead of top right corner. Thanks!--> + <string name="onboarding_new_app_layout_feedback_message">Tap top right to see the option to feedback.</string> + <string name="onboarding_new_app_layout_button_try">Try it out</string> + </resources> diff --git a/library/ui-styles/src/main/res/values-h720dp/dimens.xml b/library/ui-styles/src/main/res/values-h720dp/dimens.xml index 1a7791720d..2a7b12cf2f 100644 --- a/library/ui-styles/src/main/res/values-h720dp/dimens.xml +++ b/library/ui-styles/src/main/res/values-h720dp/dimens.xml @@ -2,4 +2,8 @@ <resources> <item name="ftue_auth_carousel_item_spacing" format="float" type="dimen">0.05</item> <item name="ftue_auth_carousel_item_image_height" format="float" type="dimen">0.40</item> -</resources> \ No newline at end of file + + <dimen name="release_notes_vertical_margin_small">16dp</dimen> + <dimen name="release_notes_vertical_margin">40dp</dimen> + <dimen name="release_notes_vertical_margin_large">46dp</dimen> +</resources> diff --git a/library/ui-styles/src/main/res/values/dimens.xml b/library/ui-styles/src/main/res/values/dimens.xml index 53f1044a12..758dd6e978 100644 --- a/library/ui-styles/src/main/res/values/dimens.xml +++ b/library/ui-styles/src/main/res/values/dimens.xml @@ -74,4 +74,9 @@ <!-- Material 3 --> <dimen name="collapsing_toolbar_layout_medium_size">112dp</dimen> + + + <dimen name="release_notes_vertical_margin_small">8dp</dimen> + <dimen name="release_notes_vertical_margin">16dp</dimen> + <dimen name="release_notes_vertical_margin_large">28dp</dimen> </resources> diff --git a/vector/src/main/AndroidManifest.xml b/vector/src/main/AndroidManifest.xml index e87bbad77a..c4022576c3 100644 --- a/vector/src/main/AndroidManifest.xml +++ b/vector/src/main/AndroidManifest.xml @@ -338,6 +338,7 @@ <activity android:name=".features.settings.font.FontScaleSettingActivity"/> <activity android:name=".features.call.dialpad.PstnDialActivity" /> <activity android:name=".features.home.room.list.home.invites.InvitesActivity"/> + <activity android:name=".features.home.room.list.home.release.ReleaseNotesActivity"/> <!-- Services --> diff --git a/vector/src/main/java/im/vector/app/core/di/MavericksViewModelModule.kt b/vector/src/main/java/im/vector/app/core/di/MavericksViewModelModule.kt index b21b4778e3..a40aeaaa15 100644 --- a/vector/src/main/java/im/vector/app/core/di/MavericksViewModelModule.kt +++ b/vector/src/main/java/im/vector/app/core/di/MavericksViewModelModule.kt @@ -53,6 +53,7 @@ import im.vector.app.features.home.room.detail.upgrade.MigrateRoomViewModel import im.vector.app.features.home.room.list.RoomListViewModel import im.vector.app.features.home.room.list.home.HomeRoomListViewModel import im.vector.app.features.home.room.list.home.invites.InvitesViewModel +import im.vector.app.features.home.room.list.home.release.ReleaseNotesViewModel import im.vector.app.features.homeserver.HomeServerCapabilitiesViewModel import im.vector.app.features.invite.InviteUsersToRoomViewModel import im.vector.app.features.location.LocationSharingViewModel @@ -624,4 +625,9 @@ interface MavericksViewModelModule { @IntoMap @MavericksViewModelKey(InvitesViewModel::class) fun invitesViewModel(factory: InvitesViewModel.Factory): MavericksAssistedViewModelFactory<*, *> + + @Binds + @IntoMap + @MavericksViewModelKey(ReleaseNotesViewModel::class) + fun releaseNotesViewModel(factory: ReleaseNotesViewModel.Factory): MavericksAssistedViewModelFactory<*, *> } diff --git a/vector/src/main/java/im/vector/app/features/home/HomeActivity.kt b/vector/src/main/java/im/vector/app/features/home/HomeActivity.kt index 2a8390c93c..78b4364f38 100644 --- a/vector/src/main/java/im/vector/app/features/home/HomeActivity.kt +++ b/vector/src/main/java/im/vector/app/features/home/HomeActivity.kt @@ -60,6 +60,7 @@ import im.vector.app.features.disclaimer.showDisclaimerDialog import im.vector.app.features.home.room.list.actions.RoomListSharedAction import im.vector.app.features.home.room.list.actions.RoomListSharedActionViewModel import im.vector.app.features.home.room.list.home.layout.HomeLayoutSettingBottomDialogFragment +import im.vector.app.features.home.room.list.home.release.ReleaseNotesActivity import im.vector.app.features.matrixto.MatrixToBottomSheet import im.vector.app.features.matrixto.OriginOfMatrixTo import im.vector.app.features.navigation.Navigator @@ -268,6 +269,7 @@ class HomeActivity : } is HomeActivityViewEvents.OnCrossSignedInvalidated -> handleCrossSigningInvalidated(it) HomeActivityViewEvents.ShowAnalyticsOptIn -> handleShowAnalyticsOptIn() + HomeActivityViewEvents.ShowReleaseNotes -> handleShowReleaseNotes() HomeActivityViewEvents.NotifyUserForThreadsMigration -> handleNotifyUserForThreadsMigration() is HomeActivityViewEvents.MigrateThreads -> migrateThreadsIfNeeded(it.checkSession) } @@ -282,6 +284,10 @@ class HomeActivity : homeActivityViewModel.handle(HomeActivityViewActions.ViewStarted) } + private fun handleShowReleaseNotes() { + startActivity(Intent(this, ReleaseNotesActivity::class.java)) + } + private fun showSpaceSettings(spaceId: String) { // open bottom sheet SpaceSettingsMenuBottomSheet diff --git a/vector/src/main/java/im/vector/app/features/home/HomeActivityViewEvents.kt b/vector/src/main/java/im/vector/app/features/home/HomeActivityViewEvents.kt index 170550d5b4..e0b9e8ceb5 100644 --- a/vector/src/main/java/im/vector/app/features/home/HomeActivityViewEvents.kt +++ b/vector/src/main/java/im/vector/app/features/home/HomeActivityViewEvents.kt @@ -31,6 +31,7 @@ sealed interface HomeActivityViewEvents : VectorViewEvents { data class OnCrossSignedInvalidated(val userItem: MatrixItem.UserItem) : HomeActivityViewEvents object PromptToEnableSessionPush : HomeActivityViewEvents object ShowAnalyticsOptIn : HomeActivityViewEvents + object ShowReleaseNotes : HomeActivityViewEvents object NotifyUserForThreadsMigration : HomeActivityViewEvents data class MigrateThreads(val checkSession: Boolean) : HomeActivityViewEvents object StartRecoverySetupFlow : HomeActivityViewEvents diff --git a/vector/src/main/java/im/vector/app/features/home/HomeActivityViewModel.kt b/vector/src/main/java/im/vector/app/features/home/HomeActivityViewModel.kt index cfe76706a5..dd54285fb5 100644 --- a/vector/src/main/java/im/vector/app/features/home/HomeActivityViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/home/HomeActivityViewModel.kt @@ -26,11 +26,13 @@ import im.vector.app.core.di.ActiveSessionHolder import im.vector.app.core.di.MavericksAssistedViewModelFactory import im.vector.app.core.di.hiltMavericksViewModelFactory import im.vector.app.core.platform.VectorViewModel +import im.vector.app.features.VectorFeatures import im.vector.app.features.analytics.AnalyticsConfig import im.vector.app.features.analytics.AnalyticsTracker import im.vector.app.features.analytics.extensions.toAnalyticsType import im.vector.app.features.analytics.plan.Signup import im.vector.app.features.analytics.store.AnalyticsStore +import im.vector.app.features.home.room.list.home.release.ReleaseNotesPreferencesStore import im.vector.app.features.login.ReAuthHelper import im.vector.app.features.onboarding.AuthenticationDescription import im.vector.app.features.raw.wellknown.ElementWellKnown @@ -82,6 +84,8 @@ class HomeActivityViewModel @AssistedInject constructor( private val vectorPreferences: VectorPreferences, private val analyticsTracker: AnalyticsTracker, private val analyticsConfig: AnalyticsConfig, + private val releaseNotesPreferencesStore: ReleaseNotesPreferencesStore, + private val vectorFeatures: VectorFeatures, ) : VectorViewModel<HomeActivityViewState, HomeActivityViewActions, HomeActivityViewEvents>(initialState) { @AssistedFactory @@ -110,9 +114,27 @@ class HomeActivityViewModel @AssistedInject constructor( checkSessionPushIsOn() observeCrossSigningReset() observeAnalytics() + observeReleaseNotes() initThreadsMigration() } + private fun observeReleaseNotes() = withState { state -> + // we don't want to show release notes for new users or after relogin + if (state.authenticationDescription == null && vectorFeatures.isNewAppLayoutEnabled()) { + releaseNotesPreferencesStore.appLayoutOnboardingShown.onEach { isAppLayoutOnboardingShown -> + if (!isAppLayoutOnboardingShown) { + releaseNotesPreferencesStore.setAppLayoutOnboardingShown(true) + _viewEvents.post(HomeActivityViewEvents.ShowReleaseNotes) + } + }.launchIn(viewModelScope) + } else { + // we assume that users which came from auth flow either have seen updates already (relogin) or don't need them (new user) + viewModelScope.launch { + releaseNotesPreferencesStore.setAppLayoutOnboardingShown(true) + } + } + } + private fun observeAnalytics() { if (analyticsConfig.isEnabled) { analyticsStore.didAskUserConsentFlow diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/home/release/ReleaseCarouselData.kt b/vector/src/main/java/im/vector/app/features/home/room/list/home/release/ReleaseCarouselData.kt new file mode 100644 index 0000000000..22431b0bf9 --- /dev/null +++ b/vector/src/main/java/im/vector/app/features/home/room/list/home/release/ReleaseCarouselData.kt @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2022 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.app.features.home.room.list.home.release + +import androidx.annotation.DrawableRes +import androidx.annotation.StringRes + +class ReleaseCarouselData( + val items: List<Item> +) { + data class Item( + @StringRes val title: Int, + @StringRes val body: Int, + @DrawableRes val image: Int, + ) +} diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/home/release/ReleaseCarouselItem.kt b/vector/src/main/java/im/vector/app/features/home/room/list/home/release/ReleaseCarouselItem.kt new file mode 100644 index 0000000000..49eb0761f7 --- /dev/null +++ b/vector/src/main/java/im/vector/app/features/home/room/list/home/release/ReleaseCarouselItem.kt @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2022 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.app.features.home.room.list.home.release + +import android.widget.ImageView +import android.widget.TextView +import com.airbnb.epoxy.EpoxyAttribute +import com.airbnb.epoxy.EpoxyModelClass +import im.vector.app.R +import im.vector.app.core.epoxy.VectorEpoxyHolder +import im.vector.app.core.epoxy.VectorEpoxyModel + +@EpoxyModelClass +abstract class ReleaseCarouselItem : VectorEpoxyModel<ReleaseCarouselItem.Holder>(R.layout.item_release_carousel) { + + @EpoxyAttribute + lateinit var item: ReleaseCarouselData.Item + + override fun bind(holder: Holder) { + super.bind(holder) + + holder.image.setImageResource(item.image) + holder.title.setText(item.title) + holder.body.setText(item.body) + } + + class Holder : VectorEpoxyHolder() { + val image by bind<ImageView>(R.id.carousel_item_image) + val title by bind<TextView>(R.id.carousel_item_title) + val body by bind<TextView>(R.id.carousel_item_body) + } +} diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/home/release/ReleaseNotesAction.kt b/vector/src/main/java/im/vector/app/features/home/room/list/home/release/ReleaseNotesAction.kt new file mode 100644 index 0000000000..7a66d00589 --- /dev/null +++ b/vector/src/main/java/im/vector/app/features/home/room/list/home/release/ReleaseNotesAction.kt @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2022 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.app.features.home.room.list.home.release + +import im.vector.app.core.platform.VectorViewModelAction + +sealed class ReleaseNotesAction : VectorViewModelAction { + data class NextPressed( + val isLastItemSelected: Boolean = false + ) : ReleaseNotesAction() + data class PageSelected( + val selectedPageIndex: Int = 0 + ) : ReleaseNotesAction() +} diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/home/release/ReleaseNotesActivity.kt b/vector/src/main/java/im/vector/app/features/home/room/list/home/release/ReleaseNotesActivity.kt new file mode 100644 index 0000000000..c5cc55d7bb --- /dev/null +++ b/vector/src/main/java/im/vector/app/features/home/room/list/home/release/ReleaseNotesActivity.kt @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2022 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.app.features.home.room.list.home.release + +import dagger.hilt.android.AndroidEntryPoint +import im.vector.app.core.extensions.addFragment +import im.vector.app.core.platform.ScreenOrientationLocker +import im.vector.app.core.platform.VectorBaseActivity +import im.vector.app.databinding.ActivitySimpleBinding +import javax.inject.Inject + +@AndroidEntryPoint +class ReleaseNotesActivity : VectorBaseActivity<ActivitySimpleBinding>() { + + @Inject lateinit var orientationLocker: ScreenOrientationLocker + + override fun getBinding() = ActivitySimpleBinding.inflate(layoutInflater) + + override fun getCoordinatorLayout() = views.coordinatorLayout + + override fun initUiAndData() { + orientationLocker.lockPhonesToPortrait(this) + if (isFirstCreation()) { + addFragment(views.simpleFragmentContainer, ReleaseNotesFragment::class.java) + } + } +} diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/home/release/ReleaseNotesCarouselController.kt b/vector/src/main/java/im/vector/app/features/home/room/list/home/release/ReleaseNotesCarouselController.kt new file mode 100644 index 0000000000..22d2915c47 --- /dev/null +++ b/vector/src/main/java/im/vector/app/features/home/room/list/home/release/ReleaseNotesCarouselController.kt @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2021 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.app.features.home.room.list.home.release + +import com.airbnb.epoxy.TypedEpoxyController +import javax.inject.Inject + +class ReleaseNotesCarouselController @Inject constructor() : TypedEpoxyController<ReleaseCarouselData>() { + override fun buildModels(data: ReleaseCarouselData) { + data.items.forEachIndexed { index, item -> + releaseCarouselItem { + id(index) + item(item) + } + } + } +} diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/home/release/ReleaseNotesFragment.kt b/vector/src/main/java/im/vector/app/features/home/room/list/home/release/ReleaseNotesFragment.kt new file mode 100644 index 0000000000..6b86897dc8 --- /dev/null +++ b/vector/src/main/java/im/vector/app/features/home/room/list/home/release/ReleaseNotesFragment.kt @@ -0,0 +1,138 @@ +/* + * Copyright (c) 2022 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.app.features.home.room.list.home.release + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.lifecycle.DefaultLifecycleObserver +import androidx.lifecycle.LifecycleOwner +import androidx.viewpager2.widget.ViewPager2 +import com.airbnb.mvrx.fragmentViewModel +import com.google.android.material.tabs.TabLayoutMediator +import dagger.hilt.android.AndroidEntryPoint +import im.vector.app.R +import im.vector.app.core.epoxy.onClick +import im.vector.app.core.platform.VectorBaseFragment +import im.vector.app.databinding.BottomSheetReleaseNotesBinding +import javax.inject.Inject + +@AndroidEntryPoint +class ReleaseNotesFragment : VectorBaseFragment<BottomSheetReleaseNotesBinding>() { + + @Inject lateinit var carouselController: ReleaseNotesCarouselController + private var tabLayoutMediator: TabLayoutMediator? = null + + private val viewModel by fragmentViewModel(ReleaseNotesViewModel::class) + + override fun getBinding(inflater: LayoutInflater, container: ViewGroup?): BottomSheetReleaseNotesBinding { + return BottomSheetReleaseNotesBinding.inflate(inflater, container, false) + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + val carouselAdapter = carouselController.adapter + views.releaseNotesCarousel.adapter = carouselAdapter + + tabLayoutMediator = TabLayoutMediator(views.releaseNotesCarouselIndicator, views.releaseNotesCarousel) { _, _ -> } + .also { it.attach() } + + val pageCallback = object : ViewPager2.OnPageChangeCallback() { + override fun onPageSelected(position: Int) { + viewModel.handle(ReleaseNotesAction.PageSelected(position)) + updateButtonText(position) + } + } + + viewLifecycleOwner.lifecycle.addObserver(object : DefaultLifecycleObserver { + override fun onCreate(owner: LifecycleOwner) { + views.releaseNotesCarousel.registerOnPageChangeCallback(pageCallback) + } + + override fun onDestroy(owner: LifecycleOwner) { + views.releaseNotesCarousel.unregisterOnPageChangeCallback(pageCallback) + } + }) + + carouselController.setData(createCarouselData()) + + views.releaseNotesBtnClose.onClick { close() } + views.releaseNotesButtonNext.onClick { + val isLastItemSelected = with(views.releaseNotesCarouselIndicator) { + selectedTabPosition == tabCount - 1 + } + viewModel.handle(ReleaseNotesAction.NextPressed(isLastItemSelected)) + } + + viewModel.observeViewEvents { + when (it) { + is ReleaseNotesViewEvents.SelectPage -> selectPage(it.index) + ReleaseNotesViewEvents.Close -> close() + } + } + } + + private fun createCarouselData(): ReleaseCarouselData { + return ReleaseCarouselData( + listOf( + ReleaseCarouselData.Item( + R.string.onboarding_new_app_layout_welcome_title, + R.string.onboarding_new_app_layout_welcome_message, + R.drawable.ill_app_layout_onboarding_rooms + ), + ReleaseCarouselData.Item( + R.string.onboarding_new_app_layout_spaces_title, + R.string.onboarding_new_app_layout_spaces_message, + R.drawable.ill_app_layout_onboarding_spaces + ), + ReleaseCarouselData.Item( + R.string.onboarding_new_app_layout_feedback_title, + R.string.onboarding_new_app_layout_feedback_message, + R.drawable.ill_app_layout_onboarding_rooms + ), + ) + ) + } + + private fun close() { + requireActivity().finish() + } + + private fun selectPage(index: Int) { + views.releaseNotesCarouselIndicator.selectTab(views.releaseNotesCarouselIndicator.getTabAt(index)) + updateButtonText(index) + } + + private fun updateButtonText(selectedIndex: Int) { + val isLastItem = selectedIndex == views.releaseNotesCarouselIndicator.tabCount - 1 + if (isLastItem) { + views.releaseNotesButtonNext.setText(R.string.onboarding_new_app_layout_button_try) + } else { + views.releaseNotesButtonNext.setText(R.string.action_next) + } + } + + override fun onDestroyView() { + tabLayoutMediator?.detach() + tabLayoutMediator = null + + views.releaseNotesCarousel.adapter = null + super.onDestroyView() + } +} diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/home/release/ReleaseNotesPreferencesStore.kt b/vector/src/main/java/im/vector/app/features/home/room/list/home/release/ReleaseNotesPreferencesStore.kt new file mode 100644 index 0000000000..cefe107905 --- /dev/null +++ b/vector/src/main/java/im/vector/app/features/home/room/list/home/release/ReleaseNotesPreferencesStore.kt @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2022 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.app.features.home.room.list.home.release + +import android.content.Context +import androidx.datastore.core.DataStore +import androidx.datastore.preferences.core.Preferences +import androidx.datastore.preferences.core.booleanPreferencesKey +import androidx.datastore.preferences.core.edit +import androidx.datastore.preferences.preferencesDataStore +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.map +import org.matrix.android.sdk.api.extensions.orFalse +import javax.inject.Inject + +private val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = "release_notes") + +class ReleaseNotesPreferencesStore @Inject constructor( + private val context: Context +) { + + private val isAppLayoutOnboardingShown = booleanPreferencesKey("SETTINGS_APP_LAYOUT_ONBOARDING_SHOWN") + + val appLayoutOnboardingShown: Flow<Boolean> = context.dataStore.data + .map { preferences -> preferences[isAppLayoutOnboardingShown].orFalse() } + .distinctUntilChanged() + + suspend fun setAppLayoutOnboardingShown(isShown: Boolean) { + context.dataStore.edit { settings -> + settings[isAppLayoutOnboardingShown] = isShown + } + } +} diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/home/release/ReleaseNotesViewEvents.kt b/vector/src/main/java/im/vector/app/features/home/room/list/home/release/ReleaseNotesViewEvents.kt new file mode 100644 index 0000000000..7901a8b28f --- /dev/null +++ b/vector/src/main/java/im/vector/app/features/home/room/list/home/release/ReleaseNotesViewEvents.kt @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2022 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.app.features.home.room.list.home.release + +import im.vector.app.core.platform.VectorViewEvents + +sealed class ReleaseNotesViewEvents : VectorViewEvents { + object Close : ReleaseNotesViewEvents() + data class SelectPage(val index: Int) : ReleaseNotesViewEvents() +} diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/home/release/ReleaseNotesViewModel.kt b/vector/src/main/java/im/vector/app/features/home/room/list/home/release/ReleaseNotesViewModel.kt new file mode 100644 index 0000000000..23e2364d0c --- /dev/null +++ b/vector/src/main/java/im/vector/app/features/home/room/list/home/release/ReleaseNotesViewModel.kt @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2022 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.app.features.home.room.list.home.release + +import com.airbnb.mvrx.MavericksViewModelFactory +import dagger.assisted.Assisted +import dagger.assisted.AssistedFactory +import dagger.assisted.AssistedInject +import im.vector.app.core.di.MavericksAssistedViewModelFactory +import im.vector.app.core.di.hiltMavericksViewModelFactory +import im.vector.app.core.platform.VectorDummyViewState +import im.vector.app.core.platform.VectorViewModel + +class ReleaseNotesViewModel @AssistedInject constructor( + @Assisted initialState: VectorDummyViewState, +) : VectorViewModel<VectorDummyViewState, ReleaseNotesAction, ReleaseNotesViewEvents>(initialState) { + + @AssistedFactory + interface Factory : MavericksAssistedViewModelFactory<ReleaseNotesViewModel, VectorDummyViewState> { + override fun create(initialState: VectorDummyViewState): ReleaseNotesViewModel + } + + companion object : MavericksViewModelFactory<ReleaseNotesViewModel, VectorDummyViewState> by hiltMavericksViewModelFactory() + + private var selectedPageIndex = 0 + + init { + _viewEvents.post(ReleaseNotesViewEvents.SelectPage(0)) + } + + override fun handle(action: ReleaseNotesAction) { + when (action) { + is ReleaseNotesAction.NextPressed -> handleNextPressed(action) + is ReleaseNotesAction.PageSelected -> handlePageSelected(action) + } + } + + private fun handlePageSelected(action: ReleaseNotesAction.PageSelected) { + selectedPageIndex = action.selectedPageIndex + } + + private fun handleNextPressed(action: ReleaseNotesAction.NextPressed) { + if (action.isLastItemSelected) { + _viewEvents.post(ReleaseNotesViewEvents.Close) + } else { + _viewEvents.post(ReleaseNotesViewEvents.SelectPage(++selectedPageIndex)) + } + } +} diff --git a/vector/src/main/java/im/vector/app/features/onboarding/OnboardingViewModel.kt b/vector/src/main/java/im/vector/app/features/onboarding/OnboardingViewModel.kt index 9661feb002..52c445f1fa 100644 --- a/vector/src/main/java/im/vector/app/features/onboarding/OnboardingViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/onboarding/OnboardingViewModel.kt @@ -627,7 +627,7 @@ class OnboardingViewModel @AssistedInject constructor( _viewEvents.post(OnboardingViewEvents.OnAccountCreated) } AuthenticationDescription.Login -> { - setState { copy(isLoading = false) } + setState { copy(isLoading = false, selectedAuthenticationState = SelectedAuthenticationState(authenticationDescription)) } _viewEvents.post(OnboardingViewEvents.OnAccountSignedIn) } } diff --git a/vector/src/main/java/im/vector/app/features/popup/PopupAlertManager.kt b/vector/src/main/java/im/vector/app/features/popup/PopupAlertManager.kt index 40ef6d819e..b1327f0caf 100644 --- a/vector/src/main/java/im/vector/app/features/popup/PopupAlertManager.kt +++ b/vector/src/main/java/im/vector/app/features/popup/PopupAlertManager.kt @@ -28,6 +28,7 @@ import im.vector.app.core.time.Clock import im.vector.app.core.utils.isAnimationEnabled import im.vector.app.features.MainActivity import im.vector.app.features.analytics.ui.consent.AnalyticsOptInActivity +import im.vector.app.features.home.room.list.home.release.ReleaseNotesActivity import im.vector.app.features.pin.PinActivity import im.vector.app.features.signout.hard.SignedOutActivity import im.vector.app.features.themes.ThemeUtils @@ -307,6 +308,7 @@ class PopupAlertManager @Inject constructor( activity !is PinActivity && activity !is SignedOutActivity && activity !is AnalyticsOptInActivity && + activity !is ReleaseNotesActivity && activity is VectorBaseActivity<*> && alert.shouldBeDisplayedIn.invoke(activity) } diff --git a/vector/src/main/res/drawable-hdpi/ill_app_layout_onboarding_rooms.webp b/vector/src/main/res/drawable-hdpi/ill_app_layout_onboarding_rooms.webp new file mode 100644 index 0000000000000000000000000000000000000000..5ac890e617f2bbd2ab8a62e6486212ad676b8de5 GIT binary patch literal 10362 zcmYMaRa9JE6D``^XprFU8r<F8-Q8*2-5UY~*I>cj-GheU?iL7*LkRAE^8NRWdmh%) z9<{4#)~vbLsM;FxGBWOT0D!Kvgqn^TpB@qb06_nDFhBrS5I|f>O>Tw=000umI#J7~ zP?iU0O^~^g^q^Bdi2~8<w53U@zpnSne+w7b(JSff1}FnX5y_c9!wtuW0#Xrl4YNVP zNx*g#T;HNBSFf)3!}~$=*|zwCOwqsR=VTI6N@8HGH>RLJi6^m}7(Ms_j^pjP8Jq*9 z6+b>VwdJ}8c+1NMl@vRr?#V@mtXhp@<61Wr+tl105wXc8tsP`$5@TRt2~F}tzFrD_ zt4g8#GouE!jm-q;wbW|0wn-xl!uy`O75*i|Y70sDHTsw_T4<15$~C-~r!;ar<%)eI zC;KBSAzWn|*Yi3a>f}=7yq+p1EATO=d1=~p80=U_LNggfoEAyg^aG<UAHmpI+t_&1 zIHVR00~p)3`E5DDU+U!SP6~bTHJy@Td?7^Wb!6A?p%<+ek{J~hTEag_oyH0usw5%4 z7#mk6H#*KgY!}8}VpqnGlmpO+o2P~?Im&B79M1WMFT^cQPFtBMMyaekKsBUAomzxq zVKuP|iKb`ciT}QJ{@XI=vI!P7Oqa0tD`Il90=K`Cdxa_rH4$Uc0}T7vz>IxQL{a8* zE}97ON4;Y^gTp}S>yhxii-~<F!tZL(zp_ePepXGCvAH*|({()KO3m{q8rX=tFb@_I z<ha64;}PZEPAO;_uwqOIb}Rr&WPlt7C84Mi6C0L%scmT#)`xd3Zuyw3umu=}{+#H6 z6g?t&5fCUjJeP@#t}5w3@Y1;#COmWX$NIVF@A68rH5cO^!mn5_$Wx2cn8AEj&|%Dn zA8U}9n6xW#OKl<R4*?-4b<FXow0hR%+8q2kuX?kNkXXf4fj)}22WyVzby#xry3j7g zRsI>NFKW1FR}27Z4`<ezF51bOuOJq#A%55>->O-L-g(uQKqmkl`fpSqB#)6VOfmY7 zvOs*5?D|*?IsO0+poa{^n%|8Mp}Uw=z=FJ!lS@8`g2ddAsaNzIzs<6<(K*+p*_0m( znMw1pT16kPqqQd$nGYykLhC^dxCRGUn+1?dG&g2@cpWaYPryml+jqT&TGd-TATK7M zLA=nD8N&S{<StC&8|sQmjsldFY!~~E{~+C;m;(b1F=8SK6U$!sz^X#941*%irftkJ z+Jccv21`7~AU2AmAvzC7T{uTKY8MfrqnB7N&szf^*|tE^Oa&Rm%^!Qh08~@)1#qah zfcP*<%5p%S?<o~*H1!fMF(%IhkPs;x7WD_1*JCttSgpdjND_aO(fFF7R^2f%C<9LY z(F%|pxi<ZQgx5qI|E1cVkqGgHtOm71R-pgOT!b#1pERU#j;0WP@0Y5`F-r?<;1@#S zHf4#@MJwef@YXbmFo%aN*c%*kY1PF0JDxQ2n$$RkUjc2#wqb3vD_{m2J7D6Six*5L z=&h8$5bm<cD?tLkCtOTOB%2@bq9<eV+<u1lTgTv8S0UBwU{4$-)p<~y(*wZf^F&9k zuR_Y>H~#F)L(_-J)qFD;w>?pix?F|fMxK+;Idh{&OLJq^+?i$6t*?$}z<-mRp*}^- zKwU7#5W8m$216(IugGnbZdBO6s~*;NH`aT_{HR~}p1C&@5H@Wgh|5Nn7^_p`cRAgQ zy5TqXB70)dZHe&wyni5CK{lCx)RK*AGru+v+}^#OW?~B~@y<}4VbbGWdn$<D2A3;c z#qk93E7);6PI<=OYC06K>-q{cjnLZ-tm@q1Blz6{M!I+!1n+tG1{S7?B*uK8;FzEC zP|*YnwAx(B6arLOTQHpR!Zp79I6Yo0lV6)Oo$@92z}o<2vvt-+eTKdG#jnI<+buyK z=!@PIXSmi_U6-$^r+8b~s9h>ZW#14Z9Y7<eiOBo?so^}n<}{ZwV)*ON@IJfi*l2IY z7t6FFH*Ggh(iifDnV?M$r8>NlQ{gnZVc{^;DlEL^CGqNOVdL&b1hcgwCXZJR({)fI zJS;<S7f0hag&enUzm*&$??3cPMqbQ+d3$a*<+#xv8#wy9$-17>2KhLGeTv*d=~f8y z;X6^GEA;y;c8$AR0fOdnBU+D56(1P(Qw%nox(rtkfkk6ZI{!kNeK;%i9ZU3nt4>fT z;z~g4B08b`Z_6#4m!7ckF}Sp~uo#;h@O+JoX9WZBVI{@9wm9PF-O`h*`TB~|3po`t z<=V)LLQWmET{2_fM61*-(+pZjy3yoWIM}s<jV%=(y|Q)qY1l9sYr7>VzH+qY({up) z<T*}aZvHdZ%goFs4>!XH{^|yuly6j;bn#bd41;S{RUaefx&X7n`Nf|eZ&Z7Is@Pz% z>=?CMW9knlZ{%Qc5D6hBHg_w8fWP{=ct}6M+yM4rOsYxs5*$RbvWH#z7F;i-pI3~S z{vc;^wOb#P$}<nITy5n^;2sIVgbtSbjzcl-8a{*WB(T42R4=)0hyNwqgM?dOqZIwE zq`tFX)%J(0)nxZ#w>hRJl|E{sHqG>(Kurn&es{I+vP7>skE_?K<tf-ajaS~OQ9kXW z4*<ycWl*1WKuR#7hgH$(PTtN}G{!-j79FC*v#e9pMJYAhVrFXPsDT@N{?k2m$y&bZ z+C0}QZ^IPHGjG9c#(ph6BDvAc98+(O^KfK<0k$tk$s`R=A48)2uuGufGD55?f6=W6 zox>8B$4o6cwZ!f9-N8$<pxVj&lM&NsqqS~ZulpQX_3Ds>2uV{$A?A+|wT8ZGM<+G_ z;&dy$m9LgflgmH<^;`yh6FAQ>^7~W_ieTXi83Nl4`3a7{nelO1x{U6S$0Dc5dl~Cs zma?wVNz|@o>0#O{46Tqk9`YKPH2UqG$Uk(O0cn3e2I$n$$Hre>)4KL*SRU2d@J`RQ zY@Kl+)*XKo#QH^Px#8cD_c*{EwIoBth~mc#Td_=F3yTdwh25QCb1hD8-1+&sT+uAP zD5JO+8Q2N4#C$A%PBG&&L1`KAybyt@-twJb=4u`Ak<B(@)`uB6qT8gR73v<+ln$3s zo|R)Z>t|@yWNo-*Z%vgOYqS!78SCT<x@7(FO=deF{kB$zn68~};;D<LjNCqbyKDJ} zxs}Zb19tU~{?qB;#&R$L3k!!UVW(50dNo~`gy@5#;8#<Wd~`Bd*X-yX9@Lw(;0R+A z>R3_V#%Ax!mo611@4=`}BGopZnASEo<kl7!Zg0C2i-WJqhvK$cq}h$YXG4f0KNv`x z&z#rhC*2b0RTP?$)udb%k+GJ8&}-Puq0GehmGMsF-k>q-)7A|kHfEKNPELGOe)oD_ zo%G)$agh*Pqt(S>ShImCSvh^T)&eO;)~-m8OG7m+KvqW(=>l8rkP+?7rPsvb<X(Ii z#AdCp$I{9f*_Bz)F(8D6h_zQ32#1a*?9;<r_;vco{>&v&vCz6;j%<a`)A6j~52me4 zhT;SjJ@RhO38%+^@KexgcHH*6Ve~kBzd8*?@RmpoNI<y^Gfb@Mlz>A54l~Rs(Xy0* zBD|kj8PTo%LrOgLkcl%{xNG@kVEK47Pm(}5%c4CgoNfCzU=V)6MHrl^MN06j(MO>@ zR^Qw2>lgO%0)JYAHP4TvV8~`!;v?S(;uF2BIY&M5f7+4e<1D~*EW+#iNk6ctyWl@0 z5;vgQlZ$f=-Yv)H<i{oPSAT8HBFm&8+i{-&TWfBs4Xg1(+zOG)R$c6=5N&&-WGHky z$Ni_m{;>>S5nbj9<LgF*OM({ruNNB6BC6^l0CKamn!ER>6Ami0Z#rBa8J%cxaV`lj zWp8lJ#?vLrwSbfFi8AytICZwn%l#kY>f{Uxt>vXf@LN?mp`&SwGMIbru9Zxt&1c@y z74iXd>)Uwgr(#xH@!1K#tS{XoSML7mC9y{debPZbv*{<&vDz!V+4CMtu}~?S6BgMU zaIJI>bxxg_MI*w6)<2zHLvc|%Y8&UxP1SE349ocsEj}N2|EiRgk%hx(J057)w9Wfr zUJ*#6wKmO%@=0E7Dw&-PK}ob{X@n1o2=5*Bhxdy_DhtY#0vOBzFj8dYfK((-w~pt` zu-(J*6~*2>uc|;(QVFf52Io3)$Z~_*1_Aq5y5{MvJ3<3#=DI6TU$n~2Oh~Msqw&NC z=~oJHE6V_5Px3h5moZ`m*@Q4#SL+^LvoWwA7a@+)=gco64+Sg6=bi$HXNk{eJH@0$ zVe8}<6M(sj@(!zV);1jrpp7=6sS!h>$VLE+-P0q4_VfPcIB^)Q9_ZJTq+Q1RCwaYg zhU=E`lJ`5dmfHJRaJIm<Dq|?beTtMv;y6RCL@Zt;HqTTka_o0uZ5kHkHjWK7b&(<5 zbSclVY<S<01OWC{i`KjaWnZ^H9zytbPKL*&^Zm9b9-WQ2f|S*t9q|*#UA^xhUi(G0 z;<zM@6fSAqaI|mm0fUlOc{CLn(><Z;%K@Appb)10L`lO)6|)HUN|}ZXAMUZg|5RQi zVp#|Y{o%$ubQld+C{(O@$(a}Lf{gC=kC*CMN!Y%3E+sd|0c{1ZP(0O&24laS)udg{ zLRr0Hxis)t!?29NzrK)fM$^Ghzk7LRC5hnoUDecAKzDj9+TNT}JNK^!rN$oIZ)>RW zJdFed&ANogo?G?10?6D8=jJ~>F5<X3kr&m7mws?A3ymtT>ESZv#>UDR1;Lq2^pT!X zu^4h<iAu`FLr;*$Go9WxiN9>zCPW-K*T8G&-KFKqG=J&=v{P^pwbV%^_%Pi}J+kpL zJ&&tEIkWT))X@ykHqRELG%PPFhK%o4c&&Zjm@B{R*0LWX+vA3i)`079h|vgF^lNRQ zIH#Z8kk2<Raoz7Mh+I~|t7Q5hQvO%e&0OG`jT<FcRygu36+%cP$OwCcR$_W;r%qH> zi0q{A7mPK8Em;l1Qy0|=Y--PXXZn@H!n-*$O6?e**NiB}zF3jrvBSb;qeYrFf|vex z9dg1fmDgF%Q*<RyvJ1w~d~RUOvo<@^z??HH!}UvszSu*8f1*4=?2cvg3hAp#d#(0> zjGnzXfQe7i_y|_WPU@UKbV-#)0;;%9AQ9kzC3{jsXQ4HtA6lUU>fr1%0TXPu;_R%3 z%r+t$t7l<dPV^JZi%)5115`5_%;)+@97E)a{mhe(1W1%g-Zf35-LTrI8i7}o$a#i{ zatz1+AO}fNl?CFsJJ8^|4l^#!^A2RHyItreV=DrC(n%xJDouVxTSS<3GD;S+?1&ft zX2oLWeI!rfe+|kX3wVvS)vq6Clc4kPLJ-zRBPxYWOi+N`m^785E8PQ_jBR+(49hx% zig~j^r?C)$SJhY5Vr*a8qq?K|^|d4Gbbb#u60jW?!zf}D2J(0UeU{L0sCVp$Uzhs3 zJHy9qZ_<fDk;&s2H7G^VX$NiyL{e=y9Y{9Y5#tC&<ZEZF<WzYFC#`cSPVed9K|0kK z%`N3{y=aHagW+;I3UZ>sBrFT*DWk;qAdp+O33i`~gp|TId{Ndt%4F*|S>SptSd0w* z0gYAff`;}OVQRl$@{L)y-b9zkq*fhaGIncGP++cq1eGDTB+|mB!t+iN?U2X`9?(JB zU&u4M@k-o#coP42l8<AT+*KsbTZb5x<i)q>&+o3}>r@Qc+l9bjvq*uuJ|24p;&J>U zm-1OS$&1^7FqEraEWCJ$x+=4t^bp|<+47oT=1dRsAVbl=7%e=qZC)27ku09}C3MgU zTqjQA^^{;3nug+Ed(Je(`qi`|VtKJGPGeKQ)xc|JaC$4J(}{tpBH<4FZPtR{ti_j+ z+Js1MepCbjh&xl(<q*Udh#4kUYPyUUBfqs|jQ&>tPsUYnh?TX57)+)w*7I=i$MB`{ z7%M^pbQyZ<#odmz?K}2RhDM{+iRsPrwly|Eo3!nx)xsf5_2IMlqT7IWZXJQYj8&xG zCtQa{j{QdG2b-fu732dvx$n-Xympk3(EvxYYX%EFc@V?hIB{fDaDQ{68y#O5gv7$V z2as}j^VDI)8cyk};sWSMH?ab!b4ZseK=|`RQ$O_=I+s7c?tBXO?d|(d(AnRR-0Sn1 z*-PwCMSn6mMEJ!q4%F5CxFnU~hI;i)F1O~WEs}x$&~(oeRmOQlE%EQ;TSvp|E(gG* zJEqGP&s|W6`*a1)p49mW<g#jdf6H~)CB8c4<Pe8u0E^UB-NsZ*9cu?c(-J1R<E1G_ zKR2&`^@MW02J)r;&=5V+29NU7C9Aw<l)M(Uj92)WtsiNZ3IG)QdB|c+RkkWF{j^o= z_ZPP$P{-xzLMjL>wsGTLFoCH(l7<>kZG9%kw9$xCl(<I>bG58ObX=Zs(449K{i_Kh z`Tkskz%IGDOQ8-D{$1yWs+TFsKy(~?MU48!Irb&I|1KBV6@3Awh3p6MGfpHcsr{db zI241ZQZ-t1ZqE%!M_gG7h@iD})iFdIIYf8igtV$~bWrOJ{LWe}9CgcqI;6k6g5*)9 zACt)!6bi21bY_8u>@A(-ZOFq-oC*x}H2uEdN-$Ea1zaMx9G}eFsf&GIOut2)mi<#e zysRXwI-g%}E`&U_ic`5#WquQFn(?2i&k5UWz?65b>Ja@;(fvbt;*wl^D@^nXB6lhv zc9n<I&c{YZTswalFAUCZU8(o43;{DU=o*H>&dX{9%~O4rGqcg){z#)<sQH?%H{n#? z4QL~B)N%GZW@pkctZ4!<(;Za|qWu5Ua%bVvVdyai@!zBkai{UKmtXEO2fl2h4P}Qq zB2cj@BSt<_uI}XRW6CnjPF1^7A@gtB!$fTace3daK{V`pMg&2aCNy!W$pn9tAAYbE z8S%L|pc{m?pw=&fCh|~z_7(<Lj9bYe-GFb8Gfh*YmlmbT^4YE2{?n9zA+=(Y>9P1W zTT2<5n~2h6tgVQ4?%iY?CO56$5eV4|oNV{zx+UX9zzd49{DWt1$=JZ~sgZssTP_qh z#)}#tp#HQlpo%zUSy6_x0n}gS|5$>!8#UFU1)KBb=<kabbKa*|9^;Lm3)x|#^tcbj zCmFSS!m_-$&iP2%9ZZLTo5hEClDw)2VMGW}5Cm#?U@iQTs%ORaHiAKpJrw$@GO_n2 z^jN7$m?JlS7v}OoR1^h3N8)FKVj6sz^@t6J8T3@VKs=og)>T9&wQYa!@*)HW-CY?W zM^eE{V0hKOgM6zHE)+mP5UXpVZm80M6TIHjlz8cb;%{}<4e$nEp*HoAFgdLnu55Ai zim6t(9UvqeURE2>lf92LV%uy{U8amby!B=C;J%Sy>^>xxXehx3DTR}%yj_oV3~Hj& z=VI#<H0vS$fXER=rAtRKEodime!oQE2!x)DM9%yQXq!Tkn1|0X;IJ9b$!(_nK(X=k zn*TQAN=)q<IHC*QrxDivR93BO;m053tf3L&tJxILqQxyb;@NPVadC3*=HrOpPb&Or z_=+IDN9((X{cLjbV!>C7uW9Lv`-4*Yt*URvgfl@d@J~7c7Ac_(Q%B88bCfrNhBTN6 z+q8WpClQOJ(lfeAT>Kx<=<R4+UhPLa(cVSk?|Ve0;TQdu!_*Evqe;8uyP{vQR8_n~ zZTjw=zj5Q@@Ln&(Y_QWGyxLP9?Iym(mQ>fdOoe{eQN}$2H8+L?HcQ30ah?a&H>`v; z{Gzqo?`8cv>yAtLAvt%EV#r;tlA5Qms7AezD_69WX6;Iq<mK;3w8v0)b3Up%8=id$ zIosjF=pxnPF$>17^WDjP?iT1L6=F93!_N^h+7EKWuROG4dI~ZM<U{((3SeX@qZA#9 zVdl3<Zi3zV=cndPl2#%jfI!+8Y#P6`gIsJ2``7L@=U39;Dy5>s4cLUBEp-oU?RW>0 zUx}~vFPJ;R=gGbwW6BNho+DHF%n$-{_7~;pVEmN*<R4pIf|SEG&Rotv+aY?pk?m=^ z0|XZ=33%M8VfpE#B-o0GGUcx5KZqkOS<+#*YX%q(|NY>M%|JF7@JP;*F!fyt<rtmd z7mT}GIYu(NTT)<u9wbl=qaA$`$m`*1)f5^PF6L&12^#X!ix5E$p`k5UO%`a>INzJ2 zYDSP3N*KOBlSTu^Oy%)=8IcwRJTGUX5tA~2CPnU6<3=HausbD2-S5L*lQ#Ts-Qbzj z-I<<<JD;&UUyb~^_-w==)xj@90fcf);05T-lfy%x>R`k}IdJ~<Au8yu#1^rp4S!%M zQ8+ywC;HsT=Q3iv_|PT~JuoS-Ys^#usT_Gj{LV-Cz~mc-k(xcmpiz;2SU-?7(4Q=$ zaem<Misq*{&*NJ^N15Tc{n6$DcKHi=_GA|WX!7{&W4l|HGzosY1j0Dx#6o&|RzNkQ z^W7*iJt&MyK@)(^0hH?qRCrF}RXx;5XWG+T&azF8ivBuF{rx%t^hK3)-bD<ZHn!xJ zuGYeBx;OAjUGt{B&673r@Y*HA$5}=rN5n~7(#1&|`0+@6_2DOhw=Z0%@s!>uJw-{G zw03HU(oNvx-gT3ARy}=i*kkG%L7lvOXxQId<3m4~PW16`yam}$<me8>+@(??_cXPV zxvZ`W;Hn}?iy##j=ZT_+<}5>u#X!N$@v}|WyraiFj%3M1<UUJ#gv3<sF}{5?4Z)uN zy(hhsrz3VivZq46MP8lwItVU>o(BM{v9FO9=PYNi{UP)Nq9U8S-8==Bp{ze=FR-K< z_IMq!MdZCScDBakGP#~@<b66pC-K#WX$^y>{i1us>A3z?e8GA<F&_jN3s$wDw4``~ zi~iz!%}hcZthFakzR&uvv)wTqs4Xe1n?f`(+j0}cbnc_QkZ6P0cVo#h|FBn76Ty5| zgv1Panh5d9Nj+rIScl5VT?Yv8T~K4lmorOfAf({O#c?OUg<=z>(8`=muqfowQseR` zqGqoOI1Kv2{`=6z#2jGYC&=PJB(#VTvUq)${Lf9i*V)G$L<3(#C$;BMZlG~}@x4@m zR8^6qdOe)gq}japme<eUdQU5kc&;##oda#i#CV8T>;P(qYblc>-%<C3&ZDu1Ik&d4 z4jx=&zYiu(S`iWyV4t5>80<sm^ouO2`fdH2_$iA!-tSgJ&pHWb0uyu8Pp=Bh+vu0A z0{$-htYR-_M~Gfj@V`+V_8uCz-MkFu{8dB88q-jcVqq^q{JSN+Z|qyB#OJ=cxOVtz ztdvkgUd}az7Zn~h3OyTa1#<WCd%h&=@wqHD&gmIp(w%N0NENYJ-qFbuC$Zt;m()}3 zpO_y4%`}`62T8M(<5>5@VUaLRrRS;d?l+zZF1~Le@wtZMLxV-(4@tG(aK6ZXtfKH| zFsHP_N1jol<ltyKyzu(-xjBpM#|8odf}oqLgEMVw=%T#ilaY)S8wQrhF8RTDmQwB2 z$NA^BtX%mG3=GbwA#v(Uv#{G<Cx|VcFS=!KVmAzel`c1III}qM2t=(v`I=K*Uait3 z*TDyvAFh+>DZMaLoP{bK9ZskEekq0s0{q+bkq4su+w`Raa)At(AU2SQ6Gxg{iD(f8 z`5a@w1!}aN^ZV&>w-T=9qvXR16yXTr0xi0c{>AVD<_6|rct~TYaV~mumN@9G_zVUD zbJJJ(DHCnkbXn9lM9y?CNK7;<#Q8+=&Fc^F8Rt0psq;en+3qjF)7txj0o8=*xG2KA z%-f8Tc3Ez|Aa@oT=%%JQqkvZ~Q4DPrq~PzlSxBPk9qy&Pj<LjRE337cR?gbdKjyzP z5$@JUHYz--%{wSM!9o=A3*pVe-*a{rllDP0OYcTiHFM9&{H!5_qwy%uPhkB_igFKf zxPBxl122$(4bza9`@gpplq&3}I7_9GCdBl+{r{e(cMgX5`}+5Tf1;OzZvsDh{<BlG zr8C&VA|E>qIvlCbcZy)sQ{r7m&a3Q_5GdQf%l0}n7*F_m;mh9?$H?SZK!C`zruR#b zl$i=3IrvaV4NDS!bKJ#2%<OhvjWbT(v=kFz9J>B3^{z$)fqm{N0zxCkU+EAIJl6Wv z2;G*S?~N<?&!ThpDi-CgqT#Nrh4YZVz<xC^OJ)%z?&9JL{69$6O6^TQO3X)~rHLb> z0r-N^f4K@F3Vt|V_#a*f?5tQR>N5d|c)S-nT9+i)PC`BkVY3PUi})1rPj<7|3q>1L zoah41*I)OCFt4-f==#q^v4h#j8Kv^i*>nR<U=#OL=KHsiB2O(eMP83C_@6xCJpP`j z8|(0%4t`Rbj=7(IxbsF_6UWyGFRkEOTmG9|S%!RhmLv=##*jcoke#A4Vg{mKgmB~@ zP5%}B<XiH|LK`6$(Q#O;cJ2R$`CnOOC}xSrJLkOPG0jCqF)t(oqB=G`%&Y*8SpQ`* zr^O|i<s%0d>oBi(MwEVOXznZX(OLXZf=F1vc?#wt@)xA<3yzEO4YTqPcV5sb!kIsl zGm7(l6Z)g2qkr)NRUvBTD0Y&MWls`^;gsvVYrsx+7W08@-s)ou%CT9C$&ciJiEo;n zlUY2IMju}j`)Anj|3$W?GwHc773N_34-l2?7OE=eSyRXtST(<e{6`*zR?+xegUtZ! zKa~-8!pQ9Zl~+6%M2sOmkEwG@Pg!;md=YAih8>X~_n%=x%zw;aFETHgYGM7y$b5D` zREb&iErfsL@BJ|2oWlm@;w8-jSMUFkSCsqzlK0aMhLEf@A@t|-@SBr3e6mZX>i>-- zp|bR}g}m^N?KsBG)_2u4d$~JG<49T13DNQ9`2TxkMexEmrr7tSkXLgi-%a<w!qY<! zhT^oK2jaiCzvqzjq8(`SCC>u?>ybPQYa!w_8T`klR<=ty0}v7PW@-HBRm3v6HPq$} zM2yrkQRXB#M%M%Ve|W?c77<T$LXm=|mz9QDWEWJ#S=*Mr6R0yAy)zYmgGcPMH?HvD z>@@gb*{}AWd-jiz{b!>T^@3TkaP=j0_??(P%{xeS@FVf1RtL2U?@Mb$XbN_SuC}t8 z*)*6Z8C<+(w7B0;3;a%x>ID5|?f_T=9bEr|^M53EQ+mz(NgxJzlY9XH*hMswU))1V zHf(Eu(Hj@5e-HXy{E*0u|CaKnYcT|4znE;^s=vV`ZbM>>EIfM^{{6+ni}(GBYU}-m z-wE{ZF9#M5JWzCsl;rd5w~%`mYnx;x0BWuJnfHm>#k<-2!z!N{63sEm<=M4&+%3v| zX{%eLpmw-I?3C(Pp+RVB-oD$chXFkETaw@VS%J-$h`1OC@79^n4m$3G4yn5CskiE2 zAVNrW#g^BO(uaxVK;7$o7dUS4faLL@V2H@^(c2LRf`Z?B`Ixti*InL|xft5){0tVc zBX4v?YHW00uc@8yEk{{Ggh))nUq`LXhH*SGrntx}^GS${y=Lrft~ERlruF!qq@F(n znN{s<;6#Ds%g?yo92;iQfZ3-Ot>vIL%+|2X3iJ32CHI+`Y^DNa;n|#;I+RgX>%vX0 z@i{%d`J_x_22L{T%MNb(F)fs#=uvog_I?GJ_s5W}_lfKv5zkkAKh@ipw2zwkpSXOn zdOuUX%>ZOWS0}<bvaNygeJ|w?iIHU9Hu&d9#?jX<X^gb)Y{Lx0d#HSAWVrs~n$TP^ z1zC6chN!Ch<uyeSj1Hge!u3w003dW{iy=>d=;{!#3>W1=w*POc@`~qjkdxneU=(1i zB7YS{y)%zM%N_`iZw9-soNP%~MZD1d8*P`&AdjeqGILltZkNtZwfc9g%BxV)?_f`9 zSS$vBfw$Ky>7KFYfGg}lWOJN=hxiQup7e=9)&|gCa(X|(l^_Fy#_nom>^G{FvH^>8 zxzp682&1|qt?6mH|3<A%<UWeg@%}8$U2}2&XkZuIch!PT9p|?WOX2sivGq_iYJQUD z2Egb@t>Vjo*VcE%;`Az}Kf4NZ_+EJV^XyLSUY75GL|_=HNl<kGpc+Vz6ZwM?hl98l z$bn4Zbs3`zw=-Zc#T6;xepE;zO^PIX3D11K>>$`f-<ol`^3Ie!daVYR5ujRza)Qbh zRAK@F)oe>^zM3`v)yO~U-X2ADF<dsLK6#~XlE4oQya$VEhhG;S_1TScUDN$uQiG;) zJ9w-lK=-zh?~1}JulAxSO{C-n75)yd+?!Dz$6{=<b0&52Aj=>ZEk!JN26W_F0^Brq zc4RZY_JRG1^qzgk&mU)-2}%KNln7)sMde9U#q!9fLjjDRY#zK}5G!nd&VdJt;`C$r z>;neFVK_d0x9uE~j7ZgwPzK&U)W$#d=#swV#JA=}yYd~#2PXR@v?7_P?BV3NwPylg z3IL$sH%r)uiGeXN>mrOaZT>5*>s`Plq||i$bHli~TzCcBais;GujOBndp^7m%4;FB zcY{Gh7ML@AYlrPV;x8_!VUFaTGEA5gO#Nxh>4@_E09e&$23et@wQ?|Nqk$$}^$p^? zaL60ciC~8-Oi^#LPJe0M*2#>O_L-9-4_{hkb4XqJi{o6DD0qZ{uoiGrY4`r#NXR4x z5G|y0Rjsj?GTJ48#q}D$ZKrHoHV*vL-Y<p(X8lMRfwHaQ<J5mH-GvBX)=MURpX199 z*@33$ds)z;C5)OFy2O)PUebWLPgd$RAUeN6W{RrMNNsCPFsyzKVxwXJ00{1bMBl`v z$!}_kyg1aAuYqE)FDHx1zK%OL?nsF9C2^;)PXN{d<*&RRQ4YP~=(w~nvO7~Bv1n1_ za^HK{4u6`*8OnVO!sYEV1t1&-T;Nimy^+H9w&a)1ZiUzN0@)Kf6loJ&{Y*Q_r~d7G zfFc)lACm)epp`@h<{HV@S=2GLbnxA@&Hr?d$r<+5ohSkPIP5eF0g$w+cI<K(4h@~y zD)@^CdDrWp@IX?nw=9C1k_N4f$dNg~e=?u=XES4#Nm?oT0WhD1O+&Q)$nv}9WOFW@ z!J5~x=Kxt!4l{bltn^cdHY1Y$Wee=lcBUY8O#7`oakLKss3ah&eGbnT4*ghy)r1jw z)tEJ?z(#GL-h~rc0$5<R!)f{1Y=ddScX7Kd!8zmD=j+Vb<iA5B2G2-@7dDlgk0E>J zD`x^A4#ZHhD<_A^YKT;NABb~ij3%LXh5eTikT?GwgQ@`FOosf(fQ&8>5BDw;CXotk zG7rzUkV)P;>JZ3-u;9a8hG~uFI5VdtdH4=0ODq&Jbp2)<x5Pqo#!%7UH0>ZS$?w(z zqRF=sMC2xX-UXLuT7A&9%vFQlv8-V^PoO?kyDyYGAP+5_Vo|P)|Cr-BZ(P$L4(v8A zz+!0mccEtCcx2lLPh!}^8$8^4--kBI@4dUhBTA%l+2sgoAZoL*CNcI<Ln$xdk}qN* zB4$($w4`-T9SyKmsI>(n%_+BR?An(ftcHZWqo28UN&E{i5&e||VW~BiZlO*ynRJ*5 zAN*H$a9ZXD@e6la18Wye-_81^;?;lD7RF686G#?<bc%Z!zQG*}R=@*t<#?Uy&&fqi zH`RPnUvA&dKv~@=He5bRY<8llyl>`lDn5O>1=8pydY4>hK&cJpx%CD|hgBpN3|I8u zs{jCN(h^&(WHH`5dqkye3~z<z(l6@A9fWLaUv}4sWga+r_4MnND5cu1xr7v<bDxeD xRv7a4D_F3KH~4Sr%putof=~2D$m9G81OSu!!HEgK6lZUrs#h<N;~zf&{|AoUsapU5 literal 0 HcmV?d00001 diff --git a/vector/src/main/res/drawable-hdpi/ill_app_layout_onboarding_spaces.webp b/vector/src/main/res/drawable-hdpi/ill_app_layout_onboarding_spaces.webp new file mode 100644 index 0000000000000000000000000000000000000000..35f2a0423605ced6f15d4b69dde1a5dcd50b7931 GIT binary patch literal 14102 zcmYkCb8scV^Wa}zY}?q_c3y1Twylk=jcsnY**F`&*tTtLu+b*D{eJK6cQ;ite@spH zboWe6O@FG@WTm7~cmM!xNih{I6<!?#004mYukS$s7=Zv$1r-?pB>(_{ALY0qgHg7& z<$w7>IK8PaD)C7}_Sx$r5F=(}yXxf;o<yZErAnI{&x)v$hjzTLf@(#+_u~h05ieo{ zpq3mI;#P^?|DYm7Py{;TMft;{mENY$2e;m;*k9<iaVCw1j@dUyx|ZGq+uf%<EQ)Pp z(#=|Z2~Mzqf~YguAe2ohyX;0n4r?)O<VNC#NcHS9Bc4c6?6*=MAi#0R8c1>EWH>d2 zFxLg4B37Dia}<83XF$>2OM8mX0%-rN8=RtaYDeN;#={uv75VtYYMW}kddfGPNHCAu zlNpbvBOV!>{7*Xx`tRt=%Hf{<i!N1vM2XS%<jwEuua%dz*QL#V-U$PR0k~E33$Cvr zvq$W}(&8m)C{o4eTjD2IC^6s%yLWBZJ<2mpl5wR(1>F%(-;O1I*5ce>7$2IMuChCn z)iGAQGU)7qZD)&YZH@+mqbzGG*DqmfzcN7UP6E1G;bV$-nE@@SU}Q^OAfr)gtmX@K z3b(H{&4SB#aW37i(`pV@NpQV<lg|y4>?F2>ZUIv{mGFXEk2lGpWX2-Jk$tE-lJ|bD zTiJ4Y3`nVQqGf_aC7X^f%5V<_!*O)cy$U5!IlUYwG4yQ#dzLDQ&3LNAr#!U`kI zAr+%%q$#*O_=c%r=&eR8tNJTLMR3s4dUYH14GI0O+|(faIHTw~1BqmYhV2mET29w} z5eDB-l7p_WKj7$%sJ=S9@IbOmsg=6$``F-?ijC~=0$a8*MTD!uuJI>-ANWFfd1E>w zy1gAH!mNGGnTD^J8b>wEO-?XsJ=%gwT!L&Z)f1Ct(LwgAJ<4_*3h(-H6g|rR_IDqw za=&BA$Df#uOxMGq9U3*OaOg~0ux_vuUp2(b?JVu@Vx#iRDpkgL`j$Rs?0An%+&Y>& z!X1@Tg)@hNPT;D@j#h12S^@wZ`Hc8Wnn{NQ-BP?QpH#kRk}N!&dOH1Z7h~ngVVPW) z3Ejk?C=*L6fh>7ss{zHx*iiZweK!9Ld$hn`m2RyMBKZBOE1hXcZ#aXhMx&o<*GqHD z0swjffbK{oE!NX%OPBrDPn&R#Mx_NYPsjS`x0Go)CC5a&NL8GH#^!c7DU_TGlPa`c zQg1WnU5N$eaV+(wlBW$jgZPRQT9nkZgUzG1C>;~_uno{GfpTb->##YU@3Cwt6@V>u z9X_sr;fpnph5*sWy5A*P^VlD?-LNPgW>?f0${UauOB+tBKt6AwwCK(36MF5?Qj_kG zaQBzvPbeMyx2)Z{?z+|{uP%v5x00WI8ZC3y2)M1Y(av1Kd1L-yNaiI8aDg%6oV<^U zSzjk;GxEG?TIl%l7O-C}Pv{Y<YnW3ZF@3eQ_dG4<EOBPJK`Afs@_n)eR*&qKeaNuE z4>Ab_(p4EYuTng^mYie^0=PB|(?_0b))?7MK%zK%e<(z3(4fcI42+eJru<D;xFiuq z1muOYAo1kC*s>2?#ws=uzNlk53`Q!`iZYup|6pB_&gc5YloWHA$7DEI+(b0qU4k*= zzt0#0HLYE+3Oj+V9NEazmO4cE00bM)BtJJR$ff0&+T_3h5Tr_1>2Hbrp)v$sT{2e1 zRZ_zSmv4;~ESNGZ%K+fY2rHcGFY>a8Nhd`fxPmg_5VYkg?tZD)v}|ku&H=k(4Sy}M zct~Pi@aFZ&p#=Sy7C%qC2dIHRwX;xN0!A!m*qSaol8dvcj#*N5cvn^(AVb`a%SWdb z42zKoI3(xkV3(yqFFyNSK=Hsk12g)yNbU<ZTps>_Dtt9BL7BlqqqYnX#yv=}&VovM zVgEM?L%EkQ5x)Js0~$`mzA^GWSj&GG?Z>f*TPETv0XLmVN6{kIs$JV&#_f}fZ7RmH z)4Nu?rvV=_|LtN}vX%-bU>4ExoR+gz$kHxx#w00UMed8G62>BaQSD-L8vS^qv+_e@ zbpEJR4b%42Rf`HWx0+886E1wd<y<lax0d4}%Cr<d+|`ohc8G<mrqwlewe7{1`{~AS zh=2su4eR{cPSh3pU?4b^%(*09;~IUf%Pp@~R-#5O7zT{X;Bl(wkb7YB@vQ-^oAimd zKpLelyG=|IGndHP=sRw%A4-Z8Sf~SYS?_DuNS~2;-O!{`$<nhNfju^4aHTAPv@7bK zA~Hup#CGN3D8(Y2@)0Ih%kVn(=+I!j3ENo|D<@N$_<`9^1v?VjpBGUj#cvmEsJ7(~ z@Q*@Plt%koG48$?q0f&8*P#vGzQd8$tQ;F8tY;%2yqpZVFCUPOFsDD8=o8C||1{C7 z_5_3NX`%9ib1Q~A;le|N`V;HOTi55I7m_O^ykv+HD_UUFM!EUNLAX1eQrx)yx@{qm zm&-IK+ax99Aj%|H4RSdzc4tb1j|c^q#t14GDq+1*+uIF!!H~9&0R;uc(s|Ys!|ayY zU5X%X`Et1IlW<!U+)xumC&XZ+JJ!<|r<pOT0Z7}jHbx9yN&x$)y!I{seR9zPB)}p$ z%42-GNk}|*7s=0A&H_Wg5YGp+V1!4D2Ti7awmiMxOT$#r=tF9$Kz5(29*;$a=iBsZ zEH69xg=d(Oa=jtNx9S!oKltlH2$9<LXM<y+_cVXhvP=Zza#+*YilrQxP-Pl_UUFN9 zRr$dpek70M60M|kV;wCqHi&=JPVp*C2?NV9%|;L?TRaFs+qJ+)SZE`={_PvopKI{A zVgo$bL@pF0i=H&XSMX~>Ku((V{h`hyiGmmORnc>HGcAJ%YNn4tZHf_VK1o32JATz% zIr)b&lXB`uujIIvOP|(}Qa-_VNmP$lkN!H-$Fn(j)gJivNB>!vl5pSXySk)u{o<me zndUq(6&wGE(2^~k`#Zt3Vn~&SKUSA7@%&+AEZX66Rb`B9X%~kU{k(b)V46BNv%>=> zL(AVE=5?xLL;NjV2jAV2M7M7f59pWNW@~C&+N_9!FH6-dyG_as<dX<!YHfV)Cm|__ zKAc^#V=_gRXp!SaeLR=HRQ|Y1@2bM-wDp(JF~yx|Y+ltmBIaBHtC0taT>r%Fq**J~ zKW*Z2aO7f^+N?e0n-(&nXGP4O+~r1V9xhXKjvG<Co9wJtAsA$*wo(&-Ad;cu+pMMa zw{E;e8vlH5j5&cQqAWR^umO-fNRq|c$q~ifuu;2r^tgjDsbZzL#_wlV5i6*8_wN<M zJ14|6F!0A?`hn_8QiXH|tMinB)cwgEj+!4R8iY*KGl^2{H)Yx1a(}<B$DBn9FJMSy z4?r~4mq6o2Z>R(;uQ{#xxjwZ<RO1%?UcX!a-6g<|Dr(?q8>YlsBfpR~`b)^UDGw6Y zz=I57#pmeE93Qu2ky1^WyV(c4Ca)>j{(Irx7vT%DXj+imSdp;DoEm+26e^RIkFFlt z1-c+ahu<fd{>ylG6ef0(D)g)=8SbU6e9XXn&r5<P1o4?En}(d7OVRj`BuUTUa5eiC z8`{23FH3J`rl{VSi_yXS2LI7}HpDf$0|J}S0tGo{-*s@Br__;;NnJ1?gfhiUJ`A!R zherVtgaSbnbEtjK2O_m}ca{ZOes9|Lq}u1MdK-xB^jforA7nB}8Eb83IW`~=Kqxyw zlZ9dhZuS3gm@Y@|<ioHv?V$`6E96D1PF~G)0QEbfm&|a)F?|$e(2&q9wi+43N}$4` z#>zxnp&)g%I%Zd@8_pVH!1L#WsGP9!G$l!1)fH%lDFnAZTrSBVfy6kCGD!%gBly@> z!|O#f$yuYirMI;(>w^8kQlNSSjG`pYjGrdG3poOcFz}ctI}1qS{!2?GCY&j;2nHy> zguG@?U?~7>!6DIep6GTiin;S@Ln;t~=zNt{<3D}cl|6*PlIqzP%pIpCLt*3GtXnmS zB7slHJgdX=^gcOJd#QE_X%bl?B8wAE<rVUl=NH0n2RLunMdUR%K2uTOm+_bk?E`zp z`>Zn3#7nQ~981X+3=KaOSI}IWJ`Z<#I({S^6x)fz9qxPFVpz#;ZU1;@CKjiysAhTF zwl8~vihBO@yw<`NS(0W^WYWr$s~cyDPX}VPn_`r1NhxO?3aQp7vzufPZiLO}H>D-p zdBAqZ&eNo6f0?R%BtwTON)wwpQ|zGp!M3L5`8$%IV?+4J#AMyv_$Y^EM^nJ|k=Q=a zw9B@tE*uY*-zD^HYeqrUH?u^57eYfo*u4Qa-%qr7bZw`(mpkCEFSL_Zb!0L|>1O`e z){MbizzAyE^5t{w)%LuSdC#-1K>l)D=x4#V32JO%br8RdxcbKVYUIXi`yqFZ@^-;3 zh`^>TkqcX56@6$l7+)y|2ndSjcR!$*l)gR_0>Ae*UGdfSCW`Zsj!_=SHUI_tMCM$@ zv-qjK58F>0A+&BSt??fEYza^*O{e8blTpY9gSramJnJyF;a1AB-=}{Cjm1_X!8zB2 z!9z{HeLt%L?M~u-+t+QVA@<`~c_0i4l@Sr{$D$zN-SG&V4M~2=&gd4yU_A}tQ;aLV z9oV!eAMsdz{J1~(D_PH-a1;tlT*~jgy#VIse^kKxQ?ODVQbdpth#*SwMfV^_g~$}x z8o_+>(4RCGPm6(b-~++IKhM`Gp&^w-!o=d!w-ZJd6{*WsmBBwq(5JC9LL}2O9N^8? z;W<en9~i($%ltHdo7tWHmQ`sejQ$m(WFeg>C<RMyWu?U&c&wJ)Txy@fT~$LlZ!Rwt zwna(}Z^}E(A`P^XJQ7Ph^RVuJLIpwgcDzri>#0Vlz~LLoZt9;K)a@Sv&kD-`57(Z5 ziU!v;W^7;?EMcb3&Ox56!Qw0PweEgyE9&a<$=@<_Vhe=MIo&Do4-he!y`cDayb9w^ zcO{WaEM2HC*YYtdE+k}il7|yE1N;|syc!xYx+^Su%t>0d`^p~oPE$6VZ5g(@p1Wo8 zbQ|Uea3L@Go6n&_PPe$ALY~m6e(qLXdjZi1M6;Nq?{MF5U)o4m6->rT&%w9^6c0l3 z;<6WG`4zCMHcPyOS{;f8_yw++bY@Ltq?`_*NNsVe=~*dDws@}4+bS+1VbvGL>LQLy z>0%c?6u!-2#$_S0CYulnN0^E$<>#z{$Vt<qnd)EjPx?=E;~{%COXD+S1M#$qEc>98 z4UapBVe%WmCu+)54vGCz5~NMP#C$gZ7=~yiVYy&lr+3CtETM*hhF~?48PW?3{r)IS z1^){1Iv7K($D(uD;gF3OJX<>Vn<QTDm+A$%8p0UwWDFoxixTye!tuz~PjN3G=`@b$ zh9kEufcHJ5^MobM2Y}`wWWQk}!|*SqIgJPpX_@B7k}e=hgGHU6Ke3T{PBp!vbG8I+ zn~=eCb`VqmBSs2HX0t^C;scaQiBC|<@A`65p*&$iD|;}EJ~|xg-d)CBqrY8#YgOp| zoQ2=eD<NgcNVD82IF+S3Q>Jpf2V*gH4@42vOgDu;Z69=DIy(R6R;m92ee8y7z8-qC zC|s%K@29R-@M5wsOLMl%B(oqnxBR!vT8wuXEV>kG-O0t^EW<~FzS+6S*V1a6Ab>F8 z`=rxW_vt_tcJK=&18$FgVFkH$`_p?}XCuE(hLd~YZ%}mbw-f)Y=zJw3pVXYsv;mc+ z?Z;<}bstu==!0UYPz#Fu$@D&7=9|z)M+c7Vu4|ujul98gmRyDJ8YHysw}oS`XM7i9 z0+^z=5|v1na2uQlC!b39G})vpd)SEy`tln?omRfA<fReE!k4<zKp*x#R71**bB}jO zXDttTfyLZy?gAy72qbm4U-%09&LOvG@S!vzfZ5vc5}3YL)2@&C(r$Rk2S@%_=L5`C zsX|%vT(OB#b_-BiQMRrq@6Np+qhLbWPhvZMUE_~bYYb8sk$aj8nhNy|n_J-XvbdbZ zyr=|Rk4~}pirEH{bQ3LB$x|4c7I3FTuve)u9W(KLyNM2Z=40EOX854$izlRPV%u7z zwZ&b&FQTf?&+$vcG+o)6p|-SDceJ<QX+l_ygU18upqJxtw;2{vAy+fONBQEfmLOAo z*(WrC#v41gCg6^}Yg1};4+36^|DP({?s7+i-@inz+CVYFydNiRh5F8=j*OD!!b~Ki zTChefTWl#7TD#^7@?7?gBHX=Nz94uBQ2no|<rQTjWB;?67cGhSGojv(jstu93(RuL zCI2FdVU7cG=xEFYCmULXeS3_y#q4KnrL2cA_w=Tv)U~v}cDg#GYCk8=oyf%ZS|Ri} zLZ$0~DPnbb*XVBJ1!&p^`!r`1+RwKL^qm=bEGczc5*5zjwIyr_1VAiFU6!2_XO4h5 zr}vpO2_I$u)ArrAz{rK-!7CvY9mL4Y7Q2TDNeNW$b1)n(#~OsaxpL<7oc?D8(_%$I zjdZDB&kvTK=i6(c{E8Xkpv&Y^Z=QoO3x_&v&ztUQTO~9%P$a7FXrqY5UNr11lvE+x znKYmkJfDqMUOTmEz?D-|{c9Y=k%*8#u-j9w{5|zdf_No)`vZ8ZS3P$N9Ao<VFTT02 z3mj)7Q}&MfCZfPx1Wm&gO-=0z^8!<_)@7M(#nhml-Jp`_P-g)@HLew71WZ&Uf3TtW z=2BoO1O3bwfKq)VYcPlO((<6q`7?g)dQNK;HcS>k92HFKZXCQXGy4DXm*-s8Ckjv1 z_;wqEYCG0&@6~HSv`#}Sxg%vsZ$9~CfuU|QMPeBFpq74z3IBZBC<?@f$Fquw+}?W+ zQHLzO>K91?;IdA)>QbI#%^dQ+=hWvf5lXePjMn+!(*RL2xIv#DQ5)JEX{`As+}CCe z0MYO!G&F`g#mQAE$Q6oz2>}|UF@@-1*BygRgP>PwZ%Kt}iUZq4f;QZ+@&r)2$@PO1 z6zoY@zL4;oXDym7=21_vNAtFZzp6{*WPi+LGz^0&8nQ3;gOJ4du8EN7X&1MT>Nn;> zCR9x&cWqy=VKZr-L=$K%v_Nvxl|rD53&hb7G26l`7N^NqK&gkPkmJ{KGogJ4;wXWD zi$5Fb+0=m95fqIsrq80k&^j1(ykzjQe33&twoFsfZIuWHKh(*mN{z@cazvcxRB3nV zK>3da0j|D)U}EbuN`469M5O@oWVNVte>fk+{sk5Esl)>AcymYmwHB1GLGT^$L;Xk@ zn}~3RQv>@9m8`UNp^J?5>g*|4M3OaJqhRPHq$>eV1dDtucTRUjk}crs&%Xvh?<Adk zF*bh0=sX?zE8+-TcK>cbnvdz1v2K&3%l^|EuIx(aLGgQkO^C}1SpN{dKc}${lfly& zJjZ+>iRPz1F#?~dRNssw2mRHryYazkHhX>Zw0c?@g}>$3s?;O4*P32rX3rp0=jMMn z%A>z$YR`XEpxYwK*ev<FHCWqV=7~B(9ZD|s@AumjFL+%&uQxoJ8U$v1vtqpsuIOe} zVMPeuwF%VFq_q6^IzCEqXWkA^n>nFN(CULBvUg<6|G^R)t%M>SIWy*8xvyVJ`yrXo z-*5htVyei^y!cM&-=$wBG!I)5HIP@2|1pSERxNQ^P+4S5Lc;6I-F)xjvv|h(0*6tU zF{T@!Av0Rl<mcS*1fYufc=)Zjey5r<ZCai}{r3v;#n1oPkZ(?n{axugvlkL{$FB5k z!h?0`E+&P7@$=eBD8nu7o5|~${u!C%^A6!1P61NXdC{O{q0ba@?#r)cF>>Tz_wG5x zRMb454B=@D^pN4(#LwGHW;R3!s%I@?@BP4KbG2ZZTkQRCG&1c}UEYqV&k+6um4?v- zi}g^hvbHZ@@iW5b*<wEq#C1G3{p$r|OE4ux#`GX3rwBn%95*DSW`L^p`%Ov#Z+a=; z>F^?HLE*o%Q!{$@=Ln&9jch-(t_1IN3p*Fx=OHEhPV?*Y2sIt2sd_@niy{{wvAu%c zw5frw3_)%m29EK`P+GK*OoJV+yln>pJ?vW#1@BxU0fCw^!F=ezrW&9YabxalQ=qU} zT@!9z;v1AYJ|sHQIjYr3{Wj3t>wUF&yA>Tqd!?F08-y>R9m@CA1}Sh7KCov#{ToAW z466UE+C7lrk`W^^Ka!7&_uEWm9cQKYhc8Q1LA3phc<mVNNxU8p=rMQBAU3&_MI}Dn zAw$S&el7v-IFL3F6=SG*MaMpStYgHXT2jB#bsG2l{R7ZrkbGu{ya6z6&>;vrCk+RJ z(dfCB{he%SfjBYfScUN~?8PxZB>G?Tt2BeUcm)kvQ|SS=ZKPx{Mi)1}Z_SRE%9(51 zFj!iwq^V%?wHu{%<jFoe9O9wqhL)GmAH)z*I(?rn-(p($JoYAaRd>2<f|cQKj>+*# z1`tJDOR}TwnG-^=6RUqE?x2g*U5YJ5iO7?3STA-{53#}NcUM&>%CXf&8}0I{;R6U2 zYSQhbX%b0<_-z*%6`AWGE6-o=W+zeFBU$Q^%eJ_cBpd!Hq15(YM9(ADc)3~7QN%2` z7AsDlk5R#;`dv*_k5@(~n3kl;H9=OX2vkQ?^<uYfWD6}b`q!CDptP0#;7(btWa=QW zNyii?`$plp(Vk`(iO=&ARqRYTt}WWMplz=)s2cSup@(gyd|B2cvLiv?=TX^aTUX^q zmQ>lqAuOF`c2trYOkUOzj!XhUyJUeL28V8e$XbgEJ7{GxN>#Tk*TASNQPm7XZ5Ns< z7K#pc$3w5VjHs0o9(Ha$WY<Hs1XbFGH($w<>N`u1l^REl=*T<k-!@f%<0?mgo3z;$ zE9RPLlqw}FYK97iQ-J}&SW0c+;UxdI)3xxh!H;8G=28hGXioz8#Mp(RM_{t^rpttK zg$5dB<9{V^z53rIB=+5c3Xjj`M_9So-#~|ARZuonw$1|sdw6;zg5h$=IE0Fs{p$KZ zc-^i$=T3C|O=BybiZ!~Nuz9vKz7c=a0;Vmbh^ycyhqeE4L*&JgvHUmrtVwj+uXqL# zI>Uo9>`lP>G$JRhv~G^=0+rF{7)t<RsV#r-jjXa+*qulZ+&{jpXe<>rw)RP35-3xY zo_tCb%axP=GrT?R#STIRPBlvmiEz&&;3SkL+FNZ-EOD`r%l5SB)MB?4%pujI{y+2^ z<5>|3rry2iGmT;|hlX}?msy#DJ_gcDYxjF~g0MQqKQ{V(rgD#1V2A<|^CW;B@vlNS zrS*FCS6~gawOR`~(1ZXK?CH82VkV@_3ds(i9e~Z${$EIrvU>&nyjYrGSSuQIXj&we zI%J(3NA{zmS(GMgsoYlXaFgVwUFA1yegXL)cbO-pjrsv!QT#ykJmwH3Q%No&o}Fu| zRw3F9FKjeg0WFDd^wl0oqy_Xsrh4y5AIIPk8E~NT%tDPKNel`htdRq880ql#IAmYE zQ)n5QW)y#r9hqDgfA-O%H<R{E2C=NCM!r481)VZfFi{nfBJu}o+&LhIeDSLJPr*YC z-g~$N%oxh5>2EU?X&jcjex|2RmMbWZXvFq6AVAEdkG>Q)%rC_UGAT!jo2=N`5#EgF zMc9Xq0r7y-H%^NTL>7~DUckJOMaZm+^z%#k%qhs{ayo7>+LQtBV?jsOA8MQdR;C}b zMuBPP9e$uUs?FHign?i4LsFJ65vo<u_|2CDi3)NPvY(+|><eF-4KuTS7zu_H;&g6q z<e$jb4kJg2nN}2qZJ9*UZUul$uG$?cnExck{G<_2Z+^e9=U15OZ(mfXpa5cePdz7> zBc+D{-x&FW*)SddgVUTo(;YHHlFz>M;1JsMbY!%ya!9zALv)ULtyvxN&;7T6M%I)V zqu%LT%9T=VHj)bDhQ|zv&}k4Ej+sMERD@$w=gx;vxY-oh;&W%BZ*o>nqz%JBwQR&S zZ)yLe4&mnTA^MWLE#bI4OXu<i1S;80N0TFuhpot_wnOd>bY!tD0e}`SA-q2sfLe># zd-o0t8Qk%Le)d@SypfsJsw`<fH$@o>CeTzk^o1io%UUR-0M?Bz{`fdoCZXD=$vj05 zdN1`Zx?+mF&JT|G-3zIrxXg*1b37*Uw+At*FK~x6V3ORGpVF+>#N~%P=YGyEMx*aO zkMIfN+iM&iBa8pV2uYgWIz99<l5r0Zl;w`fxM<KJW=^=;oBwqS0$o<e_&q<Lw38U* zXfRpQGmvkqD}{g-uV*ve%wla`9}AnILY;c{`udDq?=uJ80P7*D>wk73{75<YwxU5f zS(GpG^#8%0h@eGPF&oj5hJ!ZYfWuuc(M0N!&WFa8fPNar`69bgTgT*)lRg2nFN6In zA(#r+fydL_%ehLPdX5MT_H9DlCztOV{&RG2M`KStCv(bw%dYzQvMK2kBJl##a$ll2 zK>S5I`Ouw(eAc1k-wEX#rqe=86NR@fw|{gZirNUEN4PY8+`SoPDa{zFoJiYeji3Ma zXw9xdBqJ{?hTb@T*4D;ShscOz4>ST^lPr2UrfM1*-^+01M?=Jad|a977dG@)fI@UA z9ZJPT?PU;ZOA*o{K!mhub*q`AjyY8!&3}Sv>q{Oc_r!M-l9SPVOa$N)QK2-KrGCyC zpjXBjNwJ}pyjATzdrvHLQ)uSK`e-*6J>YBjaO6qxv(_Cr{v^HWP%Ip)C_cB=cPz~V zV$qj-&Q@kV)zw>4;`k9o!Nf*b;GpawT)KP=@TY5#xmY1d+v-QhnkBd)qP5#RCMLCr zNmN1QP$|F9G|tY`4%2;7xV%%)Hi#1grbX>pkdcx6Oq3SPXbGcZ+a8KlbPkf*bHYkY z!H}aTq=BFC(xS0J3F5o7xSsOVB?Af3Hz77ux!w;|hGEp|HN_$XeyS=<wa;(J=RZ;s zqW}EPa0ilT0wE-R*3*uwK2%gz4!276wSTYi9b`QuSb#>q>8CV&P#_)>G>}scT~F+z zB>lqtf_?VDq#Z4d#cy0s9FB2r*m;LZ@C~*KyA&)bZIbM-9chvpf(w^4W{rZrTQDN_ zy(ySOGbe9w<JTt`hs1?%9`AEhaW*kHoF`>|Xxx91;e=33Iit|mSV|oR2{Un9M$g?- z{n}25(N2)o?P`+YwnI%E;Ax)akAPU!p-SHS63{ft#ZCwdWgGsp?nZL`A(m!)ox0P) zirEHr4ndPm1va(+69up{YxV-O=2?fO$%^EMeWV|5Y@nqUV}iI_PO+n*=EfltD3;L1 zXud*|skKF(`S>IeSW$L}4qyTyK|iE=V{3eDPiTM=3AZWk1|%)7e9_C^`I1TLzhA;8 z_qg6?z*?-J;%Ynu!hoh>q^>NJBwkskksB|pV{Nf!VyJ#6HV+pXh|T*DQ?QA^{1t$v znx+Bd4Pn0OXB@51t8TR(yi=7diqPCO4V9h`eGr`9^hh2$cXfeh`UsiyG?smhmWf6o z`}{Fp&hNfZXm@X#zN<c9o7p#oHNxZ!?{a@Uu}9V56IpzkGP(CjyrQy0M-JP4_0z6r zc|3*@p7n7Qmg-#{`zBtq*<**yE7^xVD?ARTvn>D1nB42w%`4an|JUsC6H>v>-Y+&X z{VGe*I%TKW7G8SkuH~tpj?p52x^p{^n@Cn_rVH_SP&=lf66LN+c@UI(Jnp(Tq7TNp zz8-kRT)js>>GA}+<l40Ki1tr6*^%n(RtzfVAv2QM4^Iu-p5z)S_vsGTd<^*9T>ZdZ ze4EoU;(I%sdZX43I(`h?gJ>?{3wt`qzVF((Sorj8i;jdS22$J#lc@Z(x1OP!I>C%1 zqedr>ixBHx=FumZC*`XBwX<gzb-IEc6TJEqpn`^4kmMnX&boC%*`VIrveW&<@x86v zx8{y`f<ge=b{9E3OXib0>MvG?ryXQ(Cv5P^d;f(mp^>-Evj1>(cG@ef>__ImkMF)6 zur4$jR&4i%7cHyw#7{WZr8LlNV&d*|2^!*GWenLVCIB$o2*`(^--loV3Oll=%TiGk z7n8GY%myRJSUVj^e9cNOyhZIpo$cM<ez}GC$N56uA*WdW^!}Sd-NnO0UgE<&%tXhH z3?kzo@@adA-G*&cmVrH+QBGtftrofO?e<@P6?*`DxPNrk=KeWZ<#{|=vVXU}6aoL^ zG*?f}sGsk)&KyC6e>L7QUekB14@77JpzkR!jGbR{ICB38cYT)K^d8JS7!{NBee(2l zT6Y7wy<h9!60ZtldntP5k7wL&UO#m|4}C}jHvZ0B%<RLi!rqZy7oPWa1!{iH_zZYy z_%PpCneTlJn*R$7qWy^Y@O~S)(S9NQ{QUfQ==T5E@y7}*33y30J7KY^AKv)VvOq1+ z=eE0H(b^u+F1*lF3lD7WrneaJK`|h7$XHRxx`8mJrAxgfYUf^K`jO4H4VekE3Qhg5 zfG6`+>VL!+AZoM9N*h0A{^{xXuQ0Tf?Zq%Nru5nW)iQyzrW_I3t^R+MPJ}t8tRK{w zhcDIX9G}9MJ|wit+gB)f2Op@{5R6=dn<^uV$Tp`VxML&ipgzj9H1<C#{uz+gyMXL< zmReadcgm#HWf(#Q-EZ?wsQ}Yx=CDiRN0L#vt+Xj28J(YYjO&u>p9O^FZ1fbC6AD?& zRhGsCw{<~4=I99_G-k&AbR)&T04n#I=YF!O+5A86GLo%1Q-zy_Q^z<&nXbD}u^+jU z_~h#dVZtpxl3PdrrujpvL{Ak_3-Rc1??SW%XCmV>VnK`xRR445O#Yp9MIW|=9?&IR z8rSUi-~F5YP<w8nP;6};=mQgS8fuFsC#K<@s$K;wLSZ?Z{je=ra7~UB1h5r@!F=tv z(Mv*AspL-ojr&BH12ENuCHh1vb<8BH=jO>c^OKLlzB6sj9m_lTs87SHpp%y*ZF5`$ zuDRuW8o}g2Fatr+!jn+j1x6r#<@4Pr&b2L*J{cF&t8p+<pxPO6m8|)b`9GG78!<QI z;62+Ki-<n=L^MzW<y68Z+HCBZB6C07?YOFgxl*yx?S)TO;(rd_I^F<43w+y$PZsn? zG^Tp1UnQ9DD<!y%ZhlYdr8Sz!C1g8puAJI)eYe$B6!Iy{nQGKGWOtMm%(tcr1DUIY zXVs@??nFv(uz4Q|Rj2y_F;<ZNpkLGmvK9wrq+70c1^Wp60yF!jP-3lruEx+3L3fi4 zIcyo#Yy?CjmDDR&;AFS90YzkVN_`O_0&%a*Kj(}&o^lTCB(AGc7|sF$A)KM?#ljT0 zN*VD-@9|m0RN=a{$rGfNI#2t93DPmRw<n|8oTb07HF~oAJyu&^Jo-Rh3Ul^S#AT<g z2rSODsg1xm-`MA#sT+gTZaDd|aFMZHI8h^*ULfVksXfkcgcTP<>qZKviTMN=q0~w% zf-H-T;}Bw9`FG?uGK!>Sj*U8lK;F|e3QkDl9z;)a{wLgSU2-j)zlCh_rzQZImj~BX z)|b{4<_GW>S-lZA(kswVndEebq^AGC^Ol86-94)g8EChp$BA2w2mntCGWtm{@ov}k zD;Srti>dvSw5pm*2}=G>e%U1vqZ!9yP|>Nw`>*-TqGNY9s?&Bj8VwTTsb=b{JGd=- z<n$KhX0J8N?`Tj~<hd&<+98R+a#>+>#PwRIK-DX!E(FN*p9`mg06NZy>kUXPWDSYR z=Bk8;8qgRee&d1j$^!~Um!-<eLHtnSmN$8T#ivWV*4)YzRWo7+kC*6=dk$cNt3(f} zf6J7swv`9zPTvxVC|OfRU<X@Mk?!Zb|KTGvRT5pxHDovMf@MZ-mAA8^81w~qLkw(X zoSB+?dAQqe_M!2Wm(JGE`E<h4$2j`{VetPv>9epD0p1@+ML<wwjsO74XW_?dvP8YS zCTI5t(b!Ub<S{uC&JkY#-B4c1R4^7S0K%9Wm?$0;&A@u&H~JQ#Ofd)msIvk9qb2|# z9RL7i0svqv9eAlVnRD#bZUMM%radv!Mq9YK?2&<VlU-T(eejjac{L2{f0e6kuK_ZN zhotHuN#+*T&&F+~Uyp456;TF=@my6PYn$E~leAwTO{wApx=naw5-o0}ApWSze8+dv zoGtpd3}7Ham~hUD%nE>flUhO7KwaZTDsn=@Ah;W2AfnDnVIa?LSz4s3;om^1K$lVM z61>OKSz*|iTC1Y8CK6k}HEOjWTVTcU$_jY2D2J4fCMR<eVRKaX<AwC&WOd*W3K3eX z!K^0}s3$Xf(#U)UFx<caAh1@r1~oo%mB|yD;rSgfdo80Q{eH4=#UL1dLDU)h^A4qP zGT1KUSy6Q|DoEHQr};YF@u?JNjcJ-PSCIMnw@Ty11+j;<D_Hx3<^l0}nr?qs#Yjc= z+YR#h!^IBp^o?=x=s->Wb^7Z|LyY99q58LTQvQnE?e}D%_$Nvo;WrVUFrAormZmlz zl4pOtes>(kHXvMQ9LePI>tXiS#XbZ1a0b7;^M?Tm+<_~U;e2PN<hg}gm_~m6{oS4{ zh$ICFWG-ZP)5WAL0+_~2Nr#k$8gv$UORxdwwJd(X#~<SjxCb-#KPy(R9W^oRZ04nA zIEmD`s&}DKz8uO{92D3@nW7!QcAdB_<9hGXVt8K-o8{K~BRnsw@2(JWn8hqFIG@6S z(eFmOwux49^I8E6(F<DHPMP?KQ>uCp)5H<VJ2S(Mq-{t18di9(DwEucXVS%lUjmSI zZ)>`(mV3_zp5lfiC*=)o-A(1!)%>;?^sIe_GVjx$+&8I0>T~jd&AVNI8tyF5;${PJ z?p-2<dYn>(uAt+}BwoE{ILq^WGQM0p6q6I0aiC+ks_8CIGX_ELjkz#;pBeg;%PI7N zlHs@Z^21!sU_J+qzBfJ^S?|U5k+&m8*T&_q$UZk(wg$c1aE;*V{-MZ4az*>ve0Egx zI67^luO$1RL#YqAIL|0gsKmeGGFcr7c(&n9cT!4@<ICwR>cQ$eLF}|;t%_?Jo}~Lf zVu->Bz!|IQL58~`G0#q?yIXx?iK7D~kWA$n&@mNQ38(4#LnQ=lx0NKjFH<wU>>THX z51q#%nBT{5qdG+gNPNJ;GK<;6aLKxk2jrlWPAC2wn#`K|663V3!Y`~j;8?h0<c6&D zaftXZfMw#RqbAHS=<j5mM=$~3cT~7$J3&mk-%L0iu>qfdkRkybC9#krIi#H7SeA+1 zj6;)j($-y0j4wjrgix5-KM}(&L4U^(Q=+#cNSOPR@@p=kUS#RmzjyB<Wcg*ydD&N- z*#u?;##OtmA75tR00S~P<BH6F-@xG@Q8NY*8CQyAUyyFV#}^1mo`5O}tUu&0UYG|b zFP>6&3{t*2R^Zw=N4rfxVa#Loo?dnP78dWO_iCvkk%+2v=JEmx(u!xsOG5_SAI{nO zV{7w}gLZe$L@6f&$p;z6aq|Fmn99aSL4z6Gf9OpxlF|gfhA?(W?z0^>CIpWjVmujU z#xwr`OMJ&U5T(}5BL~pFfRBi;V2wkqpLD{;1=dk|q1Ni%&k%yADuT+od%12+gK?YI z^eH>!5Qrt*9hg56Z@4C@G`r9)Gy>T6)2|n?d}71(t-HfUBWkQ%x*S6`!`dr<v~lFd z+pKhDx1#IK3)G~<p|?SLqy7c2W=xH-A<{)_7D`vtWlPO{^@j4+jsV6K=9CYDFdIrk zERtf;aQ;k!q9btQQ5z<oHqD2{vusn;C`y;!g6^IL$3KK^CcL(teH&vUIKqFgxWn8c z6vhz}o)tVsC!o6kejk`u2dALEwsyhqkyBJxt`Gv|Ai3B_Z1`;;I<kB|Qz#Am%1k?l zH5~#9e$MrdbpQSwC_jEal>t)l<KQUL%C5AV$iUnBV*Hrb&09;I*8s2Tx@eQ8lH`Pg zU?HO7HDO9hsy=|1L8lV=%*sPjy{fXI{*=3ok<$d<FL_F5h!mC>VgM@(iG@i94a*G0 z_poxr*D8@l1}i3);1Qn|vI${1QjshqLzoXgcm`eqP*zjXPp_+T<(GDqtf$5V+bXTq zI-=Fp7jKg0LNedRhh{84+h0W(c>Ne_yiH~DSPmF?XKHTwf8XDgZu<M4AJRYkiOx#i zYs~e)qnVOFZt=gMq9!h#f2Ud{iVtNA(=AH2u=$>$x-(bIcWB!3(wudQjCzb0`zt zl-3*ZG87*q=Y>uCQ1s|X@=B=XmLRcdzt3;d?EqJ`+Vjw$?U|%PdqH07W3_Vq741gr z$x&Q2u_Ox)|3#yEjfvIo@)f;ay4;m_Ly*~EZXsspG<jHIEa-s0SGkBiLoc;FsyocB zrB$%=_aAJY`e8?w7dsAhRR(X7`Tm=`WrhrTZbdl7wLkTIszb8HfpbumZcneSksuqr zl4Stgx4NWQSKqXRkV^g<vjC0H$(d<2lUsD{07$_!pN%A}`Dd(Djx}_a3EwjEiV9&3 z9|Q8}#O4J4OXp|r*-3T;+YOJ?y#(7>oB4rGQix<5Ycgd4_^_^f=jP`PiJ~*dV3WCf zWnRuLvn?Da`ZnJKCt)H(iwT>;C4$HCAN^nTIszbja7hD79r}r@uL^yQEGwYLD)_pq zi%q<XBx=kyPZXHWJHu4^ND$}(lq>5588&bV6FxJ)G$XO936MgLp}wUa!Zq>&00**r zktiQqEE{j$?#y{zCk<Kmk4`zT{YddioH++n_3gj@;KopcZp?dnGixH_GHs<X`1JRe z7dyOqgc3fuRkLG=zXcR!E(v0N95ZMHh`);M#hdr?B_SO2eTBvi$JCEKK-Qyx(ga1R zWYsGAF?DKLj4{hR;q4UN*{i`cGs_acMtt}nJ<UV^Mtc~|u1XWua&?~q>9p7G-1k0w z|5*)JR&+a`ylWyJ!e=YD`VxK=%xP%3VY8EXnZY3MZ*2cOr;!#46GZ?k4l&Rpn3J=C zR4R}ANpsRF2^4$NPtuxp%EEMD-cadIUOf+B&cg=|Bqe!3ei7-;i4jKEdp~LV{A)z` z`By?FDSxS1smtS6I*(Q5N8r4_nWa*`qh8d_KxDsvo(JX&RYw@w>90p?SaGQM-||r* zlqbvS|423Ky-g_$`$%4u-f!J)k>`D>mCSha%!V{l|G0liX3B>~l_-W!&GFB61>;}9 zx3JT_a&Gp-tWp)}B3I6nYe=jWpK4y|yeq-O8vFD6{7Dbq9}2C`NbG?S(E3>-g6S@y z;)#hS((ow|6-A5RP%tl-B#5yzd1Ku@H-%P^g;r}+WN1V6kmTEUZP<hPX~75fehs#Y z>J$c|J+VQ~#yqNaMAf?VIKv_zc4D`r=297+Q{0nT34a(#2-pm?bCY^4-|p)-pAVPr zH%BhFrkHxX-6?`@aiyOL=GiQ#Ub2s{@tWXDq#EShw+f75Qs&Xn+WIS{uX|k2#d?RR zGSQ3Yy+;StjtN7{b-oe|dG3SX;X+gAnSHDIOGxQf>zEgq(YCjL#2m~=U{^%8nmhN@ zAjMd<i)A@?i4q1qDvreUt8n1+!3#O$YxP=r<Y&K=1jns~FQoQR|5<A;Nuhak=^G<? zQfTxMj3|Y}rsb)ekf$yl-hWd?FdJWO#a8^bOs)-U=((jwwfIo9_l3KD=({$0${@F~ z(o$S%i&;44dUb+Ytt}{cdei+ilnYksAfmyp@87#?nz^>|=)h;@t6#I=e#OmXvcBmi z;~^VMU&ktB<&rcF<?6+6nIBmEOTfxYuv;-Ye5bHNaqiCy+*brOj?s<`?sxwk<1HQ^ z*&mN=_E=45*CQ394Yp|>E@-egdU(nP;JWjWGqF!t3&>t;Twf2>DC>?edH$T&ggkDy z9;@~pw>=cV?JNS9s8pp%;@$$=;Pr_D{4gn3CDC_IUXsfy?+Nj3(rp=kCQh)2`VnaN z+xz&wk4<gd2>R4gH1pr53`?f@=!4#euHyKz%lSqzP$J~j@1pVEH?=x0<+YN!_rZ^X zqh?z}+A@R7WvrIf>IZ`S<LF1->GTpl$d(dHPQ0<KNgG2|;-xjFF+?u;WxW{VccIYO z8g#KCF>uN!n`Y$8OAU~8pwh|dVEc|ItaR_{;{?3-K|GV6+N~@ROO$2TwO>~-G-&-b z#e@lq8|*l!rKZB=;WmLWH3zm^+%(?pak~*<fK3pLm6T?mEXx6VQfWZ$t*&CRX9~=E z+B@R%2^%J$hoJ0LFtcI?w*BKoh}^dMrmQxJgq9KP2^-QmR%XDbpVG^h-w?q!4SkY! zU*cY(RP$g%43}hn9+(qV*!BsvRKvpul&R-jsOEPNz*s_%NOAJw<@y#I?`4$fv%sWD zn=&Qu(^sN^E4nUkAz|>F{s1L>z7$cvb31W3o+!t=)Ouq6VXk%Mnt#sv>tQAa`Gq)O zZ^3t@FW=}=?6Mn-TK_d>NNOZavE8w*^wUAa|F(lrhVAz02Azv2yr}sd+><de*B*TJ zLYqYIyj$68^-Z0E8-5=ELFWw!oa`_%cgsCj6cIT{Iz|=N7S4)}4g7jbog|;T{qQyf zYgbD}u~pai+jpYy@=;7ug+Xy^-2a5ySpq*J=-x~^lPJo*NjnDkbSD=XBlRb@@dR>M z+!vzanQs=QpWP7kIhfHH9N+7Uoz8lRU%6|w40=EiOimB+%jqN(M1#eE*;4#`r78S; z$9mBt{6V@V20#zWiqt+VX)prf)AZ8d6rbL=05KQ{6dTZy0G0>s6tIP<(eX2Vfd2)Y CT@n=l literal 0 HcmV?d00001 diff --git a/vector/src/main/res/drawable-mdpi/ill_app_layout_onboarding_rooms.webp b/vector/src/main/res/drawable-mdpi/ill_app_layout_onboarding_rooms.webp new file mode 100644 index 0000000000000000000000000000000000000000..07ece0d94707e7cdf94895a5f8c12b9aff852606 GIT binary patch literal 5398 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 AmjD0& literal 0 HcmV?d00001 diff --git a/vector/src/main/res/drawable-mdpi/ill_app_layout_onboarding_spaces.webp b/vector/src/main/res/drawable-mdpi/ill_app_layout_onboarding_spaces.webp new file mode 100644 index 0000000000000000000000000000000000000000..a77bce20e883662421c39b8595f89d97d0f76e6d GIT binary patch literal 7372 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 literal 0 HcmV?d00001 diff --git a/vector/src/main/res/drawable-xhdpi/ill_app_layout_onboarding_rooms.webp b/vector/src/main/res/drawable-xhdpi/ill_app_layout_onboarding_rooms.webp new file mode 100644 index 0000000000000000000000000000000000000000..e86bd5fe6b158aad0293e7e9cc1502372350ace3 GIT binary patch literal 13106 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 G-}pag&M=Sw literal 0 HcmV?d00001 diff --git a/vector/src/main/res/drawable-xhdpi/ill_app_layout_onboarding_spaces.webp b/vector/src/main/res/drawable-xhdpi/ill_app_layout_onboarding_spaces.webp new file mode 100644 index 0000000000000000000000000000000000000000..9b5b9fa607b45769a42a01f5d0f1aaf7fc16c316 GIT binary patch literal 19894 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 literal 0 HcmV?d00001 diff --git a/vector/src/main/res/drawable-xxhdpi/ill_app_layout_onboarding_rooms.webp b/vector/src/main/res/drawable-xxhdpi/ill_app_layout_onboarding_rooms.webp new file mode 100644 index 0000000000000000000000000000000000000000..f95909eaaea856f7b4c857c55f124c9bac5ea7c3 GIT binary patch literal 22692 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 literal 0 HcmV?d00001 diff --git a/vector/src/main/res/drawable-xxhdpi/ill_app_layout_onboarding_spaces.webp b/vector/src/main/res/drawable-xxhdpi/ill_app_layout_onboarding_spaces.webp new file mode 100644 index 0000000000000000000000000000000000000000..03e31dc9d6f8d0acd2d4b236a23cb14bc96962c2 GIT binary patch literal 34900 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 literal 0 HcmV?d00001 diff --git a/vector/src/main/res/drawable-xxxhdpi/ill_app_layout_onboarding_rooms.webp b/vector/src/main/res/drawable-xxxhdpi/ill_app_layout_onboarding_rooms.webp new file mode 100644 index 0000000000000000000000000000000000000000..cee3cf512ccd9ac2b74306cf13ba96551464727b GIT binary patch literal 32874 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 literal 0 HcmV?d00001 diff --git a/vector/src/main/res/drawable-xxxhdpi/ill_app_layout_onboarding_spaces.webp b/vector/src/main/res/drawable-xxxhdpi/ill_app_layout_onboarding_spaces.webp new file mode 100644 index 0000000000000000000000000000000000000000..b4bf421be5b889ed00119978f7e942e748d26930 GIT binary patch literal 52942 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	hrJ(}-m<CHW8)2ZSG4@dJ5a6bV!svrg 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 hDrS^cakcn}n;Q5400000000000000000000000*RkYNA- literal 0 HcmV?d00001 diff --git a/vector/src/main/res/layout/activity_home.xml b/vector/src/main/res/layout/activity_home.xml index 9899c15aa6..698aab2340 100644 --- a/vector/src/main/res/layout/activity_home.xml +++ b/vector/src/main/res/layout/activity_home.xml @@ -28,4 +28,4 @@ android:layout_height="match_parent" android:layout_gravity="start" /> -</androidx.drawerlayout.widget.DrawerLayout> \ No newline at end of file +</androidx.drawerlayout.widget.DrawerLayout> diff --git a/vector/src/main/res/layout/bottom_sheet_release_notes.xml b/vector/src/main/res/layout/bottom_sheet_release_notes.xml new file mode 100644 index 0000000000..1d14c2c4a2 --- /dev/null +++ b/vector/src/main/res/layout/bottom_sheet_release_notes.xml @@ -0,0 +1,55 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_gravity="bottom" + android:background="?colorSurface"> + + <androidx.appcompat.widget.AppCompatImageButton + android:id="@+id/release_notes_btn_close" + android:layout_width="48dp" + android:layout_height="48dp" + android:background="@null" + android:src="@drawable/ic_close_24dp" + android:tint="?vctr_content_secondary" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintStart_toStartOf="parent"/> + + <com.google.android.material.tabs.TabLayout + android:id="@+id/release_notes_carousel_indicator" + android:layout_width="match_parent" + android:layout_height="36dp" + android:layout_marginBottom="@dimen/release_notes_vertical_margin_small" + android:background="@null" + app:layout_constraintBottom_toTopOf="@id/releaseNotesButtonNext" + app:tabBackground="@drawable/indicator_onboarding_carousel_selector" + app:tabGravity="center" + app:tabIndicatorHeight="0dp" + app:tabPaddingEnd="8dp" + app:tabPaddingStart="8dp" /> + + <Button + android:id="@+id/releaseNotesButtonNext" + style="@style/Widget.Vector.Button.Login" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginHorizontal="24dp" + android:layout_marginBottom="@dimen/release_notes_vertical_margin" + android:textAllCaps="true" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + tools:text="@string/action_next" /> + + <androidx.viewpager2.widget.ViewPager2 + android:id="@+id/release_notes_carousel" + android:layout_width="match_parent" + android:layout_height="0dp" + android:layout_marginTop="@dimen/release_notes_vertical_margin_small" + android:layout_marginBottom="@dimen/release_notes_vertical_margin" + app:layout_constraintBottom_toTopOf="@id/release_notes_carousel_indicator" + app:layout_constraintTop_toBottomOf="@id/release_notes_btn_close" /> + +</androidx.constraintlayout.widget.ConstraintLayout> diff --git a/vector/src/main/res/layout/item_release_carousel.xml b/vector/src/main/res/layout/item_release_carousel.xml new file mode 100644 index 0000000000..eeb999b187 --- /dev/null +++ b/vector/src/main/res/layout/item_release_carousel.xml @@ -0,0 +1,63 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_gravity="bottom"> + + <androidx.constraintlayout.widget.Guideline + android:id="@+id/splashCarouselGutterStart" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:orientation="vertical" + app:layout_constraintGuide_percent="@dimen/ftue_auth_gutter_start_percent" /> + + <androidx.constraintlayout.widget.Guideline + android:id="@+id/splashCarouselGutterEnd" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:orientation="vertical" + app:layout_constraintGuide_percent="@dimen/ftue_auth_gutter_end_percent" /> + + <ImageView + android:id="@+id/carousel_item_image" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:scaleType="centerInside" + android:layout_marginBottom="@dimen/release_notes_vertical_margin_large" + android:contentDescription="@null" + app:layout_constraintStart_toStartOf="@id/splashCarouselGutterStart" + app:layout_constraintEnd_toEndOf="@id/splashCarouselGutterStart" + app:layout_constraintBottom_toTopOf="@id/carousel_item_title" + tools:src="@drawable/ill_app_layout_onboarding_rooms"/> + + <TextView + android:id="@+id/carousel_item_title" + style="@style/Widget.Vector.TextView.Title" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginBottom="16dp" + android:gravity="center" + android:textColor="?vctr_content_primary" + android:maxLines="2" + app:layout_constraintBottom_toTopOf="@id/carousel_item_body" + app:layout_constraintEnd_toEndOf="@id/splashCarouselGutterEnd" + app:layout_constraintStart_toStartOf="@id/splashCarouselGutterStart" + tools:text="@string/onboarding_new_app_layout_welcome_title" /> + + <TextView + android:id="@+id/carousel_item_body" + style="@style/Widget.Vector.TextView.Subtitle" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:gravity="center" + android:textColor="?vctr_content_secondary" + android:maxLines="3" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="@id/splashCarouselGutterEnd" + app:layout_constraintStart_toStartOf="@id/splashCarouselGutterStart" + tools:text="@string/onboarding_new_app_layout_welcome_message" /> + +</androidx.constraintlayout.widget.ConstraintLayout> diff --git a/vector/src/main/res/res/drawable-hdpi/app_layout_onboarding_feedback.webp b/vector/src/main/res/res/drawable-hdpi/app_layout_onboarding_feedback.webp new file mode 100644 index 0000000000000000000000000000000000000000..5ac890e617f2bbd2ab8a62e6486212ad676b8de5 GIT binary patch literal 10362 zcmYMaRa9JE6D``^XprFU8r<F8-Q8*2-5UY~*I>cj-GheU?iL7*LkRAE^8NRWdmh%) z9<{4#)~vbLsM;FxGBWOT0D!Kvgqn^TpB@qb06_nDFhBrS5I|f>O>Tw=000umI#J7~ zP?iU0O^~^g^q^Bdi2~8<w53U@zpnSne+w7b(JSff1}FnX5y_c9!wtuW0#Xrl4YNVP zNx*g#T;HNBSFf)3!}~$=*|zwCOwqsR=VTI6N@8HGH>RLJi6^m}7(Ms_j^pjP8Jq*9 z6+b>VwdJ}8c+1NMl@vRr?#V@mtXhp@<61Wr+tl105wXc8tsP`$5@TRt2~F}tzFrD_ zt4g8#GouE!jm-q;wbW|0wn-xl!uy`O75*i|Y70sDHTsw_T4<15$~C-~r!;ar<%)eI zC;KBSAzWn|*Yi3a>f}=7yq+p1EATO=d1=~p80=U_LNggfoEAyg^aG<UAHmpI+t_&1 zIHVR00~p)3`E5DDU+U!SP6~bTHJy@Td?7^Wb!6A?p%<+ek{J~hTEag_oyH0usw5%4 z7#mk6H#*KgY!}8}VpqnGlmpO+o2P~?Im&B79M1WMFT^cQPFtBMMyaekKsBUAomzxq zVKuP|iKb`ciT}QJ{@XI=vI!P7Oqa0tD`Il90=K`Cdxa_rH4$Uc0}T7vz>IxQL{a8* zE}97ON4;Y^gTp}S>yhxii-~<F!tZL(zp_ePepXGCvAH*|({()KO3m{q8rX=tFb@_I z<ha64;}PZEPAO;_uwqOIb}Rr&WPlt7C84Mi6C0L%scmT#)`xd3Zuyw3umu=}{+#H6 z6g?t&5fCUjJeP@#t}5w3@Y1;#COmWX$NIVF@A68rH5cO^!mn5_$Wx2cn8AEj&|%Dn zA8U}9n6xW#OKl<R4*?-4b<FXow0hR%+8q2kuX?kNkXXf4fj)}22WyVzby#xry3j7g zRsI>NFKW1FR}27Z4`<ezF51bOuOJq#A%55>->O-L-g(uQKqmkl`fpSqB#)6VOfmY7 zvOs*5?D|*?IsO0+poa{^n%|8Mp}Uw=z=FJ!lS@8`g2ddAsaNzIzs<6<(K*+p*_0m( znMw1pT16kPqqQd$nGYykLhC^dxCRGUn+1?dG&g2@cpWaYPryml+jqT&TGd-TATK7M zLA=nD8N&S{<StC&8|sQmjsldFY!~~E{~+C;m;(b1F=8SK6U$!sz^X#941*%irftkJ z+Jccv21`7~AU2AmAvzC7T{uTKY8MfrqnB7N&szf^*|tE^Oa&Rm%^!Qh08~@)1#qah zfcP*<%5p%S?<o~*H1!fMF(%IhkPs;x7WD_1*JCttSgpdjND_aO(fFF7R^2f%C<9LY z(F%|pxi<ZQgx5qI|E1cVkqGgHtOm71R-pgOT!b#1pERU#j;0WP@0Y5`F-r?<;1@#S zHf4#@MJwef@YXbmFo%aN*c%*kY1PF0JDxQ2n$$RkUjc2#wqb3vD_{m2J7D6Six*5L z=&h8$5bm<cD?tLkCtOTOB%2@bq9<eV+<u1lTgTv8S0UBwU{4$-)p<~y(*wZf^F&9k zuR_Y>H~#F)L(_-J)qFD;w>?pix?F|fMxK+;Idh{&OLJq^+?i$6t*?$}z<-mRp*}^- zKwU7#5W8m$216(IugGnbZdBO6s~*;NH`aT_{HR~}p1C&@5H@Wgh|5Nn7^_p`cRAgQ zy5TqXB70)dZHe&wyni5CK{lCx)RK*AGru+v+}^#OW?~B~@y<}4VbbGWdn$<D2A3;c z#qk93E7);6PI<=OYC06K>-q{cjnLZ-tm@q1Blz6{M!I+!1n+tG1{S7?B*uK8;FzEC zP|*YnwAx(B6arLOTQHpR!Zp79I6Yo0lV6)Oo$@92z}o<2vvt-+eTKdG#jnI<+buyK z=!@PIXSmi_U6-$^r+8b~s9h>ZW#14Z9Y7<eiOBo?so^}n<}{ZwV)*ON@IJfi*l2IY z7t6FFH*Ggh(iifDnV?M$r8>NlQ{gnZVc{^;DlEL^CGqNOVdL&b1hcgwCXZJR({)fI zJS;<S7f0hag&enUzm*&$??3cPMqbQ+d3$a*<+#xv8#wy9$-17>2KhLGeTv*d=~f8y z;X6^GEA;y;c8$AR0fOdnBU+D56(1P(Qw%nox(rtkfkk6ZI{!kNeK;%i9ZU3nt4>fT z;z~g4B08b`Z_6#4m!7ckF}Sp~uo#;h@O+JoX9WZBVI{@9wm9PF-O`h*`TB~|3po`t z<=V)LLQWmET{2_fM61*-(+pZjy3yoWIM}s<jV%=(y|Q)qY1l9sYr7>VzH+qY({up) z<T*}aZvHdZ%goFs4>!XH{^|yuly6j;bn#bd41;S{RUaefx&X7n`Nf|eZ&Z7Is@Pz% z>=?CMW9knlZ{%Qc5D6hBHg_w8fWP{=ct}6M+yM4rOsYxs5*$RbvWH#z7F;i-pI3~S z{vc;^wOb#P$}<nITy5n^;2sIVgbtSbjzcl-8a{*WB(T42R4=)0hyNwqgM?dOqZIwE zq`tFX)%J(0)nxZ#w>hRJl|E{sHqG>(Kurn&es{I+vP7>skE_?K<tf-ajaS~OQ9kXW z4*<ycWl*1WKuR#7hgH$(PTtN}G{!-j79FC*v#e9pMJYAhVrFXPsDT@N{?k2m$y&bZ z+C0}QZ^IPHGjG9c#(ph6BDvAc98+(O^KfK<0k$tk$s`R=A48)2uuGufGD55?f6=W6 zox>8B$4o6cwZ!f9-N8$<pxVj&lM&NsqqS~ZulpQX_3Ds>2uV{$A?A+|wT8ZGM<+G_ z;&dy$m9LgflgmH<^;`yh6FAQ>^7~W_ieTXi83Nl4`3a7{nelO1x{U6S$0Dc5dl~Cs zma?wVNz|@o>0#O{46Tqk9`YKPH2UqG$Uk(O0cn3e2I$n$$Hre>)4KL*SRU2d@J`RQ zY@Kl+)*XKo#QH^Px#8cD_c*{EwIoBth~mc#Td_=F3yTdwh25QCb1hD8-1+&sT+uAP zD5JO+8Q2N4#C$A%PBG&&L1`KAybyt@-twJb=4u`Ak<B(@)`uB6qT8gR73v<+ln$3s zo|R)Z>t|@yWNo-*Z%vgOYqS!78SCT<x@7(FO=deF{kB$zn68~};;D<LjNCqbyKDJ} zxs}Zb19tU~{?qB;#&R$L3k!!UVW(50dNo~`gy@5#;8#<Wd~`Bd*X-yX9@Lw(;0R+A z>R3_V#%Ax!mo611@4=`}BGopZnASEo<kl7!Zg0C2i-WJqhvK$cq}h$YXG4f0KNv`x z&z#rhC*2b0RTP?$)udb%k+GJ8&}-Puq0GehmGMsF-k>q-)7A|kHfEKNPELGOe)oD_ zo%G)$agh*Pqt(S>ShImCSvh^T)&eO;)~-m8OG7m+KvqW(=>l8rkP+?7rPsvb<X(Ii z#AdCp$I{9f*_Bz)F(8D6h_zQ32#1a*?9;<r_;vco{>&v&vCz6;j%<a`)A6j~52me4 zhT;SjJ@RhO38%+^@KexgcHH*6Ve~kBzd8*?@RmpoNI<y^Gfb@Mlz>A54l~Rs(Xy0* zBD|kj8PTo%LrOgLkcl%{xNG@kVEK47Pm(}5%c4CgoNfCzU=V)6MHrl^MN06j(MO>@ zR^Qw2>lgO%0)JYAHP4TvV8~`!;v?S(;uF2BIY&M5f7+4e<1D~*EW+#iNk6ctyWl@0 z5;vgQlZ$f=-Yv)H<i{oPSAT8HBFm&8+i{-&TWfBs4Xg1(+zOG)R$c6=5N&&-WGHky z$Ni_m{;>>S5nbj9<LgF*OM({ruNNB6BC6^l0CKamn!ER>6Ami0Z#rBa8J%cxaV`lj zWp8lJ#?vLrwSbfFi8AytICZwn%l#kY>f{Uxt>vXf@LN?mp`&SwGMIbru9Zxt&1c@y z74iXd>)Uwgr(#xH@!1K#tS{XoSML7mC9y{debPZbv*{<&vDz!V+4CMtu}~?S6BgMU zaIJI>bxxg_MI*w6)<2zHLvc|%Y8&UxP1SE349ocsEj}N2|EiRgk%hx(J057)w9Wfr zUJ*#6wKmO%@=0E7Dw&-PK}ob{X@n1o2=5*Bhxdy_DhtY#0vOBzFj8dYfK((-w~pt` zu-(J*6~*2>uc|;(QVFf52Io3)$Z~_*1_Aq5y5{MvJ3<3#=DI6TU$n~2Oh~Msqw&NC z=~oJHE6V_5Px3h5moZ`m*@Q4#SL+^LvoWwA7a@+)=gco64+Sg6=bi$HXNk{eJH@0$ zVe8}<6M(sj@(!zV);1jrpp7=6sS!h>$VLE+-P0q4_VfPcIB^)Q9_ZJTq+Q1RCwaYg zhU=E`lJ`5dmfHJRaJIm<Dq|?beTtMv;y6RCL@Zt;HqTTka_o0uZ5kHkHjWK7b&(<5 zbSclVY<S<01OWC{i`KjaWnZ^H9zytbPKL*&^Zm9b9-WQ2f|S*t9q|*#UA^xhUi(G0 z;<zM@6fSAqaI|mm0fUlOc{CLn(><Z;%K@Appb)10L`lO)6|)HUN|}ZXAMUZg|5RQi zVp#|Y{o%$ubQld+C{(O@$(a}Lf{gC=kC*CMN!Y%3E+sd|0c{1ZP(0O&24laS)udg{ zLRr0Hxis)t!?29NzrK)fM$^Ghzk7LRC5hnoUDecAKzDj9+TNT}JNK^!rN$oIZ)>RW zJdFed&ANogo?G?10?6D8=jJ~>F5<X3kr&m7mws?A3ymtT>ESZv#>UDR1;Lq2^pT!X zu^4h<iAu`FLr;*$Go9WxiN9>zCPW-K*T8G&-KFKqG=J&=v{P^pwbV%^_%Pi}J+kpL zJ&&tEIkWT))X@ykHqRELG%PPFhK%o4c&&Zjm@B{R*0LWX+vA3i)`079h|vgF^lNRQ zIH#Z8kk2<Raoz7Mh+I~|t7Q5hQvO%e&0OG`jT<FcRygu36+%cP$OwCcR$_W;r%qH> zi0q{A7mPK8Em;l1Qy0|=Y--PXXZn@H!n-*$O6?e**NiB}zF3jrvBSb;qeYrFf|vex z9dg1fmDgF%Q*<RyvJ1w~d~RUOvo<@^z??HH!}UvszSu*8f1*4=?2cvg3hAp#d#(0> zjGnzXfQe7i_y|_WPU@UKbV-#)0;;%9AQ9kzC3{jsXQ4HtA6lUU>fr1%0TXPu;_R%3 z%r+t$t7l<dPV^JZi%)5115`5_%;)+@97E)a{mhe(1W1%g-Zf35-LTrI8i7}o$a#i{ zatz1+AO}fNl?CFsJJ8^|4l^#!^A2RHyItreV=DrC(n%xJDouVxTSS<3GD;S+?1&ft zX2oLWeI!rfe+|kX3wVvS)vq6Clc4kPLJ-zRBPxYWOi+N`m^785E8PQ_jBR+(49hx% zig~j^r?C)$SJhY5Vr*a8qq?K|^|d4Gbbb#u60jW?!zf}D2J(0UeU{L0sCVp$Uzhs3 zJHy9qZ_<fDk;&s2H7G^VX$NiyL{e=y9Y{9Y5#tC&<ZEZF<WzYFC#`cSPVed9K|0kK z%`N3{y=aHagW+;I3UZ>sBrFT*DWk;qAdp+O33i`~gp|TId{Ndt%4F*|S>SptSd0w* z0gYAff`;}OVQRl$@{L)y-b9zkq*fhaGIncGP++cq1eGDTB+|mB!t+iN?U2X`9?(JB zU&u4M@k-o#coP42l8<AT+*KsbTZb5x<i)q>&+o3}>r@Qc+l9bjvq*uuJ|24p;&J>U zm-1OS$&1^7FqEraEWCJ$x+=4t^bp|<+47oT=1dRsAVbl=7%e=qZC)27ku09}C3MgU zTqjQA^^{;3nug+Ed(Je(`qi`|VtKJGPGeKQ)xc|JaC$4J(}{tpBH<4FZPtR{ti_j+ z+Js1MepCbjh&xl(<q*Udh#4kUYPyUUBfqs|jQ&>tPsUYnh?TX57)+)w*7I=i$MB`{ z7%M^pbQyZ<#odmz?K}2RhDM{+iRsPrwly|Eo3!nx)xsf5_2IMlqT7IWZXJQYj8&xG zCtQa{j{QdG2b-fu732dvx$n-Xympk3(EvxYYX%EFc@V?hIB{fDaDQ{68y#O5gv7$V z2as}j^VDI)8cyk};sWSMH?ab!b4ZseK=|`RQ$O_=I+s7c?tBXO?d|(d(AnRR-0Sn1 z*-PwCMSn6mMEJ!q4%F5CxFnU~hI;i)F1O~WEs}x$&~(oeRmOQlE%EQ;TSvp|E(gG* zJEqGP&s|W6`*a1)p49mW<g#jdf6H~)CB8c4<Pe8u0E^UB-NsZ*9cu?c(-J1R<E1G_ zKR2&`^@MW02J)r;&=5V+29NU7C9Aw<l)M(Uj92)WtsiNZ3IG)QdB|c+RkkWF{j^o= z_ZPP$P{-xzLMjL>wsGTLFoCH(l7<>kZG9%kw9$xCl(<I>bG58ObX=Zs(449K{i_Kh z`Tkskz%IGDOQ8-D{$1yWs+TFsKy(~?MU48!Irb&I|1KBV6@3Awh3p6MGfpHcsr{db zI241ZQZ-t1ZqE%!M_gG7h@iD})iFdIIYf8igtV$~bWrOJ{LWe}9CgcqI;6k6g5*)9 zACt)!6bi21bY_8u>@A(-ZOFq-oC*x}H2uEdN-$Ea1zaMx9G}eFsf&GIOut2)mi<#e zysRXwI-g%}E`&U_ic`5#WquQFn(?2i&k5UWz?65b>Ja@;(fvbt;*wl^D@^nXB6lhv zc9n<I&c{YZTswalFAUCZU8(o43;{DU=o*H>&dX{9%~O4rGqcg){z#)<sQH?%H{n#? z4QL~B)N%GZW@pkctZ4!<(;Za|qWu5Ua%bVvVdyai@!zBkai{UKmtXEO2fl2h4P}Qq zB2cj@BSt<_uI}XRW6CnjPF1^7A@gtB!$fTace3daK{V`pMg&2aCNy!W$pn9tAAYbE z8S%L|pc{m?pw=&fCh|~z_7(<Lj9bYe-GFb8Gfh*YmlmbT^4YE2{?n9zA+=(Y>9P1W zTT2<5n~2h6tgVQ4?%iY?CO56$5eV4|oNV{zx+UX9zzd49{DWt1$=JZ~sgZssTP_qh z#)}#tp#HQlpo%zUSy6_x0n}gS|5$>!8#UFU1)KBb=<kabbKa*|9^;Lm3)x|#^tcbj zCmFSS!m_-$&iP2%9ZZLTo5hEClDw)2VMGW}5Cm#?U@iQTs%ORaHiAKpJrw$@GO_n2 z^jN7$m?JlS7v}OoR1^h3N8)FKVj6sz^@t6J8T3@VKs=og)>T9&wQYa!@*)HW-CY?W zM^eE{V0hKOgM6zHE)+mP5UXpVZm80M6TIHjlz8cb;%{}<4e$nEp*HoAFgdLnu55Ai zim6t(9UvqeURE2>lf92LV%uy{U8amby!B=C;J%Sy>^>xxXehx3DTR}%yj_oV3~Hj& z=VI#<H0vS$fXER=rAtRKEodime!oQE2!x)DM9%yQXq!Tkn1|0X;IJ9b$!(_nK(X=k zn*TQAN=)q<IHC*QrxDivR93BO;m053tf3L&tJxILqQxyb;@NPVadC3*=HrOpPb&Or z_=+IDN9((X{cLjbV!>C7uW9Lv`-4*Yt*URvgfl@d@J~7c7Ac_(Q%B88bCfrNhBTN6 z+q8WpClQOJ(lfeAT>Kx<=<R4+UhPLa(cVSk?|Ve0;TQdu!_*Evqe;8uyP{vQR8_n~ zZTjw=zj5Q@@Ln&(Y_QWGyxLP9?Iym(mQ>fdOoe{eQN}$2H8+L?HcQ30ah?a&H>`v; z{Gzqo?`8cv>yAtLAvt%EV#r;tlA5Qms7AezD_69WX6;Iq<mK;3w8v0)b3Up%8=id$ zIosjF=pxnPF$>17^WDjP?iT1L6=F93!_N^h+7EKWuROG4dI~ZM<U{((3SeX@qZA#9 zVdl3<Zi3zV=cndPl2#%jfI!+8Y#P6`gIsJ2``7L@=U39;Dy5>s4cLUBEp-oU?RW>0 zUx}~vFPJ;R=gGbwW6BNho+DHF%n$-{_7~;pVEmN*<R4pIf|SEG&Rotv+aY?pk?m=^ z0|XZ=33%M8VfpE#B-o0GGUcx5KZqkOS<+#*YX%q(|NY>M%|JF7@JP;*F!fyt<rtmd z7mT}GIYu(NTT)<u9wbl=qaA$`$m`*1)f5^PF6L&12^#X!ix5E$p`k5UO%`a>INzJ2 zYDSP3N*KOBlSTu^Oy%)=8IcwRJTGUX5tA~2CPnU6<3=HausbD2-S5L*lQ#Ts-Qbzj z-I<<<JD;&UUyb~^_-w==)xj@90fcf);05T-lfy%x>R`k}IdJ~<Au8yu#1^rp4S!%M zQ8+ywC;HsT=Q3iv_|PT~JuoS-Ys^#usT_Gj{LV-Cz~mc-k(xcmpiz;2SU-?7(4Q=$ zaem<Misq*{&*NJ^N15Tc{n6$DcKHi=_GA|WX!7{&W4l|HGzosY1j0Dx#6o&|RzNkQ z^W7*iJt&MyK@)(^0hH?qRCrF}RXx;5XWG+T&azF8ivBuF{rx%t^hK3)-bD<ZHn!xJ zuGYeBx;OAjUGt{B&673r@Y*HA$5}=rN5n~7(#1&|`0+@6_2DOhw=Z0%@s!>uJw-{G zw03HU(oNvx-gT3ARy}=i*kkG%L7lvOXxQId<3m4~PW16`yam}$<me8>+@(??_cXPV zxvZ`W;Hn}?iy##j=ZT_+<}5>u#X!N$@v}|WyraiFj%3M1<UUJ#gv3<sF}{5?4Z)uN zy(hhsrz3VivZq46MP8lwItVU>o(BM{v9FO9=PYNi{UP)Nq9U8S-8==Bp{ze=FR-K< z_IMq!MdZCScDBakGP#~@<b66pC-K#WX$^y>{i1us>A3z?e8GA<F&_jN3s$wDw4``~ zi~iz!%}hcZthFakzR&uvv)wTqs4Xe1n?f`(+j0}cbnc_QkZ6P0cVo#h|FBn76Ty5| zgv1Panh5d9Nj+rIScl5VT?Yv8T~K4lmorOfAf({O#c?OUg<=z>(8`=muqfowQseR` zqGqoOI1Kv2{`=6z#2jGYC&=PJB(#VTvUq)${Lf9i*V)G$L<3(#C$;BMZlG~}@x4@m zR8^6qdOe)gq}japme<eUdQU5kc&;##oda#i#CV8T>;P(qYblc>-%<C3&ZDu1Ik&d4 z4jx=&zYiu(S`iWyV4t5>80<sm^ouO2`fdH2_$iA!-tSgJ&pHWb0uyu8Pp=Bh+vu0A z0{$-htYR-_M~Gfj@V`+V_8uCz-MkFu{8dB88q-jcVqq^q{JSN+Z|qyB#OJ=cxOVtz ztdvkgUd}az7Zn~h3OyTa1#<WCd%h&=@wqHD&gmIp(w%N0NENYJ-qFbuC$Zt;m()}3 zpO_y4%`}`62T8M(<5>5@VUaLRrRS;d?l+zZF1~Le@wtZMLxV-(4@tG(aK6ZXtfKH| zFsHP_N1jol<ltyKyzu(-xjBpM#|8odf}oqLgEMVw=%T#ilaY)S8wQrhF8RTDmQwB2 z$NA^BtX%mG3=GbwA#v(Uv#{G<Cx|VcFS=!KVmAzel`c1III}qM2t=(v`I=K*Uait3 z*TDyvAFh+>DZMaLoP{bK9ZskEekq0s0{q+bkq4su+w`Raa)At(AU2SQ6Gxg{iD(f8 z`5a@w1!}aN^ZV&>w-T=9qvXR16yXTr0xi0c{>AVD<_6|rct~TYaV~mumN@9G_zVUD zbJJJ(DHCnkbXn9lM9y?CNK7;<#Q8+=&Fc^F8Rt0psq;en+3qjF)7txj0o8=*xG2KA z%-f8Tc3Ez|Aa@oT=%%JQqkvZ~Q4DPrq~PzlSxBPk9qy&Pj<LjRE337cR?gbdKjyzP z5$@JUHYz--%{wSM!9o=A3*pVe-*a{rllDP0OYcTiHFM9&{H!5_qwy%uPhkB_igFKf zxPBxl122$(4bza9`@gpplq&3}I7_9GCdBl+{r{e(cMgX5`}+5Tf1;OzZvsDh{<BlG zr8C&VA|E>qIvlCbcZy)sQ{r7m&a3Q_5GdQf%l0}n7*F_m;mh9?$H?SZK!C`zruR#b zl$i=3IrvaV4NDS!bKJ#2%<OhvjWbT(v=kFz9J>B3^{z$)fqm{N0zxCkU+EAIJl6Wv z2;G*S?~N<?&!ThpDi-CgqT#Nrh4YZVz<xC^OJ)%z?&9JL{69$6O6^TQO3X)~rHLb> z0r-N^f4K@F3Vt|V_#a*f?5tQR>N5d|c)S-nT9+i)PC`BkVY3PUi})1rPj<7|3q>1L zoah41*I)OCFt4-f==#q^v4h#j8Kv^i*>nR<U=#OL=KHsiB2O(eMP83C_@6xCJpP`j z8|(0%4t`Rbj=7(IxbsF_6UWyGFRkEOTmG9|S%!RhmLv=##*jcoke#A4Vg{mKgmB~@ zP5%}B<XiH|LK`6$(Q#O;cJ2R$`CnOOC}xSrJLkOPG0jCqF)t(oqB=G`%&Y*8SpQ`* zr^O|i<s%0d>oBi(MwEVOXznZX(OLXZf=F1vc?#wt@)xA<3yzEO4YTqPcV5sb!kIsl zGm7(l6Z)g2qkr)NRUvBTD0Y&MWls`^;gsvVYrsx+7W08@-s)ou%CT9C$&ciJiEo;n zlUY2IMju}j`)Anj|3$W?GwHc773N_34-l2?7OE=eSyRXtST(<e{6`*zR?+xegUtZ! zKa~-8!pQ9Zl~+6%M2sOmkEwG@Pg!;md=YAih8>X~_n%=x%zw;aFETHgYGM7y$b5D` zREb&iErfsL@BJ|2oWlm@;w8-jSMUFkSCsqzlK0aMhLEf@A@t|-@SBr3e6mZX>i>-- zp|bR}g}m^N?KsBG)_2u4d$~JG<49T13DNQ9`2TxkMexEmrr7tSkXLgi-%a<w!qY<! zhT^oK2jaiCzvqzjq8(`SCC>u?>ybPQYa!w_8T`klR<=ty0}v7PW@-HBRm3v6HPq$} zM2yrkQRXB#M%M%Ve|W?c77<T$LXm=|mz9QDWEWJ#S=*Mr6R0yAy)zYmgGcPMH?HvD z>@@gb*{}AWd-jiz{b!>T^@3TkaP=j0_??(P%{xeS@FVf1RtL2U?@Mb$XbN_SuC}t8 z*)*6Z8C<+(w7B0;3;a%x>ID5|?f_T=9bEr|^M53EQ+mz(NgxJzlY9XH*hMswU))1V zHf(Eu(Hj@5e-HXy{E*0u|CaKnYcT|4znE;^s=vV`ZbM>>EIfM^{{6+ni}(GBYU}-m z-wE{ZF9#M5JWzCsl;rd5w~%`mYnx;x0BWuJnfHm>#k<-2!z!N{63sEm<=M4&+%3v| zX{%eLpmw-I?3C(Pp+RVB-oD$chXFkETaw@VS%J-$h`1OC@79^n4m$3G4yn5CskiE2 zAVNrW#g^BO(uaxVK;7$o7dUS4faLL@V2H@^(c2LRf`Z?B`Ixti*InL|xft5){0tVc zBX4v?YHW00uc@8yEk{{Ggh))nUq`LXhH*SGrntx}^GS${y=Lrft~ERlruF!qq@F(n znN{s<;6#Ds%g?yo92;iQfZ3-Ot>vIL%+|2X3iJ32CHI+`Y^DNa;n|#;I+RgX>%vX0 z@i{%d`J_x_22L{T%MNb(F)fs#=uvog_I?GJ_s5W}_lfKv5zkkAKh@ipw2zwkpSXOn zdOuUX%>ZOWS0}<bvaNygeJ|w?iIHU9Hu&d9#?jX<X^gb)Y{Lx0d#HSAWVrs~n$TP^ z1zC6chN!Ch<uyeSj1Hge!u3w003dW{iy=>d=;{!#3>W1=w*POc@`~qjkdxneU=(1i zB7YS{y)%zM%N_`iZw9-soNP%~MZD1d8*P`&AdjeqGILltZkNtZwfc9g%BxV)?_f`9 zSS$vBfw$Ky>7KFYfGg}lWOJN=hxiQup7e=9)&|gCa(X|(l^_Fy#_nom>^G{FvH^>8 zxzp682&1|qt?6mH|3<A%<UWeg@%}8$U2}2&XkZuIch!PT9p|?WOX2sivGq_iYJQUD z2Egb@t>Vjo*VcE%;`Az}Kf4NZ_+EJV^XyLSUY75GL|_=HNl<kGpc+Vz6ZwM?hl98l z$bn4Zbs3`zw=-Zc#T6;xepE;zO^PIX3D11K>>$`f-<ol`^3Ie!daVYR5ujRza)Qbh zRAK@F)oe>^zM3`v)yO~U-X2ADF<dsLK6#~XlE4oQya$VEhhG;S_1TScUDN$uQiG;) zJ9w-lK=-zh?~1}JulAxSO{C-n75)yd+?!Dz$6{=<b0&52Aj=>ZEk!JN26W_F0^Brq zc4RZY_JRG1^qzgk&mU)-2}%KNln7)sMde9U#q!9fLjjDRY#zK}5G!nd&VdJt;`C$r z>;neFVK_d0x9uE~j7ZgwPzK&U)W$#d=#swV#JA=}yYd~#2PXR@v?7_P?BV3NwPylg z3IL$sH%r)uiGeXN>mrOaZT>5*>s`Plq||i$bHli~TzCcBais;GujOBndp^7m%4;FB zcY{Gh7ML@AYlrPV;x8_!VUFaTGEA5gO#Nxh>4@_E09e&$23et@wQ?|Nqk$$}^$p^? zaL60ciC~8-Oi^#LPJe0M*2#>O_L-9-4_{hkb4XqJi{o6DD0qZ{uoiGrY4`r#NXR4x z5G|y0Rjsj?GTJ48#q}D$ZKrHoHV*vL-Y<p(X8lMRfwHaQ<J5mH-GvBX)=MURpX199 z*@33$ds)z;C5)OFy2O)PUebWLPgd$RAUeN6W{RrMNNsCPFsyzKVxwXJ00{1bMBl`v z$!}_kyg1aAuYqE)FDHx1zK%OL?nsF9C2^;)PXN{d<*&RRQ4YP~=(w~nvO7~Bv1n1_ za^HK{4u6`*8OnVO!sYEV1t1&-T;Nimy^+H9w&a)1ZiUzN0@)Kf6loJ&{Y*Q_r~d7G zfFc)lACm)epp`@h<{HV@S=2GLbnxA@&Hr?d$r<+5ohSkPIP5eF0g$w+cI<K(4h@~y zD)@^CdDrWp@IX?nw=9C1k_N4f$dNg~e=?u=XES4#Nm?oT0WhD1O+&Q)$nv}9WOFW@ z!J5~x=Kxt!4l{bltn^cdHY1Y$Wee=lcBUY8O#7`oakLKss3ah&eGbnT4*ghy)r1jw z)tEJ?z(#GL-h~rc0$5<R!)f{1Y=ddScX7Kd!8zmD=j+Vb<iA5B2G2-@7dDlgk0E>J zD`x^A4#ZHhD<_A^YKT;NABb~ij3%LXh5eTikT?GwgQ@`FOosf(fQ&8>5BDw;CXotk zG7rzUkV)P;>JZ3-u;9a8hG~uFI5VdtdH4=0ODq&Jbp2)<x5Pqo#!%7UH0>ZS$?w(z zqRF=sMC2xX-UXLuT7A&9%vFQlv8-V^PoO?kyDyYGAP+5_Vo|P)|Cr-BZ(P$L4(v8A zz+!0mccEtCcx2lLPh!}^8$8^4--kBI@4dUhBTA%l+2sgoAZoL*CNcI<Ln$xdk}qN* zB4$($w4`-T9SyKmsI>(n%_+BR?An(ftcHZWqo28UN&E{i5&e||VW~BiZlO*ynRJ*5 zAN*H$a9ZXD@e6la18Wye-_81^;?;lD7RF686G#?<bc%Z!zQG*}R=@*t<#?Uy&&fqi zH`RPnUvA&dKv~@=He5bRY<8llyl>`lDn5O>1=8pydY4>hK&cJpx%CD|hgBpN3|I8u zs{jCN(h^&(WHH`5dqkye3~z<z(l6@A9fWLaUv}4sWga+r_4MnND5cu1xr7v<bDxeD xRv7a4D_F3KH~4Sr%putof=~2D$m9G81OSu!!HEgK6lZUrs#h<N;~zf&{|AoUsapU5 literal 0 HcmV?d00001 diff --git a/vector/src/main/res/res/drawable-hdpi/app_layout_onboarding_spaces.webp b/vector/src/main/res/res/drawable-hdpi/app_layout_onboarding_spaces.webp new file mode 100644 index 0000000000000000000000000000000000000000..35f2a0423605ced6f15d4b69dde1a5dcd50b7931 GIT binary patch literal 14102 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 CT@n=l literal 0 HcmV?d00001 diff --git a/vector/src/main/res/res/drawable-hdpi/app_layout_onboarding_welcome.webp b/vector/src/main/res/res/drawable-hdpi/app_layout_onboarding_welcome.webp new file mode 100644 index 0000000000000000000000000000000000000000..5ac890e617f2bbd2ab8a62e6486212ad676b8de5 GIT binary patch literal 10362 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 literal 0 HcmV?d00001 diff --git a/vector/src/main/res/res/drawable-mdpi/app_layout_onboarding_feedback.webp b/vector/src/main/res/res/drawable-mdpi/app_layout_onboarding_feedback.webp new file mode 100644 index 0000000000000000000000000000000000000000..07ece0d94707e7cdf94895a5f8c12b9aff852606 GIT binary patch literal 5398 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 AmjD0& literal 0 HcmV?d00001 diff --git a/vector/src/main/res/res/drawable-mdpi/app_layout_onboarding_spaces.webp b/vector/src/main/res/res/drawable-mdpi/app_layout_onboarding_spaces.webp new file mode 100644 index 0000000000000000000000000000000000000000..a77bce20e883662421c39b8595f89d97d0f76e6d GIT binary patch literal 7372 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 literal 0 HcmV?d00001 diff --git a/vector/src/main/res/res/drawable-mdpi/app_layout_onboarding_welcome.webp b/vector/src/main/res/res/drawable-mdpi/app_layout_onboarding_welcome.webp new file mode 100644 index 0000000000000000000000000000000000000000..07ece0d94707e7cdf94895a5f8c12b9aff852606 GIT binary patch literal 5398 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 AmjD0& literal 0 HcmV?d00001 diff --git a/vector/src/main/res/res/drawable-xhdpi/app_layout_onboarding_feedback.webp b/vector/src/main/res/res/drawable-xhdpi/app_layout_onboarding_feedback.webp new file mode 100644 index 0000000000000000000000000000000000000000..e86bd5fe6b158aad0293e7e9cc1502372350ace3 GIT binary patch literal 13106 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 G-}pag&M=Sw literal 0 HcmV?d00001 diff --git a/vector/src/main/res/res/drawable-xhdpi/app_layout_onboarding_spaces.webp b/vector/src/main/res/res/drawable-xhdpi/app_layout_onboarding_spaces.webp new file mode 100644 index 0000000000000000000000000000000000000000..9b5b9fa607b45769a42a01f5d0f1aaf7fc16c316 GIT binary patch literal 19894 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 literal 0 HcmV?d00001 diff --git a/vector/src/main/res/res/drawable-xhdpi/app_layout_onboarding_welcome.webp b/vector/src/main/res/res/drawable-xhdpi/app_layout_onboarding_welcome.webp new file mode 100644 index 0000000000000000000000000000000000000000..e86bd5fe6b158aad0293e7e9cc1502372350ace3 GIT binary patch literal 13106 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 G-}pag&M=Sw literal 0 HcmV?d00001 diff --git a/vector/src/main/res/res/drawable-xxhdpi/app_layout_onboarding_feedback.webp b/vector/src/main/res/res/drawable-xxhdpi/app_layout_onboarding_feedback.webp new file mode 100644 index 0000000000000000000000000000000000000000..f95909eaaea856f7b4c857c55f124c9bac5ea7c3 GIT binary patch literal 22692 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 literal 0 HcmV?d00001 diff --git a/vector/src/main/res/res/drawable-xxhdpi/app_layout_onboarding_spaces.webp b/vector/src/main/res/res/drawable-xxhdpi/app_layout_onboarding_spaces.webp new file mode 100644 index 0000000000000000000000000000000000000000..03e31dc9d6f8d0acd2d4b236a23cb14bc96962c2 GIT binary patch literal 34900 zcmZ6Sb8se6+ozw{<`d_MIpM?;+n(6g#I|itY}>Xcwr!h}op;~e{i^n^)Bl`0)zwvZ z^;O;HcO4~3F)^7i06<+-NI^}3^Cvt206_hB^+N!DLIMP36eLL00RS+dge|^g0*Sba z-R|30AS(-9g&CLlgD?0^ma6FHM^Ajf1_PX=L{lqi-O4)H!XW$o+7aWZXOM~?{0ufi zFJKFx#$3fvVS2@f(?O!@XPL-U0JZ@cw@M+%T$Km!CO24q8ZhHlmI@NCVU(~e4JKpV zHlrf<1HTc-MxCXY)&4<cxJVbvFz*WadKS=0X;R2dibT}eOK#urF&_0i8?NeV#Oq2= zG-Ce~<cPs3v?s<x9uwFcPfnA36#JH*-bIFrh9U45>*dJtvBuV&d-Xoa5$dLu%j~e7 zqH?eOz>}Ct5lSI!L%y86&K+@Qly;;Xc#Sz)`Z|-oD(ymwwgbDkJJVDy)eMLMXqqHT zg1gBg4ON1}&NQ|o&?^pOh|awgrbN6Wsi+^?I8$Zu+F*CYjT$7YGWcnClxlM;Y<{a4 z-!55(9z<xqbf;TgqGYa9V{O1@V`IZ)V?+E`^lR4r0T|fyX=Bich!4gg+4R;PEPwO} zM@m(u5zl9{s9Zg!BGLe6jW$NJ?qlM^67h(Zf0Z2YCF983G(Ns2Yy`v}{+OC_sA>Sw zVo28EG8)BvUL->yU?XN&iQc}*#-i`PD#ZDQ+zHUoEy^T`gRZB3?iyR0O-lS{#8`{^ zOi`PRPi{)2uRXumnqas~uLccOdcn6#!?+4MZlMy`;9olzl!IZyFGhb6q3uR3rBwE1 zgb;fs`&Umk^{m-ysoS*7X16`DOVuCv)nS_QU{N=JvatTE4{+0e1<zWt0>;{~xsqUb zn$51IHSLw%wY2uETaw%@5=6h&T;2={2M4cCjOps*^|14m-N&Nm|2Tfs)BQSp)bn|n zKJW2zi!{w=QtMOxRDB3cbDNMadf}Ew<tbY!{Szo-F<i9Qz#9}Uj?pwO1DTFl;mt&O z=)8`D&*E5&i_3D4oM~8rn>blswWAaSRIuV-Puk6@czB{?OHvfGt=e6qn#>koc4=(7 z%#(S9Ub9v%-k@D`&-?>lp$db<g7w%gngqpt<%AU|0G+88NSPm%AbU!Pr%=3Ptb!nk zkff>!T1rWGvGK<oHO4|o^hVuvzK^2D7;1<RBq?Zh|5d|mB9)iAr`^76J#N^>et$#S zulNf(M=f}DY<X9g6*c=Oeuob;Byh#KlPwQI-;}Xf0b1>LeK3YvS^V*PmoySvs`<77 zj<J9KnNI#BFio?83u1^C-DK|}#XOj$K@87rJI>*H;X=>LjRxJ)lWUQ&V+4}1dWR9( zP-c#|9R{hiIpSQ3I!cn^hcpCkNtbP8{m0c>6`g20Ce_mP-+lyB(L5QY-w!Uuh^-wW z{;7Lyey7eI=toiLSavND8o8}$pivbSt${48xhHltyKs=(pAM!tilS3?J(+Zth<RQ% z+)05NeA9{G6QME&CEh-nCfx!Q>+yxOZHg1mV?C)f6AAnCF=1f#Ja~<R{i80LaW<K3 zjk~8I_GrNtzEds~-f{#COLEqgbAe1-YW^xJ%g&kSMVw-xDaFu-98I`r`fnu!3C}TR z+hiRg<zj6u5K7PQeA;~anbHnL7Gq0kk9G23mfY4C$rh&Hzje;PhvJ)*z;2m5^KRnz zMZM@S4E9Z4*wgjWixWLUgZlB7a~MB|!l;$62sh0pSMN_sRR~{`%9dz-j+Bcn>0W?b zab;JY7aCEL_TM~PBm)qgIHbk}Osj2^9B4-66f3yLMS#B?e<z8i8!wcTvxY2InL?&h zH&H|ktSEMwtR;5{r5{T@x>(0al0P!C>rZXPIh>1Tz(^;R=$-8tP|DpVp^u7mdD|eF z#t_LyY>LH6GAhswM;Si0TL`c|E15z9!y;%h{F)<0Jn$)CwloaxT>7o0B(G0=8n{?n zz%RAO1z3Yw@-dq-)Ig(?I1O%w$Kzov?A2S$=`5;Vfmh@GliHt|)`RI9RTO(Nmr}YL zHK-<*EKTESWu+;lf#TQ1K?(w_6)E)?rjr{oT=k@$M0`WiNWV<gEWgdMm?&+IEm6lQ zYI}98iFb&kM^%VF$0?SlqN7_VOPzSjYdj{Zp6GBnuG1ujTW#jUnH-g35eU+-cDxdK z3KW#$khuI^9I%DXq$yI17Ep%%`3F!5@=N~xT+%BeYJnBX63F=55}!gi<+Rn^TmVRY zWlZcf6?UYqno8a8DivOj-dADF_0p|t54j`L=4S6XGwGj7{TRVfER*36%~BiTKbf)G z^^J==?a!ZTq(P15&T}`0e=k7<%(#$^RJh1>06#b5Y?nXNZzZKp2TC(w_SU>T?$*~! zUV+NLu3}jZ0W|`zsQ|<UD50jO%)D$QFZXZXCigpD9rq_88su+#F6H!Gsa*atbqu{d z@?%ox;hNFGSc^(YsxH?TFXq>0-cN!@qbJ7+6fp9%PZJ7+CkO#QrlLAPbO@4}c^cWT z0_rUN<Sv8WV3TIXz|l7KC@xutl5{&^;kZc)m=u!V2}W*1m--VD_U#(qPcH_!(4ZFV z+2{eA%shqCqbd?o&e7cI+r&`v@uQ}K!cHii#r!=uaAEGT`ySAfeUapYe0Q9-U`LI| z61}VLw@%bx_Pe$sHCf0M>8KoFJ}Z~xe25i|wi127ne{|-VSAk!{e3lk)D3{*w=RU5 z_8%0w;^>0<ol1~PSRMD{aI|#Q2x}KfxCEP)Zj1RU474a@87a%9IAtOfu19vzYGd3j ztuXSKCyJV%07;Fc>T|%dw|u{ARB*qE^I4GEp{<S1BQ990h1v6&(WyWnQ2@q%Y~*}a zYiUBqLHI<6f5WBRwZTaci#un_wixajW<3v8Ni715)Y^Hq?8Sx)neYy0%Z~xr0@a%- z?Tc2?WX4!c)l|_e=$O0vlLeoCx~Rj?ERN|G7PwK`-VHF5C*6xR6P79xoz@Vto0!>k zhjvdAW9^^Wi!dPZ`yj#VwiZJqX_Wd?$$!hhc_2)})Iic?ldJxsH99Pmt{ZKuKmrnJ z>^_4v#?CnbXz~fSnv7K;cs2UYa><>%S`v(qS^I@J{Iip$NGUv(M@u!R&1QcI0&00! z34dgrr6iZ~vTAT@(RD`q)Fj3OYXCVE{cI-}K&dggV=#h$e8&)M|Blw0{r-$TppQT) zL`!wc&#V5}U*aS9Ggp5OtPgau(6Pf2IIiK%3{R34n;bYLh8lHNxDj6?L8eg^WrG8# z=_)2z-s60?+)<U+xai+Sj4?Tny49Gu%gpdSstUTNIhn>2RB&uBZCByBMaAbS(y$fe z8MRBACwuT}rbA=zto0<F0#W{cJg(!J0h`KDU=t3@3h2(c6l(|@o2|Mx$J?Uc8ziic zLR1J(+9XZJkv87}Q#tZ+;~8orBf?E47hjDs)V+CWOGL|y%|f4s=rGGU*@#m5KwLt$ zm!s|uwhE0Ax;vd>CK4r%%@fQHZcvt=g5@>xlQ|dxGE!j=Zbpxcb^Z>an2!>119k$y zS5B$DV|@#?VbMQgEeRXWlI6R8^McVjl@Hv&&5$}bhpW<)+7f0V@UW||6=)YrU2f1r zq_HJGSLu?!4DEqM(0@9pkD1RU6G5ng8J`*}q7T8{AX?MbX<TW`sZzd_Wn%Bph&Ws& zbX&g9dUBt7jk8unF6CzpP!a0)Qzk|M@0%$`lQGbJc1tFVx7RRgg@xv?zXs@fMl7!9 z;#(x;N)~@53FxHuhlXJeELwi=yNs~s7hjIVj0aLCYGbnyfg<ichSYx5`(41JKG!y2 z;I_wom@C@BfX;3t#c<5t{$^Ph#$Lp2@|RtT78a&%N-!dtNSB!4zWux+<O!3IoDf+b z@C9Y52;KLqiD>o%Gxf#9dD{1Zv}lahqJ@-j)##I2`GlJ+NdZYNAf=>6)AHtu!-(&7 zQWq8x!^!3L3l5w~9B4MohVNNL<eGxWm0>PjJ<0VaG{I|1A`yF1%MgX8nluUwqJ`xM z3Ds1H8kM}s3dl`iF3ra%e5=Z1L(<5tVJ;2g#M+snc<z{6*c2cwjEZZNoKrI4(cr`| zHj%q(%x*8{I~Dt*95t=Pu*y&gJH(xnH0k#S5_3+?8`7YTFwN|Obf%i#FYVlxMbSE8 zCdnKWE#;t{zIuTPFW_G<&W{C*)=0uhzqMy0PjGR>K8yzD39J$M=<T3mdH%q8+}}U& zL!P&ti4%)j1#%5O+{Z<(2kxp2o=jk?w>`j*r(|HO_cM0RaRbC*0$v24dCt8QW&8H6 zqnMbd)R1uj)D)^Z6B%kFs~S`8rv75#QWCj}sf3%yjJ}Jdg_L5n!Q1Kf$G*cF5{Ba` z-)VCW(@~r#$R-0;(Vn50auk(Fbiy+|htlR}56#(=!(>^vLnzx=nFH7}T=e1UX-Gwz z3mX_~O@U~9-4+uxznxt6cnbzHw{#VvLZf`VxXKk7#}h-Npa-VpW-q3%%*fpW_ot%U za&Lb?ZINO@9r8FP$~OW$;{DQy74;f%!b|y?a`{@0N6kZ}cLS{nZ<r$xo{dv_VODW# zjO1mq`SW>GGAmqMLa#<K*jC)e$F6+KMf1<lRMbnC;~|fOFq(g9*EzQDYJxW-tYtde zJ33YDE{@OkZRIwJMi(Elm&>LWbY*3a#DQV^|0A;#Q^7)6+h;A>gG&rIaW)KRDVI)X zE;}cl`}8RwvJ|PUq&wLNa;JC`pU{oiU`F_tA;Cko2|twM6wIA1R^pdie=&8bHnl-e zo@^iRA$z|{P0(|*Dg4@$Ltw|v7lABFtxvEw+F+c){Y9s@+rNM?|Jfh8h6#Hg?z<^; z99HZ-WD=}yJDa9_;54;r*)D9Sk@1hz4wwLpjrDRA5f5nQ1HNaqN_+Ze=9{^qK14i_ zbOC2YAj~%%f@|QFe1ah9IP%U$*EASsChfq<5i&x>&mT2-P_d8*6=rThPzMneLH$^r zPLkO{IJB!m$mO&r%}Chc5JACx0^wPf)mIZ4W2%56bEBe6B)`JmtU7l`K%x0>UO31u zANHH{YXfcF%bXsD2z{nd9e;WW9`Zn5e}e7b1cKP{9b;(vU}b-3wxy8-m~twahv-Y? zT=pVoLF%L`6dAEy#Sv@vb5Fe$*>_GQGuJRSw+)q9%J<Wqs+R^=R;UY^jODf|J@;}K zkiuEbRC?V3btGJ2Sr*v#bED*{aSdUKEuMZE0Py07ol?ZR;0+d9LAnkD1I_XqF^n<K z0b|vmyM#U|6jihcJ3fhNsF_R*5Pi;>wjhm9h;#+)P|GhYX)4;79|V6Ac#C@Z=yHzF zVXJ50M`w08VN<xF*Bt9%1I4|s9+G@q{V>pa2Qk5&MhI~fl;ge?V9B_=5&nfVpBZxx z?c*-G26l=%rI3}4Xx@CE;;9EKiB5hxv6TCXLL{xp-gdzLjprZ-uNp@n-uC<bxD6$l z7&hSk<z-rx42V_d0YrsDO+42VP%Q%7IYk|BSVZRz*Dqs^r`=7Sl^6|12$$Rbhp{H- zd*uHZ%kr92N2wo*Dbtg*^{MTl`2V4`_>l_j5u{@rQXf|hnv1EF!-gMOg=@4YS?F{@ zj}JMxklBvfY6#3oQOqqW$<sFfEhkNpJTvkHQbHdiu4?4tODjIhjnAXh@XE8^R9<M? zzD494BPK5wV{o1unUnj+LXqX|k`%f%dlL$fto^On;^rR$S)FbIS!S+TE7yjg@8DUP zrQEUPng)#8B7-Bk6p`8a84fsnqPL4Oi~9wpA^G4Lz-b|YR&VOD@%j0bp>gE}Y}Iok zNKe|?L%&Gskk}ukA27@!@%g$$j1fr>tN||yPU*I>HQJov62j!YJs{u5$@r28*007p zT2S)FM`z#P8t=bn;kmo!eW9UL&j|m;sOd`0OuzL|R}zF5hLFwW`pEkgCaIe%{CEiT zC62kDuq>?H41UD^lZ0L67s_5@o+x~uM*hleH2cE)<0wh4>aPHxN2fBn-#a#XZ<qCw zlBI0W4!h+e_s8FRves0>0MFGo%F9<kw+uhyE93;-N2q<XLoYyprtC~}sZr|xAr$0o z{z9MQkotwL3NM)xIdt!p!S%&DB~%amJw5plgs<;fY!!rwHoC3saD`<gm*Cj2%64yK zzCugJOquh)$q8VfyguUZG6gcok*5C#n`DE0=jhB}hckH!C2`@uDA0@A#bkd_KsG3k zLL<-e-DLcw4(rxZ+D=NKg;l~rm4hbqlTGmV@=r<l)r#vUOB)Cjj*}BZvR@HQc5>y@ zgf6@lO3(=xl~CoRAb{^h8O1ObZr?uv)y6{}4(gM8`6(&rdT|D4I{gnMDOnMr8EO=7 z|0JU)%aGhg?$F2I$##_<fhFjYom>()e@}z?S$Xj^kvMEK$iR!U7ae3eS>^iK`wknJ z4JM#spTSAZNxZXCvvy^W=Gt%@-$k64w()$xRz?Vs>BhHlYl}|ozrQKMS$v!wnPeZR zq7f{fJe^%W?-&0jc)bOpV9{6T$zj1p<Wd9kF?w)^B{#!E>vZzpr!^p$6t0XIiLpEb z>w~-UqNhh6<keB|CO8P^I<;FtJOniE6h(S`(@{_jk`O(;Mr6a}bvp%*HL1_dhj)Y* ziG?C@1iu=2-rc;$e7BDymZ%H6A43N>#HwtKs6?<+U+ml#3dIvJu==5<KJ+Mu0@sw) zd?i3LtfEO~HxPSCnpgi$=@4`<<#l{$(u#3`L8{T<wyE0`N<L$`tojRqqYJFPZ!H>v zM0EY8=c0>yi}*5D%*f9>QMca#4(D6yw{P8FrzG^=ky_(=y6@^AQ6Pe>XJ|e<mtVgu zd=H>)-2d(!w!K+ANRP#_)l#~_a0SrkyC&`%*6uSB5@~Ne!`yxBy}oL^6dK?vQ)tPv z1Nyw`hcO#+xq(Nm%tkO|U;3%XcdwB%9jCBus-GQm;pMI>qL-W&p8vjr-MI%dCu;Oo zuaWPE?ysjn3}pJ){1a<jSRJF~E+b2@0U7h6i-)L=)pd%?qp5ct4F*(Cd<7qO=jt54 z+9&@$B4iYFajY0fG;#K{<7kZgJ$%=^4f*8Q!h=$a55(_jCRVK<=S$Mwvth95@3zN1 zIDM#C-pBLHV+b>XU)1Sx=ZaA;Xn5}G?~D3g9Jjd}9f+$N-7Iyr8025^`CE+oqWAZJ znoNCe&f4$J#mKdx>&tpX$zV?*oUKmgGifN4Z{oIw&8pvPsOHqz-V#WrBeqYnElOKr z=5}S$<kICIX>NwiOVyy#Zmyt6>$eG>Ys#0AL(U=|0-WB6tb*Q#J9!m^c=t1ZcvQ7u zbuZb+b8Buz*}o;*=R_|h3u+Qy%L;LL+wq<~_Zs=K2~_M?F|HJg)jW3ZS=Y=j-sWR@ zQxrnxhkq{GV^*q1{R9T2B1&`{hI7|SG&6KosrtOB=eI?Jl)n1xad6m__tP>bB9Tnc z!L@%~Y+5}(?HdkBah}Bqrv#1i$esR76#3jLDxEppPdlh9EG!&gZhCAlG!9xV6u878 z0m*QyJ3yI7KQZ}4Si$=A|B%Ej>;;PG_u?PwF{9&pwEN)St@~F0n_L_toXk@*bAp}$ zKpH`}DE)r<Q(;3<b5zl7G3bF*&hRTbKhicjcb;mve&X;(!matWKBG?L6A$8sVEdFT zuODSlRR|X@iCq|nLkvS(<On(v-t#9FYerg4&!IV82qFX<bI2lxogxOttx~zA2zcS; zFml&}6!!Q4@9Io#8mftpjJliz9po>0>I~*4*eaBHZ}7ZNa(TKcoscVDfnog<9$Y9j z%IRC{0+4}yU4A(Ci*rw)i*pbO4Q?SJ#%iQV(5{TNNHb<sFSS@gP#~`S*QIFb+oh+9 zVjgKa^P%s<#aDA=8$fuRrB>wuR>ePbPVO_mU!zpNaR;YLMUYd{PbU)Ay943t4e5?& zN)Ed(^a%FNcFiiqYj;K348Hn=#{x%CAF&9_p;U)D$Q7x&9}vda1J1qn(f9>pxIW*R zi^b{sY2MXpPYR#Nywc-GSZ}KE-7C@spa3f$oDDY<vy3O80o#^hTA_$v#~zFN=D(ia zgP5)@P5IjD86C2}`Ou{ctZ*fr>|yb~XK>}yo_EESM2*n!&r>jW;!WRHwKnI)>XW6V zU5_dLl+o~XjzEHGIXFuZlv(ZBB_-cODF%f4H8R-n?!2sTxm-Fg6Y{(8_KAuiGi15H zhNtFu?PYgNH#RpF{le}QRx0SNeMz16f)lTwlJT)KE~E1Z>_2fLI@g*{v5MX2KlQ%u zSqj@7V<qi)&L;k>8=;YPCHYh&kE`w$m&1=t*LGz9L;NHWQ{u&v?+wp!Tz}7JeVBZM zXd!;TiEWNp3#l@&`?*ZjzK$B);WZ#XO{GSH7s`vB^!%CfTqS>lVVCoDbNq81yM5SC z3q3&C;_fp3?rUPVczw%m4H)qqatvZ2wB_4jdCvVr4L%0mu+HI_@9nHkQ5#AdW4r}M z3V~KlD`yGZR!!8UXS<6tWBK1bE&8I5h;6S6fXK%|&zk~+g|_G)3(=xd4v&eyE(@7R zXtlFup<`*H=;KO1Zm4R=imTSbk((h8!hM}<Vqwg!lRVL_OOPbK*<-K2@^#$FKv^#i zDD~xcr8o>+_lR2SAN;^L4|$(*lP|lCZ^ibFMd9`BE{bl*lB?LI_HSn#>J2+Vw_5yV zQ{zT!o$6-w)_mRO<mQrdMq$_Wc;S5)SHxXanGTo%wHC>yo{7fL#t3PQlA_I?)QZZp z+aflB^6BfmkGIm?dcoWY|1MQrb&?>1MJNjdh~g@r{}D))f0qI}WM&EAQ<P;aLxA!J z6n}>^Rr()RQ~7PneO&BkwfEyWhzUlmPj>j8rA`T~gWRD}rPQuY>r0HgczU0>J=Ebf zpoK*Wr12LALNL%Dp4M`lPeU50$U~;a*K>@lb=0!`rmD9e)Mc>Gyyh%`@My1YOd?Jv z!rKFixNBi{9Yv9q{Hz$aFW<c0d~D*s3m57T+DzWnx6rSIj4Fg<4he*rUnc}66qMDN zC*l3+Iqqn|Q<pX}Z^>*Uo2R7MQ7QRN>U&tZXIQ7O&XX;Ndhd@qizQAWXnw+Tpvz7C znZooN^@-2yn(cmgK_^>yCVRVYE~LqXT9jx)5Ovn=qWsLNh+WlwBDv)+z?2h$*_0MS zX3&-2S+D+SbUIwj|GTao8R@=7@cy`zNFYXRNJwZVL(S`JAAU%b--@ZYTU3kJse52Z zMKY-qPvdmXGb?g)Lje}{A!?X88+0_IdO>X-jUN_3{j>6vcvv^uNW?k*q{QbfYOtne zQ*tmW1p{tcC`&x%Y@yi%O~+Op8duF2K1iD`zEK@H@GR!@utJIk8WTIxKnvw}>Gn z)lqI9=E1+4JLy;LbKi?~)wdf@@mn`n8zP%a8HwxZ)O`N&l-BTS%G)^r-0c2+!psIf zBnk0Bg18sVD=sk?!OL+}^c4A1PeQ|!j{ZckMNKe@+)MjBDFH5L6(DLTE;zI;Z?^X_ zE>0ntAwm7jwti^FL;(096q4fJw}bRj$%is$q-lTuGUfB@HXl1XL4RmCAXrsB80W_b z@h1mRqddp~RwOBUquruk77{Y+XfkngA1=R%{j@)R#K*3}5~XIL*?coAw)%<Xt!yEP z031!HS@Ds?bp{+VQizYsB!6)wZ)@n3u=d(_yS`CP^a>!>54SFZGTjS`c<`qW5fJh8 zMAqEpR{PVxuDa!WBrs}QNkgI#^ElFJpa@ZbVR3#kAbe8bNrcme3yG$&U7nT&pbT&H z@Z27EQHzv?Ho`=ia{lv;!2u#tn;%!7p`hmHGV>6wCxA@VOCU>afFxg?Az2+0WJfWJ zGmR|N!Ewcbk6h7?pZrn7zY34MZaFA}7@`_ot)Z^8h}%K>pKX)f-LcPr6qsAoOTA?V z_&nCism3;?-hjipk(`gYjNy)ktO`QRXqO8!M$z`sIWmz&YSVims_^aG3OUWm@8#Vw zP4vWXH`@|gj!&4SvvkAe%sp-v&qZKviA*8Q4Vvo8{LJf(YXHO=t>ggBFG=oD;*E(F zuU-2;?@!p~vgY{llN!S!jIkGcEWn9SE(N^4zo|W)m*h3-PNDwo1ozARkrV(@Tye_B zuNgzoa%EHI8EJ0Pda?FPNgo7q#u+E1>wUN=5nwUx!d~}OFD(MT^8HWT{56%}RqQ7N zmQUyf*9jH2=5SfV$u#v{89F+y_V=DG9!8wSz7<(vOSm;g>DBj_WsgpZ2x9z+7zo^L z^+Lzl6;v(DuxvG+G1+dUaxKdm$11B+J9+J`{OenWcCHgqJFUWfXscX4iX}cqM1po% zpt9PZ$dCN$p03TwwOJgs=jvA0GG-)PF*3(tkx0i9#QQQYK{_AHWXnZV<P98p@K?{> z>SX+kktgX6d=6oDruk4OYZ8Iecm8RcMS#&9G$gJ5rV6$l_Ql{3bu{CnTw8i+#}&)i zz=6{nt3vIpl|W|1{y^>U6MK}yNLOl#;I__;CJiVz%Fgsm`sSBwbHTCDL-JvmFL zT+e|+avFZV*NNAsMKI8v__yEbJi+GCF1-{t`d@Pq#};3HR~qAL{#Jvs=`DHZp%+Wl zUP!H@nUtz%HN9uA%$6Fzu>8na(z<ekisopl9&mG7o}eJs;gne2e>``5ftF>S@Msls zL-HblD39N61Z5*D6G!Ca1?-X;Fi-_MSdSvP3H0daAt4AI;Nk1fqyiUYtB0RV2KWSq zouOa#%DQ}v_Xa-rOdW{scN~8rX?nKT>-sjQwHbmCA^W8K)hU0TFri8DL6?{?gF%UG zvB4Vy4;uYI&sd?bP?Zm&lw`&tE5U2_fPJZ-@p?hT?z8Qh`yE@3#+y1Y5Ppqxy1F>@ z+@jZ$xMAp<TS86nt1-UfZcg(&S3EBvm0XL&?LeNmkKgD~8WEI%PptO&lu&jT<qhfO z2nuSe!@(%K8~S;%<p5~o*bt`YJ9%rLuAqp(YE^JPrM{!~fi!S5f&erK-KtwTA8ZC6 z-(hQDx-S|VBBsW)(Oys~UpZmOYn%pLmAQg&Z4KlxI|9l26m|^N1IdY8=%6-Oo>`p8 z0c1nA=$sadw-A+9+w4jeKC&c&_ZgwutbUmKJ}jn+AzrZ!%K%BMiNtEy85PajpNLU3 zX7%DsYMvlYfF+Mq*o{rcv=sITgXe%_rd?<^K@@3nehy<IYq5ITFoQU(hpj0`NCRSN zO8N`+qq0dUpWxYdFc(24q6ZAWDJJ`@EMOAOIKqyg3scFA-Fw3}(USX2n>?|RFbt%L z7k}Zjzro!i%VkFrYEnjScXk;b1Xm-}!l}FIwB*U)OT!B{syR<-1X{;*mQ|A@)dmi9 zM{dFlYwHd9zntWie1h5p5<ITqQvChuEF6rUn!u3$4pIA~HPT3cozC&{j7K7~74^m+ z3!du^(d|O1_T~<#pXNr>>qV#P8h6`DYfF$XZy=BjP!QXr^o)E$ScXNtJn$RlgdS{t ziL>>G4gjBIqu=w?pP|RaGgvWg)(|y{gPp6P1@k9}z(I=1zFuZPcOF0H_P3P<fe9*9 z5DFmfPV!da2Bzoor1-kgya3X>*a*81MzJL8^$Kufo*XWN-Ep<%TyVtOO-8hf7iq$D z#drF&f3Swod()u8nhk`Jec~Ux7rCO8n-^^*<v&B2SGJ1$YfFKFC3>7sl)webgWeTQ zH||um-qa1ca?;Ij))C%-Y|PY#3n&`OW&OOOfo+}wN|ma)I7t-N!ayR<2SZcNauISb zbQ~nIxG#nEnkV{$WI+=q1HeeqfD^fmoo*wNIW+haY&>1u8aA85U4w+#{S%TrqTy3B zd58!?fg+~uGL0pSRv_#Gg}5<h;UJX6FGPV8D<Ql4W>sAh3|7^0D6KJAu+Lq{w^NdR z#cWvES4D+fss#-WiAHLuY1{hD#WlDMa&n$j6_&OHeY2x$*r}9sB$4m<1<)B=<N-uC z0Z3`kCrr@JDd1uffvE6|AZwS7?o8$dN>&ECcMNOz82s;R)UWg7Awh9sWhWl!T;Go0 zOLTIqfFk%mHeM%>Y6x6Sji%xo@kr9M_4%@xC8k&VRy8yQx(yVgr>!s0R=`XxJ;W{| z%PO3Gg)U!lAQbYXLIV632jflLIn~2Z;n^mxFM3*iuci{Bb~4Y^n9`Wsg1zQ%`xxUL zQ#hSV+CSn%h=hWoU>=}u4zi$thX2w~Gv3&8C8fot%EXCC4=BwJ_SHogp5U@y1h$bn z<#)nt!(`u|z~2W@^5lP}IA&|)D(0iJ=*-;pcaI=CTBn&wR_J}P8d+U~*&9f>X6E%j zFDj+fKh3pJtl^YX(w8xI5nkPeLQgpLx!G3Wn8&V6lc3i;e`POIWMnZP8YSE?F%Bf! zt<x2ael?k`*y(!N`K9WkLJ|Kp$_tiZ1fmi8If&{Kf0eaVpLA<IUQnEg5I7Rc+Hr2( zMSA{hz0oCQ>d{;&61l<@AvB9zNv4;aNtcE_O|I61<oCU6i7g9*yM>Hrc1*J!CO<&w z2Knm59@m8wY4zr*YP4o`>ei}4-UFr4zDeUK1*7iXT+Q+GQj<CThHsbPu?Qy`<nWom zf7LP2nWFT<aolwckljx!3H$Rs$u@du1^wG=+jVAJ_NCPXlIg;-d*t4s0uy3XGq^j^ zEpE-Bwa!c-OmXA9ek(5;s*J<Z+?XDZLZD<!!0YrlOd;Y}o`!I=+5=|3Y!x_#;CERp z<DvrtzRQNHjc;uSC?>kSy5cLtbe!N1?RLNeqHH*(jNWSQ+aHYgIl2w>>>K*_29n(C z;EHvFF{u}u56F{_P*V+|@u+_1uGCh?LQF!f!1EzitA-%t62;10US>!i!;%Ii;uw=) z=_jA_NiG5_krh+_o23#1fr*p&B~)9lP_r*P9XhA84s^dCG0mIB>NTT1CQnZ(IiKx{ zHEHE~Q)$IDoT*K6J53aWHDnC;`LFy8GmaBNq>qBN4=U&NEv}2-##cG>-=fU3^Kv18 zc5Vw^yup6YIuJ}Slz|GC2}v=|cM^!?;fl@DtLq()<BV-ay%bDTzg$MV4_jo!=|v?n z*c;0eqMqam4o^*;WBVsrew?c@dZyAJnx(C}FftRqJ`^x<!GRTyK<~RL{@8O~;|yvH zHdbk~Zc$1xaeuZ#F+8}C>Rx_nqTHQVdpg=1QG60zSV!-F%F@w`qL$;6p19I%bACM~ zJ0m8`A9z&GLpj|bV@gyuUj|qTHBNZj1@szHf~!(QPih2L=B$2Sd`eM*uXaCHYvAFA zv}=RW*Et;_`tx@`0vtPi2KozUM*zDrBvwS?!i1aC%Ql%~z5;+s8Qf*!K7uumVS0um zA$NPhCH#|RRABYj_x+#-*a;6%F>?HOmVuTkN}|%OnwRFxD{1m}tvKO{Q?Noa;^KAe zqIjbDr`jI8D?*iYWEMLK#7i9HQ;7#9e>TRE?PVT&*JJfCrajzIjcN}8$p|VBm0Q+5 zGMo6f4%l@|K`vc#h^4#pKWA6rU;-wzi7!eY3T<~03`Pgs;BPV~8z_2yW5Wfh&>m<8 zKl7s>tbuymiH!&)r@am5e=y>qXYmScYi<dCdt5g~#58MjEiX@vU#}N6Pjb#)S@oCL zKS5c5ux5se2lsI6QOHiOKW6!XXj|70oj@P<>^yv>BN*Kq?POn(2uvKS%Zz5T;M&bx zUP2e*TnXqcb+vMOEsRYuRLo|^tw#s@us}Bq@z!I-mMA~P13n88#%Pa@8!)MOTKE*W zlwvGRwm0A(jv?c_Xqi5dG)L*RN!@ODUy3Gvit<4gHa0QvOW9)REg0vyp+B=#A?gfL zi~R#wt+|KnmRHmyv_S7~=@!BbNf1?-3A@@;;Ylq6L7Wvd!f(4U5_9%O;%Q`IS{9Kf z(|I*XSiD^FgUKS}9FL%qw>5di_G$<Ml^nPUA>_c+C*{jwd6%F^wwINL`#~tD6I+3R z;~x(aRoOL*%lL@iaQk>5O|}&cyRm-7ee7(6TQPqyf&U{;I4KUD0z`xf$r{P1@nA^Z z>A;;_tdTLZ<k5-LGIv;~uX&rA4chv4_;l;b|4^Z&)N&H;tXy{=`<sWPt=o}dCcbB9 z4sQuN1YlKRWAIVw^SX8b-_V1*VM;LKY39`Vorm9BJS_T>&4dd62<)AT1}P&P44&^I zN2NOsZKQw*<{hU+H|&0kf(zg#hy;Q912TA@R~-3@<B0M5c4-khSC4%^ysCIsTZG?I zxhzVBOc$0MX@DR~R(F*jp5;?5M>OWC>fipe0Zx2qHMgzZ4tgNbT&!ARb$8!LU)wy} ze1?QL!C`nei9!zI`I;Vh*Htbm6^ow-K61qH>P9xB-l~HBDILe8ahY&uT`Nrp1nSIN z-JRfs`NGt*=cG)!R!xhM?XMSn)6tp`=;RMGMWfT7UDH{QYu;teH+i*K1(sf9FblGd z&lH?WrX=~hqXVn8N<TKigocB$(&Xc220r4K8Ov@kR)d%8lrDw070_+ew_eMPh&kik zAcq6V)R-IpZixSATEFCtp;ZI3hxZ6K?W;qiuZ1=YASMnV+Z@D00oervB9W~KC;Xkq zsBl^JR~ih=mOovHIN5;@E?<Hqi=sUTv==E1`Yuz&c72J|23Ofmdml}hJwHDd=qDd_ z<wZspLhKSmU!$xQ;uFz65V;CeluH*#`c=bb3Dj{;!Lv}!ttJ_0+rz}?mewvXl?gdi z(a~L0%kMt?=0JSjLfKY+w(3%NBxfPYokQ^<H?V3DT&gMFKJO_?@rTZh6OFZTqgz?C zq$o>dQ0-A%Eb3$W=t8}e+xQ}L)p_HyJ6#5HbHUcUzNt?weLh;*eapi&(lW5l7iS~Y z4*Zd*`pbR+u#)iCm@C-=qFjG8gG-SggGT%_uKmd8)S&a}(ylGfQ*qPX_iD@2j=#kS z-)@=Zo!m;=B1|NX+Avx}(I%VaS54MUQLf`+DK_^40G@7PB02R4o*gore7WD?2nmvY zk5To@H%-K%h0eD1cERdf&s)R<%$?~rx9iobS&rw$Y(wD@n=;?)CP||%M!yX0tc2MO zGOu}yxiIt_93y%}>RPo<kUQ`K>+d~bzEF}Mlec+UM8K%hV^!67eIsH-L%21mas7w* zR#V-XR9C&4-NfgTbBP&(UmSHHRFDr+L;j!PpQ$UyekS_ODxMOx9UF8palHAKU>m1y z<-cZiZU7vR#oIQ<7W%nHtH?gJ*o`tg#;9|(++nhW=zX~5=Q%v<m!18tl{|@<5RYLj z(I9~|eZ*{jtmWV^c|T)Wi;@h>Z+=RRV0w%b>^P4RQBXAUivu@VU_Uj-G{>Y^Rzq(w zNiCL{y6i?ZJx8hI83Tq*0J0F)HrY0p^61adC(u?L$i0|0tyw9#uaguam+;_y5{yBD z8WCEeHjkoTRDf(%C-F+gzaNxv$&@HGG=3vHForXzy{IiAtMxs|T_yCaOb9U(71UL% zdoMRQD>bO6a))TeZfAYgx*U+{%03+_d6-rf2KH)fDirt8v6%U#sDU%TiSNke43nr) z>4j<?F*k*nVYRRmpqC(TNk*UsuP8^>4Xk%Qd$I8CoNmvx^+aZ+z-F7&v75ik_~0lM z&^F;>bSWqJwHCdkP%d8{c^3s=vMKZ>phNMBwKWUfilpCCQ}ppH`Y~NG!_oh24@39h z*IuN<%x8*X=vRT(L93Mt=p``@MnQC&4eiufq^;Ox>!ya?Pj?7?Rh>EAJxigyX~Ivj z7N&Gi9jkT%p=@XqR0)1!C5@4#VSdz$Hj%FBVaeF5*35>TRhV~SVoMP-lu6?5p@S@^ z)IZo-5T&bkWihhImnog{&`6f*&iSChjIqD{H${?qNfRRa7wC^I2D-J%eIVV_!7rWi zya^;xz+$U+l8tdbq!^I>49FbZB}sBwBiLPA4-9*Z5Y!Tc!^G3QUk^%=VPVq-CdKh7 z5=NbV;2VdD#QXwaFQP*Z#=-?~r2Z9Qz$AyZ&WJt!^wME0f=<?Uu93*L;BRb{{Mxhu z-6tfcW{h#J3!cxu`70cf5QS^1<AGQpiE}yO$pY@FMLEF+RHh|_qlNbmEZuITK1!TN zFGOV`p(M<Bnh!=;5=f3^Rv8^gBXXdH4Y??N&{+Kg`)!!1Vnk>SscBxuD|rCQl4|Hw zA8m$E6ML4(p#d8WE_sEI2CIZWLE5x#!{QDBD{5!ygb@NM>QW>#`cGZ=^`WH<h?Wv* zF$EWBrfxH;gns#*KwRUMkLD!~NsBJ+_!>nECtYkrnDtR;`npgE1Xc$?xdLi%*st;s z(A`uJCQ)F3js@15Bp<6At$1M^i5uo8uN38QkTo5y`bHk1f-mf225Kcp!I&<1w=FU3 zGd+441(+WlCL&cVSdUtwhB&LN$0P!EK0F#0>PLo4$W=RmLX7~%2i9N(C8`md_Ok#8 z&5<}91oAyi61*~JM<nWt^XC?Ep<jHL`ku%Sdn9Y5ZGl4?&K#`J1`*_+D+!vHi~E`m zdQ2y%%Ra-Ui>>86DgPx!%e{zWC|eJ<*RF3;bu->g6w^T(WRaLGh*H)^mX--s{kIlX zfk2`IYr>D<oD1)})TFWK4jZ<Wu(?%C!zO=6ioslA7YU@GvEIW*lX&hZk;IJJ;Ks6r z&RVvX7P&q}2;p~WY;tUb>QmFFxmP0KnHjsVGAzIdDn5NOYFFrM6!uU2<WLWfbZ7eq z_4H`57RJ?@G2Ul@1YzJAuKT)Q9mpeMnyDmCINV@n?iN$*%Ql>h+Qg(Ooh=K5pCexw zr7{5fEd~ai+{W=cC7>-7b*@^74xK?rkW?^4&COyt_wqzi?X)C3a!$k0%OsSjsq`SR zBcO=g5~Yg#5)^n7@CrE&Np_2a2Qm2f)f+D+6B~T^r*@d)$Bg=4#}GtQeSs7-R%%Vb zLY?=<Y}0%lYP)|-1hSaRALop?DE$$6hwW`Lo?#vZaa8Y{>R3A+n3r>*^U2Igb>@KO zV|fikna``8$ijyYqj}vsx4<LI^2(30j;(@1y*g*v8cCV<!g^=EX>QIn)a0gr9Cff= zMEQ3@eb@E+@E%0;yV`PuEKTXd0d_fWR#mWbFtKC1V%8-O%HxR*`_-%UIB#JmMRPaK zwCD}f+1ea}!@~FKNA0{k50_R6TiN8NCeUnwlUXvd3ZEnT$@;L?&SrU61DMpnVGFtN zir^6EV0F7}O<9t=bPn;=NH!KpSOTId>e$Cw1=(+Q@Pfxe57oB~VDT~xc*0_od6ydF zKhM>XWS7mWQaoBXt#=|bvCY?e*|<X9kM0G!DYcZ4xHGF-4P$mSm7QfE@;EdAOja#Y z2GEsv-%BZ$eO<G^I3hv*$+@+(iAhmRo(DV2$Q%{?miO$AfkZ53&I__S{O=cELa95b zA3@&z!~o<PVsOj*(IsTRO>+FW{4GS1t-S22zmCbcm<hMh&D+o0aZU&AI8EW>*o^xB zw20}+gJKS<NW{>-Dwv*+qlqvVtCjtp%$5wGOahwcJxS?%UJmk84QVAM{xo(Y%L+M+ zT}Xo0tI7`)w<M%rp_KS|*cgFI4sOZO+{dFOf)3pXzysu}sqeJtgG14D6$Jm1^t)AB z-y|Irh;rKCJ_fGV$!hKIxX;=@Jb|aCO9s$#*#FUkkS267=vL_Dv^@?7HNGxBE_nB3 zqw=!ljsELp8V*UC+y48%n5f3pfuYyy=Jd7izL4jLR;RRP8B1e+)(p_*A|)MbJFJ)f zX7kug@1k)hKdw!m`YjdbpM~IkUaZ%V0Q{z3r`w0i{{iD@&s`N#0D0Dq`9q`-*HYtg zFQiL`j9=>czn0N0wjzDDq|Spuott;-RjJXL2YXGHNFgar#3hf*KSR?}(?v5R=HS3- zy?9FE|Efl3-fbq+e}3GtflnY<p;<^0z2LyKiPPSKwbo+AXCHhUO+D$cvF)B$f>&A# zmr(pb;o5Hb^9KblM9x@g{ojPwsql7l^G12My6O0ToFwtD5qU^TzpB`nBO;Fx-Z(js zhoNV(ex=2XGJI1}80L^~>pn?rZFJ`S<~-a#L$n?Kgz7JH(h|r6-HQ@kUgF;~gdcwm z-NW#mRte827RD*}{6dXSc)>wg5tPTR=9}Z$r^Jy1Db4OgeA$nn=|ujsS8<|vRWn~p zk}JX%1|Yundx?i^4m|}?*$5b3Q2TX67^Y`s(&Py)zZRi_^e`{k{3!MM^}K*c%{Hx4 z!AXb#sD3B7NYr^9t!|Q12&T0THsh*kM3nGsZfJJZC?lwUNYd8_baz;WXL`X^#6%%s z`bAq8xp8CtMWY6PFG2nR!V5y>XFyt(9gQOIXIAN8kNSHqhw~0!C;(<6B$23DIZdck zng&<9`c#`>Dv&p+Gk+2m!I#0Y|EkR<np-hSE>Uxc10gGF%9Rc(tkl;+LS^I)RqxRZ zLxa!=*oKrPGV4l>8a*t={~0Et?SDm!SNpdX#0Ke-`cKM2U?S1=5T&{O8w5~!1A}jP z2q>1lt)#=`e{Ko*8E%y?UqoE~q|L<vn}XFI^ti<L0B=Fq&UGux?0h}q$o3f+tB`X+ zWPie2j{NrHp<fuq_tI*5&Mq!kqykm*n@*u6>3w|!!Ot0h6xZXuUDu@(TST<2UdQKs zj&B^1TKtX>Qfy;~Toa8KZ@;L{$w*4T;X=*(YYTEDqNBpa{ny_i958npx!;o9{Vdq_ zFi==jGpg?tCT#~)U+4Uu=U{Uy+pms2tx5ItP)Vt);H-?GXo#8P{k?shq=2sFkF6f> z^F9sa3jU7|{(F2)IlE>FP+z1NoZx=&rMYL)-TBvpMH}W}-^m2(@+tr4`EyE_5<KEV zf)+L-I=i8{Zsp;p%ldV<6wa~)GV_V$PZJ0^RMwtm)$xf7C4(R6F?jx3g^Rly?l`NS zowv`KatGlg6c1zYzfWEsZ0rOoW~HIntD-eYDLMs8^ob>1pjtNZ9`;>W@(VEG=fC4k zGqf-W&=h$TlJ*yvB}G;CI`{Yg;&*O%h`>1(P6WL{$xHCfGEB~2^QorX#IuB`-^65E ztnHPLop-5N-{#4GZbT0bu5y31Q5jHcSN3X2-q_FDRcFi<Cod6|G-uFr=<`6i&sM7$ z-Cz}F2Sli2?-XO`;H*L1^H5!e|5%&n=qsh@C{>2ApfZ`pmCJYZpQ*B`yfP!u&f~Qh z($odVrY29%O3#?J2ToRpXBjzu6iO@`1tgavp|W>P()q_&C1KDrbkznVXXW}Pn8EuQ z5R-zq8(?)sz=EL+$yWMCsb9^=b!s$~6<!`M2ch;mue31^ITWHRjYmn_ZZ!4U?ij1r zOx#a*A^4Qhv%<c03)H*4tQbx$`j43MBK1+}^gmO;*NclZ6yfP^XFGfD4#8hV@ze$) zLEuD)Diy?<QFk|~SF2v;iwp1KHm5n4WF8KD!yW27%P12}gqQCElrFgxX}|X|8worY zdXmT-;OAwCDeIHNkFvy+QzwY_R6g9vLJTv}lDWj|Uo~At>KVRNd9Bnk|7C(<z=|yB z5itV?8^60dt<aA0&KS(qtb0AhTgD+SRLAQEKT)?~J}Kl~wAfmeI(Hp^4wE6sKde=@ zc6c{iQH9X8P}}_GCi4o}prEMvW?EWcuMoqV3-URL#OYj7VvZI`2o2hfNQ2VtrrptB zp{kV|)JUDcZOrxUuDC3A-Y=mIGd2^v@!u2Pe9ZoldO}6Y0?})VHQI4E^rc-!JfnNt zv@A>Y33#l)3Zi~0s_=Lmor%rDMg=hO9}v0rZ@YD0wZ<&zL&x*(fe9=C#oG5b)2ki1 zK)>`wDl@rJSOv{Sc72<-xxc3n+^HZzXs;b-2zEsLB<4@Y9e7y9YBq#Pq+Z3D&RM&3 z@!R2nR`yXzGQ%25eP@)XS_tG_X1Oh3%>U*aj@4*um%7!!;`0|<_M3lxJhAtLA1ar8 z!HJhuMq1IG*z5b#H$UB$Aw1h&N>UoVlbFToxzsD%wA)`K#bSo&PdT10zMH6j)ZeJN zCTkd!E1Rx3rvkZI9S}e0z8?A`pcpp(va)!zmopArpT68hCr0^0uo0x)dO{eQ@%Gql z_ZEE~Es}=PdpyA=YW6Fn6m87q4Tra1r<InqAz`E7?M(Z2<|eI%(wBSI&o6>{Dl6!> zI}G7)bJXijJ5No$vA>iQ9$ZnH7*M`Gq~!^J2)!_n7Ik_Kp_vn~!NyFbul%z8+?&Sk zArlFS#H;GctF8-IQmFP>ro|CsfH)tp51cTu34db5{^>6squv5PygCjB0Vpagx6+_W zt>3?(WwCj7wR2D%Pu^uh(y|lqM+%$^_yXI(AFMU65u=&lnx>zjR)kAe(Zw}WS752I zXph%7MOg74{C<DGHAhsHj8af@-}SaY@Xy-+q9~UkM(l80^zqW@HhLF8_e0A$6`cRx z`nNqvsa%oElzlR;|9Z0Zo`0X7TvbdQh#JX3kjvp?K5SrPgb|gj^Wy5uh)q|hg>O29 zxWG2SN_-*}ODR@{C=5YGDOZ-sgkhwz)(%H_S^hvQjixtW=f1KmF{dxSfzvB@pm>nT zHaM@b%DS;KAZBD{IpgTOybpjqnIqCempiOTZ~?%mZ+8)>9&FGJBMU$5C0eok!Jhw< z+n){x&uT*TgGu$ttZK|qB1|Ca9KW#E;%I&5W`NmR;+|*R!SLtmJd$7H5>&G@*u%3M z-lJeAEoL#{Pw<kV_?@EW7w@e>?#S4%_I=zEF&@6;=K{D}ESbn37+yJKBbm<ri}tYS zsM;Ob_H{&+Txih@jlZqA+M#4<?vmnq>8}$!f6<c~Cr-&_It~CBhPM4Cz>Ie2^Pb`y z5mrg@8gmz4Lh`Us?jxg>RF)_VBUW^3M<ajUgFkdYzJEg24a(-AmH~tiLst!oW|)lw zywYh2(kk$rrr#2KEdmY5bmi$!=ljY2idU#Cmxk{W(@GFR2!n_TV(2E**y~!<V5`nD ze6t~iLI%z&98?n4;yU4FsZO#Dm_36hfbILVRn3CI(HzuF%)oI+r^4m%D}TNC{?Ha> zJ|P&I3YJ|k1w2YgG#kZ1{$X*_BMDB3BW&;oEQ)RrEjw(3^l#k#!=&EUqUP`$T{fnB z_eOn1D8aEPoZqSrrTI=V@@0vKTmzAf7^XpoaL3T$@MYkFJs>fFPbqfI@LcLZ?}v3} zh4Iu9PsPX(_+xOvry4YCh<-3ag5Zjjb3!XHzF7la2C9mhGRuCH7>H;>juD7KoJ$Zf zHw;bLt7>AO?B^&_R%IpLkLnou5@&*|p;5y^60N7uPZLFTR=J*6Ft47!6?nBm*b)v~ zRVnW#oe>`$`gyFJ04jXbLp8+Dr+nns9vee2k&8khSRm2_r?KQxKw&Q7+)!0B;3Ki? zi|`|@;ZQ!(kZXdLft8jLX19g*cVfNYvgAw4-;()7^V@$0X+H`}4NsV8u$6VP37Y{4 zy<G!RC;B9Au+U8L;<hgjf7rMWHnv<hA>V$|8Lm>n9)Lkc+M1SJEO|dnqBSqvqabA8 zCAalI2l;rl{r8o>pWcgrDUOwvL_e}|nc}*gkZ&+h7wOu=BAy@<@**$6cmLwxGM(8$ zzLr1HDo^3z!U6abQfkddmJ^fEM9w)A>Lc%VfN4<^=%U<0MKIB6lU<NsEOWN=`k%KC zNL*A&F!&V^ez$-sk0v-GR+K!IFggczb}D`XF;=V{=n2hdAmYBbyT+hA5LBu*k^7>P zmZF!?bmXOq++v@3I@yO@R}l))IM=Tph(g>ss9dq1)?o(@y5$-Jy5g+fpyOcq8WMl} zFT&mdy0T^M8s4#O+eXK>?R0FjW81cEc5FKxb&`(lj_rIo=i;1u-}{fh#$MTLWz?uu z^<X};Y8Ozp{c6o&2s1OV2PQl&=L~$3HueR!hAfrgZS8E4IOwgZA{31K`mBLA%I+A) zN4S<5u<Y?h0l!O3S@j3X7ow}y-)I|TC_%nyXkRb60KXtb4IZLQoG)-Q!(vY0%mC1_ zpQ=MP#bbSB;SrA+J!N%TE@qCrxkoT*6+l&;K#iZDH4P>P1P3y=;W4%omy^btYvhMe zhFMg({rFl(>RF5W3n1K=vWaNi<+y+^FxhDlO1Qz{zlYZW-#{hEEP-@krJIXp>!<&K zH7`{^QorChf-Fix%?^DLS3#^jc?P`@Y>O?gS}}ouil&)VSit1tZac%ET~myP$@RVn z5{^&Y^n&5eu!9SC!#Q{I12s){M<(iXQ0s-z5W%?8vW}bG(6=e@L@u((NvoeG{e{3h z4?tz^NM}@F<e4NCHHYn}NMxjt244pd_uDC0p_h8Sk?3f3Tp?~4QQSi&uM?HJ%t#gu zZY!#oAT|dva2Dt><K{!a3Y>+#hrPo3@d=7w{;0%W_;YqSm`@#Zan83TGsXp+Mm-cZ zR75x`jM$yM`D~m|5`DG;7LiH{WNSRXcL}4KW+%B}4J8hIy&DXQ%!hj-KO^|>;Z|Hi zTK$)ij7CYhT;nDRi9Og^6g*6_r+{F=6iS{we$qi=KBR;%k-yGVJ%JJm;F>f^<2@mt zjr-})nglWNf|6LkHE<7jOu=Sww({z_Wb8lJ`~-F(tM=Z$nP=O7PRN&;BMI4q2300- z7!M6z<mu!mnumtPO;sl{a`g<p3I_5P6(;^!Vaq(^7}6MoKOa+xd9?3}k6O>>q6_Y; zABwL7Vin*TM>1*{O=;QCAipJ#QGh}NQ?0TaK_@fUdSCNB4IO<C1|11am!GI$gmP?A z`Ev~sP7A>hZCWSLyUr*e0l_9}K8le@|ChJDS+5T<ouod`X@lqI=%tsse)oL_wdIK9 zYTz>s<;)?pL6SN1eus?BAi=>g^xFyE%Py5fT-hFOcxQm)kdW!s_s?}l^^sMU1j?g< z89&L|GI&D5S+IgbwcHhgift6%GBauRZocbEot(CH;wcLshg!BPoQWdrX4Lh{#E zB;(tPzhl)<QQj#rody;}YN!REL6}2OTh$sf0$?GJN*2P}aca+m=!JAZap!Db!%=NQ z=T^-{gO?9=qF~zvth52P#8@`Or(e&wI`frs(1^QB4i>~OZIU57ZHoG(93erg&n~&U zv(DhSDDXD#;xS<4!Ep&Y73|aO1RB9e@P`j}U~QP#dI~zq`6K)NGjw5}WwrhDeP&h$ z2}p4#AGb1XV3c0eE{i!`dL<)vR+{>64;Zje!2?)#%Ysjq<XW46N9`fc;u2?cb6Bnn zVhrn>DhM!i<5VuLj@--CrS_#t_ByKMDllLX6{Te3iYJ`B2hjFeuq?I$cyYl#3~ri> zGBUPj<S)@<pdW%@ZJ`7fV`6I~2xxr#V8O%gQ-FEP@XTbYbML!h?b0Ry;`gzx2{RKE zd!PzoQl5sQzje%xh37UZBYlcckN7iG#mng^ZS0LpMbg+bXZuQHL>78FfnJyTG&U^t z5Fs)@qSdrbew~1z#Gc@_=pq&zDACg?ySqLlWmEcs(4-T3xPafh7(zO$V<EJAjVbBo zg{iGZuRcclELQXalD@aJxSnG;XZ8)Z<D_*qM7q})y!AJ{h}HThTI}J<rEHO?WDpXj zoEs*0n;H_EXx^VpGf!nB^5zZF0s(7me@?A=g`+)UaW?+&@~oQEei!t6NH&nRfOI>A z$}Cc_2G8ThLw3U3Yuaq%kVKP~4B+mhqKUz{lwyxWsW7{p?)oa%g@-u{7g`j|cL%>- zjXd0v`&FZI%vNh079?eekqf>WRVV-jb(4Wo{$melo6&!3k`u-0m4*-)_Lw49TSgCH zwwRK5`!>44r2oYLl%~Sw&Zeiu^8)u<fpiOgp8Z}o{AEnT5Ov>)td(2L@H&xj$YJ=S z!3#|wsyQ1j)#7t@t8EM{!XyUm5{$!}61oLcsXsp*3qE^1XbET4^&T1CY%GUh;%VU~ zgUlAH=M1=4s7Ep6y75u)qoi3XF@eMJv&d5X`dDIKng5BJi!@b7<}!(}^Wn^cpFaLR zoEdLHbEQNM0V2nW?>HRMh3*7&E#nx<cpc9-UeoEO6=8}fqMjq>Aoj16FqUL=PdE$4 zo`aiN{c`GNgG=NQBCTkfD~SY40eXMTx)Q9)#HZ8Hnz+nIPI)Blir7@Q3)>!8Vm9!g z6QijE<LD+o)Fg82hYmiifjY2X`yJOe06YS#CqyABc!Oi;ri?}srCK){I*8w9v4GwT zRgO{yx#GL(4MxtZg|2+)MH47qZ{lET4^k^NSh+r(+jiSKRfG$ed#)3&4;aUm*dkj( zMX0~D2wv%@HwEVhy)s(a7}mPs-Z1YH+J{8}tcRO|JcC8nJ^Y5W>(i%5IKcDfi5bJ< z?1xddJXJ49TyyQzPLvSPFRX44uQqahjp7IE4tMESyPiBn54=jfsgXO{&Ry12@#tpp zbS!3Cs#Ss&_e=-M>XQEotQOr5A`vbgz^Sq{z-17|uGx&i3BDXCXXx75{1b(v=*@N) z07hYd%ID5jl->^3pRXQIaBnO;aJr5o7)B!KN=a<k{W@CQmGwryE#0tutUDE`k2sRc zXLQ-1Aqs1vy9!&jyKFoFZXa@#boI?c6>(v!OCI3`j+cs_Vi_h*pU)vSzHZKPy?^JB zlc}_v>_x7WFR)_rV|D;Jn!59gdh0GkNO7PpE5`2`TovNW3~uTlu}^)dc(mfZ%#u0V z#(g?->cvuI`FZj|T*u;m$@k;oyIm^=TnWwW3@hNw%7sD?^BxB*hrAT>0iI!(!7dzY zwQN#0{~E?D=-UnlGH{a)F`!w{iXp&JNhn{u=L*TJ*T)O9IQ8FoOx3O6{vNGNo0b96 zC*DsqJ>ir5Hb!bR+-U>lxE~Y*x~q_PBGE{FflIe<gChY2^kx9+L3!?#^5q82oHyZ2 zG!mykq={SeYjcw$#Mb!6Yp+bzH>=#9A;-s&i;`c^>PM-X2|V<cDl=tWep+zW5UqKD z?C%iIU4YpM3{7X@w@bXL1(+EBQK;=b(dbZaF~qVck#fRnbQ)8$m#AU#-d6oxfydmZ z;TmRo!nh?w0U8YMdty~mFo1}KCORte1Fw6pE+@XdAIrzP?zoM*)gXA62-NP*Fga~( z;!|=_QZgt{L%evN>&x})hnH!~rfqVW>M1a6Nr~Xsy(Ixt??`003)zOI8Oeuz1_Ta~ z5$b5vr`?a6AvSRB`o(!Qp7*hOlScN8A@PKTC-v~t$v1g0@+suf`<e+ezS|+EoXz8k z!VHh}(5V?at>7Uq!e1TTqSvMONB!O3ZR|d@hADlR*U)(@uVY^)JYCKfW87<@6DsSI zKu(|nIZN#SH7XoPMyw#~AACjhkq3(Y6ujt3IiYRG$3{s%DM;K7$bH_FKdtbJXo&cw z(snXs5{VQC<Ki*PjzPwlzV|&&n2Z?I-yF{P5-bijrRzIuK+A@+mxrxV?Z=yu&zWq` z012g-EURUa(acAI>pE1D1MYR9D6a-_0Eb@~x`Ll!vB`Z^l1aR;&D9Tfg4IXNdibYX z-&YQ+^|2*u*G+PoICQ7EvXzwK6$`2&THbOzkz0Vh$%M|Tpi6O*OQ;I{=G6gCG-e}g z0YY)&y_N5cZ+C0Y>cX3giY{N^>=+<gFO%A;QTSsh;Kh)APQv?W<H|l9GCy||T}jUi zhbufh54Y#w$1m8)b0@I-rrOswg3V3$m=0>!QO_+)j0Au1sOl*^cWh2{S_W`Q5&aZ0 zXtH#)8(M2BkJJRbo`aP{^=Yj-*V5AN_a=s(&ed9sdsmxPwuQ|wQ}fm4q<-vYk6593 zmU0jPMl-PoWZjH04<fMN5>&<()Zz()`;P^6{7r6`W3ocs`V9Ike&2hm*!73riEkr1 zyuJn>0iB^umAA5x^T&4@GA?_o$pJ~iWCh7l>9~bnwS9?ny#<n>y4bj3gwABDUBaP- zRirWjkkU?U%s$5(mQ@{E+N&@ao$;|V!*P8I*_e=W^P`cgIC!i{jvVB7`r(iz&!H7M z=g~#>Om+yHV-orO1=9+Qf#c<nqw1g$MaMC<b>psBziB$weYmmtq0X<A42#LO%nR-$ zxPk`(0wv&5B6*bTv$T;!*1KLkM?!gbR;bM4KZ9#rkVa*(uCt&bTW;ofb63-ODtt2y z)mMLDUcy$qk$MdjxUu<aqwyApLf(3my&4zMrq?WEm<f~#0*ZQ>J%&6eOU?_r1v+ki zE||S|D-EwLoT&A$nWHXfStVq_@8yM4O0*!7PZ5&&QC>UHl`}ITf&EP1DE%gHNZdyS zIsyu$Wn>AV_a=A)yqbnlk)_JNP>!U$PAtH-)69we$9fKPV#njk=OOg0-aPG|fvs}L z2#Rf(Zon64K@9YMP%@bvpx+;BdX@4Ix5L(C%!Wf-!u(w!b!Uoor6@twVfc{gUfX1v zP!iNBoviRQW9&>vt0G6biJ?dVP#hcQ1f7Npdjm@gFSDKD7Qd1>nzC+Li$TW?P!#L@ z^g%C4!I7$q_Lo+UiP%AnccyfN+~)!2@k3|ZI0UBBJLoG}sP?1|rTJA?C6w}``6x(V zAE5KVkwWuhiiVXacRgHLpmWS~LX1hlDum)>_84AEF@A)u<~O^X5aU-Q^-GLKgLWov zaNUyrvD^b(PQ-rJto;sDnXdHCzg%IJ!<K$SDL!ah`=*BItu*vla#;8g6pHG!!UJeN zb^R7vieeyjuYPO@F#?iUGbl8j9PxxYEC*4c%rLYyhLDQtC!rAU)Z2&WT&<8h#Za72 z3~?t@Gg>Qs&WSC~6H>B%Q3OKSPs=5d#*%NzwYp9apzM$oiJ_cA%=^su$^~vDsLE9M z&%PcikAvj5Rn^(7W_+E9B7x{F6zKNCc_C1~MgLg*4MI=^N&E^R*$r<f0&pqizPY_Y zi{adib?8Bc2qc!s&<bA(xsekt<pltJ&P>w`qiB^5>ZS@JVuSlp-WVPZ3d*HxOB`Xa zQZugED7JD8m1VOVO$dxEJmax^Qpy2E1StV*&|i@3+;2{78ZUlQh|(w$CJGs1m(UHx znsCWY4EgL=rm&CG0KRMq1w@79mbDtM5C}vTRYX`f!=9(%2Z^HxtMG%gk5h@w*9k_i z>o;>(ae;39o$`oZ0+^>n6)>?kBupZT22a_W5STZqW@F*7Ia%w|m+Fi+$+TN__Sc~5 zzERKdgjY~nAb~Ez-rnB>AbnJ2l8|A^*oJguiQQ)A-NC?pY*IvKFOfJt!)kH4c?zrK zZ^-1B#TH5w1JLpSi`58)Ogw1ac%4LX(z7PTcC72Z9da8VLG>`mI4!Y&{Bu9FLPdB} zSP?nlNS!y#ojaF)<!oZm`eU&mPkk)BspjxXd4*wR$p+(+0+Do*qES>M%{G&VC5GFY zGlln%7Ch18X}6a^_A<*wpBzMAIs$D;Il@)9D1`|CUPLjMs)&-Ofj}94Xw+fRtmu(~ zcCpwdEr?02?PIX`hF)od%S=@HI0bdKkd$cNZ6JlEvIPW!(QX%gU^b##;t7xi8p;== zA)36zcWPrcWd8_>siNa?%N%2YSfn`Z5^XWMTu^VP=QHp{+v{e@XyhUv<mXvXc?q<{ z6ah$uyu<_r&dilyU|hc*Sq)(<>TvYmNtPt)6mDgE1~R6O$z6+qLfEtBQMK;k6Z-a; zH<=z*`&=b!<|*<*#T3W)CN?Rt>7#WOPoEPHvDI6@Q1ZheBMOR%fH+{jv}5x_Cr7{~ zc|?*mx^JLPLK?f%>-*CKIBgrz3>whPphBS`?|ai$#*{vnBSRo|D1hjvjRs4t`#bQM z-od_nsbva5_MbT$7U0%+7&NcY6zYbVqm*r1k^UjLnWPk|IUu!!Jr7isg;lKxDzhY! zmH<MIkJQ=g$DzcwAU<5A1D@XbfQ#%<=)$#?8XSM2>!F)W=q&V|`GIGFau6#_As?mt z8h3t`_I7tzlzG_y``Y@}hh`nEOl+gMX%rnFY?~qZdNG4u3eit-4^fX{$jJ9P2i)5U zmR;C>oof%xAf2Wj)@xo;Doe$qJR_|$rKzLwivjpzR%kMs*hBCiAQTq3bE<=ronVH^ z9SETfS!G9xk8M9ZutJ~dEsA~EU!ULfWgppO$$S9VzkD8VF{1_%B&feYeAQ#HMIM`) z_AxGje=UBa>9-bBc(1wwYeP_h{Hdmx%mCK|5srhe_yltV@xxb0d81HljF;$1IN{o~ z(_7Ar06GPA-&;TBI<<>PQgIfcFK=Ok{Q^Wx!W}>Dy+E9FlZob)4R4k^^ZK?(-yrFh zA}fNjXCVu5k>)}CK>5K-K=js5e}>@p{5qYjG=CQH2TsM>K$GN5R;ZZZt>R6DGlE?O zt27nqo5F5<%9G6zL47EVmWkHP^v3Or`*Tb!q@a%o@2!KKJKcoYjt4-9`!+vb{s#A1 zvZ~$?^2|8iP!`fX7Xyp=t0brAM1bepw+1l~p8U)%PWuDznim^J=+p#DiN@D=>D+Lv zWU>BbLTLH8Va*$}6-o-E-#z=5DqoSOe7J$>di|}NP1A%$*aC>~63JUdS-iW!qoi3F zWf{3oLdJ&+i2%nY!eI)om9l&!i6~}Va@lklUQ?9D(?BGyXOyL}(JWzG`+6r!wpSAG z?IaeY9lspSM6>#pSdrF>U`#jqy^-^mqGNqLV=38OT1-AT45M$V&JK$u0y?D7+lo2a zHh**M?)7^2X5O$#0U?gj^+?0q_U;+Nx&qqF>s{?ofSvB+nzDdC7(;%L@@uj*DejTT zf#!?5uR1Q&e>HKb->AESMIuF<o9WjnHwM*t83;+6gc#!oMbxy-9C}pL=G<9#@6QEU zJYu(dznNREz3k?iB&nG-Z*nHsLcnMHxv|#;wv*&p+JvjvNu%WX9D0CSckmXK`v!Hg za}jtyAKCMj^v<7q^VZ9J)T#&JM*%Ba!bhIWcG6~dDo%SdQ_$v&i=ek+(OL2*nKoM) zoLL)Mb4%#_oYmJl^=^<}&=dPfiB}pGVulxH?Xx^Gcr*IILwuBcD3Q-Ja_WC@a9n0u zXRF%<g%SEbVgwrEY_|Qt$zSZq$PIJs@N5m!zcG)9*&nO?5#S~es3=w4o!{#(1NiMs zLz~}%X=EUcu(BX-R7t#j@Db3AnKN~@9hiPcr>ew*LTI9p3l<%%E?htkKXVY;PGtsX z#n@W|`qpMl>nD}|<8G7Kam4+#USkbyd6Vai47#4`#J;g3%a=pJn>hE);`|PzWVWz~ z_4z%_@)W+Pbh=LY%w^j}T+>H|wL1$QZMSdoq129rIhrju^OB1y`kv#>aKT)AK&N>f z$@prPFo)Q*!L#MskJKtbtQPGUxj;-@fh~<yOWg;<=E000H8&~n`Q?=-w|eSTdu$Rt zV%V17uFq(3Nk`VD!6ns^CFYKbR8xv`9>)Kmg~QBeu)ID~UXox6$pSL}S*Q8s;LA|( zkw*6=4^j>uUijGW)DS=bc*K{e8STjq^vG&^Vz^ygTVNw1Z*=Tjh3J{bGB!s24q~=C z-b6uPdJ~A`0{sW+kK@$$L<#WEopTAnnE-&x1E6dm>H!c<P(B;x6iHJ4(jp?JahyxI za0}a4Zes9^{5s~3tIb}783e^8_3L(H4Tvr9M~EYcOHhZ!j#j62e$t-wyJ!2*V1BBX z2?c~|pS5@PbB68EhuQ;Q;Md*{3E!U|uJ6asPaCe2{I_<edUyO?o|7LzcLYa3ue&d? zAMgXUf(*;CQay`$0n;l4tGWI?i<=)^`grnh2JdE%-=1afgoow3eWadY_N*4Wmz~H? zHqmk&`OSX+dVzoPHt+~|SAM;DqbPY;`p7w_T=JcMA9w-sl)tsR?^*RF>c)Q0oy={> zy?*QEPxqDlQ2j0c68qRq*<<=4eG2p%`^^7bd-1WwfAvxIMDbzwrnleIC|}Bd=$rk) z|B?HuzQl0NaI|^!(czo&vHULo@$r${$?&zOiT`uV=tKGa4V>2Ap%lJEg&Cf8dwx7b za5#%AU15~tXQ(nY76i8a#=<y;_5aQha?m7f{|?c|4>K}K&|)G?xGRSzQ)Y~7F;Jci z8yL;;jX6Kg0sIK|;VOL|@MF#6@5P?{Eqe}|k?*+J<o|w2s4~eF(DPJa(EqC3AEoRF z;+9Fs6fyY!y~w|65c{-IA|An%C-u+v{C6&?&DE;B#yen@|7i8Ub4kJsl=MWWZT+vN zeM(Jy2jni<T9{WL`F~3AkE)M16XpDWygmNW?@iGU`DXQg<WtiBe&=5jbY9UcIDg!S zY3BI1KK>(@?|fj`!8z~$5&A#%IgP{AvqIscdv2pH8Cc}+e*#+er%wJu-RZlg>@Omh z2oQ(`bi<7ORS1a-zcACWFcV5T({ncc5FL>G8=(IZ9&*e5Z%R5gIY|(bq@GwcN{@7G zrUqPGvzWiNQih%IC$ht<^>A`?>7W=yIJ7kE6dZS~)BP(TFf0n3==;BoL=K5L<9sl^ z{@@zt?H8^~80Y2xXbjwk5<E#}YiY{2%`Bw-8Yy)(1>Rk~^IJ{coIfv4RkWZ@n1P_j zN{WV!$Um=`LorT;1dLEwUmT{s;Vcvs!><An#nIdTXwo3Hy@eee{OhJHe>{riLt1|t zkDGMZAJ&=puR0<iqo!bG;pGvnnN`*>G5<$m96DPxA@c11D)N85<saI?c`w2hXLtAy zRsGE+O5B#C-)DKGCAU)4`1+XqGA?t9{+D$hH#Uf_Uyaq~)UYpvh-1Bu_E=R?;$PK1 zc+lEn&+ybv%^@?{NH2GL#Q&vGYx^wrlO<Qyg;3yG?oul%@AcgC@-RGPrU%U^O&Q|9 zyiS57844=t+faE9`;<GXO!R&Ux!7kC1?3$W6|1V^>jMe-RGdV(%fC&N#{u>RBMaw@ zZ8u3y7`<dK^G|&E??(Q^pO$Nze$`GUk^90`d;BkC!TiWRF?K7&24v(fW6L^($NxQv zfAgl#t_DsRU<qslbsoI?HvEsO;VoQyAw&z<TZD6xvZ=xf_29|vc(m`Lko-Fl8v=jd zTb=uGEf_m}_~*52R`~KQT|)OV73mK=`b$)QL0!m4IRw)G4?s1_Be#ghn2deV^8ZUD zf5SW9sXJyK#faVjWe7^jo#l?Xi|bsF|AD8QcZ55f9pPKLfFs!Udi_5QEu*O=z`|Yr ztp`B3LtJR_mz!ovv+8W(W`P=H^f!X4#w9nr&3|uJ{AQP<b$?nya(?}%+3-VY@w1Xv zf(L&Isp={yND(^frTtz1hvWaLD)E-_-L;7Cp1g;sPyf&=<U+@%>adEUEO_8Nvb?+H z5RM9TEHJFSpEyF?Bd6eYSnsTfVla$J=>8KGjno7B;JB!c3g7W>SE*(?$8pZ~n{h4S z`Uv9_was+?uxS~60q^+BJZ+`FRPYV_s|2FdeaQpAT`wd@ST8;hW}iA_6a@}&A5%p* zlu=Silu&j^pHP117X6nOvfr)ZOTfNaBI8ya$d3dq#=cKcyKefTO2e1E5!}$if8JgU zKSZ<Fp9*%~CNW7SJCDtn+GoQ@29>|QK=0+tgqdRbAmgz+X{Qq}OkjiRjZo^;_YG#* zpv#+e{qyRa_5J5P3$-q!9K<XVcW%hGH6e9Tm@x@(CDAv=)j?lxa8)wL^^@_WQ)ELq zN!ZO@)Bl6QQYo+9(Jm|EWZf2~Sw(0xry^*T%w{7TYlVoA&%U|Ijc3U}sQr!?Is+g= z%<dOH5z(nj6O`2ZzrqEuJJC-_XZ+YNd2gJOvDAkf&mq#(+K{eg5b1sxiJicbrjZ@H zi85sN1rvxKw$6Q`m;APWVb2f2ht~p5r3XG(Y9vOTIJ;~ppOi48)zwKD0?J!Uop4)| z%4GTMrALQD(8A(D*1qS4(5>`<j5fPvtUnX_swS4wKm3UJ0O-X<8PZ*>fH{Va5vbYg zfV`!BD^QZ=FqAB8u|jrp=uH)yAsP23uUiGSn`bM@xi!RgQZipQ7VX>1i_g;5X;=2? z&e~@@%p@0h>!50m@3oUJWiHEc74~HtY1fRV<4<e+P`p|l!ngP4w;($7EH|C^TCBz! z-bn@4;_K|wnCifJD{w<9I2g{8?!6+CG)V7TcB}Z)Ge|)C)jv52xN#pZLe7S?KNBPP z@krlek)O20#32Y+GkiWTl&u+xb?Tc0M~v-`F`%Y}^9YF#;%~@X3STVlIHhD0;*tAq zrIwn=@2war8P6=63WO}%Gd$twnkCFLbO@DtFIpXvw3|j@?qhKg!o!J<OeZ;*<K{?9 zDo+~Cm$~ggk%Jovg<iBH&pqExcV8cN@A0B%{!@w*2dN}Q_v+868-ZV<LK*^8`e$Hg zqm(_g{)1!e2AojJl#D<P_*93Pl_BSquKySI1>=3X$UoY>0?cKwsDo7}c}a;eZox4= zZ&IwKw+N|1mz-|A?jqIi*_EfjxxD+cqpl>Dj&<~@fgbw<WM@?Tf55UrYBSmP=eE-X zUeJLou^u?`>D1%!RJ4|Gb}@Gj@y+CqlY|t10qei0+drU^MH0(CMadqs)1(SCsy++B z;^NhaYoZ_ZA}6M3gp$z9dicXU`^mFWENVLcB|Oa}5pFVM{O>?JDqo5oX(z0vzknOO zf4j9$b?owMS~nA=^FgQj8)K-r5+<sqrfn?pIT0oCClhRxd*>^OC8k?lPL>Q)ao_Zy z&6##SO-jY8-2EfmXL_$`e@ZUD8JrA>Dw_DDE?yZBZQS0igH=k(g}lO%f6kuIvsq~+ z%Pm*)TQDn!9oui~lZ?FBw<b4+?cs+z08>Y6pq`t#ou4VfN^kkB#|64ey%l@UesqXW zxk!-hMKGDB6@Rk>M0K|z+%IHFnz*cZ_+fQKD1h`Fr9N>8r>ly<6EpG%F-`lQKB=kU zKjo2>P*hg@GWrx7fa=t#>8{(tjL-`(5(XNmM0C3iJ>B_Xz_gFh@;I2L8*PeFIa7gg zs+DFdSVFox2P+arR(noiTvZJmA1;B0*wJayz^(rWS49A!@DJPxm*57@tqm4ia>~Gi zg6swd2|#LY^Iib%m(Toy`!j$asUez3onG(}kyeuKKUrYjb=cHL(%B*^3prH^%i&Zv z7PtfbNt^NeL7P5GWi{TdZE{bGrr;mJ#(9<|w`B_yS47_}uBdKu>kKf0X?_oV>%SxP zuNd6zsxHIyVW2rFTRlcP+39LvHv|Q1oqwJy2^j1a%&5`9!O#oMM-3Wqgky)a{p>@q zXRlJRatnyd$g6)fH2z1D5g^UX)VGtb6WIQ<XeLDH>O5H8@5!oJH62ccBookd$b(S> z?#*7pzM$5Vh9CNaB2La>)}7HpOz@ZNE^t+w=KzybK>UbgdU<E(JB=WMwK+W-t&8&C z;&5P+X8kAQ<FeU&Ylp`-LIDfJUgv+`>vhpxbk|!g9)AcSRC_lcc^p{m9d0>AFHX%n z1MX9@Ul-Mx8{b-|o%KTaN5AJkc}>z!p<;zZgghiV8r1*6P(R5(<I9<VAbNYcOtR`7 zT#S*`+Tr0Q#{7S}(my*`>BNaYzmNNv9Tf|gC*Tv#T3p$rjPGF*+KCFh9a#QhP5(_f zi4hAT&?gZ&^j+8OZ~x%X2#8Ib64<>|Ok!ke&8(&te{{bH9*_GzF~jgbDbc^V(SP4S z%WBw;>jMDq<!_&d&*Zch^n4sd7Y^CEIMq+nNpk=IXas3duo=vAWG$&QJ0wDqR>i7D z*G#w;K#4eq><=|wQXYN)a9CHYMELM!h(fJACXOF-?gYsrr<wEA$-UKn@YH?)U?!qy z#B|+x006(Bpv(^dl%d}>=?4Ia+ti5w0N}RXyS<-Jqoj`j09SF4KNbK0e8NHcc^VEx z&*%TEL`DGsP)B_L07?=~vS7l*5TB_%0)!0|6aa`)Ijy04e@qMR-&o6963CsX3Z9}A z00rg-a~0W^lY2j<I6%m2Mey5t&v7<dBSb07X(&eDBLo1;Vu#vtWYjbQO8J(gS&WQ& z0bp;g8l<%!%Qn0B3vpi21bn0l<B1QG!gR2N{K%9h(uV$z@xs*FNZg}jtlDl3se=(% zN=tb@pSe<oK(2^GRGKLX!cm!veWnV$S%^6C{6C8v?0RcPw?Xs+z*>0hWVtB-003N+ z<Mhujr}^j4zt-8?WhtE-p|Y$fI<!gjRGN7JfKc?XU=Q;5mv%qyEe-P;oVEo64JH2| zfd04>zILrPrzgcG+|UR!bHT@(CBtIZb?bqciarR2AJHtY5kFVBKp;mH?CnogIB*9{ ztYZPx-I?<K2vJi%Ue{0Q+Ghdzqym?^<MQho;Q|0~PVFHv{llY+jn;TyI4-NKW76{} zdUd3M26M={O!vNBIC4F-PKZ&_>(#=$ISu6CULJ<>aBffk{b8y;OooSA;IlEG$%XD% z|5Ks&6Q&7j)EGbY5OOj;b@{$Y{ox<K6kv@i*QcZ)008z!InKg9paiF;GYJJl*QUK- zgW6qEtC;tZMjDt#c7O4f=#@ulXC?&&c{-7{DIe3hb~<?k@H>A0{yneR6SJLZKa|^@ zi1{)tH|0@Ae!`2KVsr44f_791s`edS{NZB1obdKJdpGifMaF=1q(@}$rE~Aq7fg)c zC$L}FFW$O2CmEyXDB<T@FC4Tv)*Gn%kMb?cx|mnos0?)NC7+gu)k`jHwuD1dE5|od zumKI<>`PA4zHLXpp*~xXBZ8CxF6*z_(~jq>o?(n|9F9yE!#a}~mD>1ij>DGm_22N3 zFijP3Ipq`%bueX0^j4q4KcxV`5w7V>2V|oi^;=lL(>pA^7@>psIw@`vm1WBPeE1mP z`z3~nr!C=35G&$ID1V&O?6aW!l@1_MhW^uRWllL5D)O!*l@)-|+YwtVAf_=TKp!7( z2nFqWmiy$q`#TtZN$vMbM<FH~jK3jFfHDCkJZ>qa(;K+bu!tO+L80zu0GwJcin&&7 z_;MKF&9a{n6xme+o~^a5@j$%{$C(oSd&kGkU?7Nqh}`tXi^+xoF*A7{9y6Lsufo^$ zxvvCq!V>z(t5PMFnK1jgVJa(0#5PQdQ<{pCq-BJ9O+6;fLler4cO^t~G_M{lT2Ub{ z7(ro$+`$cEU^c<~F+f$nroSS5ue?E0M5U)N6%!ISg^m~%?2R3VGRBKv=esxywmjOt zkK3DVbbdPGLpGakD2C|6s%g(O`vy7!yWY=!!0!kX_cdS-gRl*3lwR<!hmkcRk>ake z_)EdNR+n#*7lnm*glFMu!WJ0eka6yE5MJl4)F`F+4d4vit8Q46L#Hna59vn$?t;q! z*5NY?@z$F?C799{BTBJ$Qp$1%Rch0l9++@>RW_ewq!oXT0l7NtW-*l4%%@EsXJ6?F z6*vVgL}c&pnMHJLp4J{h9=a-rebX!Uopx4XY;%H9A!qqJP#$~&Kg-T<;n*l=odZBr z4m+|^mS;y$o?Gz-2%bUMgRHvRAH54fl+IjPPt)v#%;lSM(s0hn?RYg-{CakN{3uTx zI=Mja1)k3G@xXipYY5w$D|US_6|yb`O{LOn(r2yoDodv3oY1DH|2!j%Kf~b;mE~j| zuF~oAM<4MAD8gmigwX}2qYO7j;8qp85qyOX0Y0qd=BR5}U;%w4F2%rY<<j}~FWL9d z2eI)=pZkp&vs=^RgKA(t5+pLx9xJvPspX+u8Htqs{-SKgkCyN)yErX6`PMZ%nv2g} z0aXcw02u`1U3fm?YOgQgqox5=8sWImQ$B2*r$|;1<nDMwK)Q`@SljpvrTr-%B&7)T zsr*c8%Jxj%F%lp$j3a==@UtESys|W1)^X{)7Los=1)#mP1{pI6X($EFZv}4hPDZpg z)gy`{`GfkRo#fY!`}ri5CG5A0f{oHJARgM5<MDRLny7IOpc{@y2IVS(k7<vQ-OWiT zNX`6{rO2-^oXut)J|~}H<B~2m+(vTl@J3i$SU)R4G)<j_@Dgwv(!otC?0)0ZQMag* zmiTiJUp8A3ske+?f;FD+nyfC|ocHDN#%)$ZVjaV<ySERL>qv*VO!H+{sC<pV;ZPNs zRay-7!VIbw!p@bhZ-WIzo>IHkz~+ZDe!zMNtn*`L@UJk%Ber)!im8lwWZ^hG5Eva1 zd+0o^CH)Yoo#uuCL9Q>|)CTuFDzZRFY+FpfRfh&NTDpe~L31?hI>->q6S*=0m0Ccj z&Khj55Ek)FXHFOlo3cN=58Y(4PFTO^zC{uBDz!?*Is^Ssxcwa29rgoXv~w6mR-*_1 zfXJkFs&T4H%I6Mue{931sPqGvf}ug8FW4@^Qex2t1KK#G+kzVqATj-%2W|ypD_`)E zWaCPFI?oQ0f&KK4Ba}b`c+Gt6lIZgo49p!ssYGN+=!W1(=!W5LUaz1{JlvZiC`??D z>l&3RUaw%kiYNd?#eoc#Kw}i>;p5-xIt(=1mj^j^MQ!yKDDJ}FuaxD*5#t^!vT^io zi=c`Ylt!2*GKKWRx_(ZEIiZ;Yc~O|9Ke3~)R+JaO(%ZJfj&-JGo!q8=IGDs3MKwF0 z+&l0al%`V^5({LLyWZQhM^2pABlCzZQdw74@F!#65&)U+1FK?(8Z|`(A?E?21q%fy z5evNTUN>FUAY03K?R1&*tf@!@b%M(nODj5oAUQ22Nm=3>#f98p$LZ+f=(%^U>EBJJ zmBoms@V;PZNjGiw`LW#k)vf0WZe0f&2}gbO(yS-jDM8Wr|MpzyO$H%FYTSsT=|=I_ zCVNLR6@O*#4s_;w)xg<%;qS)-N^!L=&bxT5428nvM#2~K(#LR5(t0*gi)w}OMPBCn zdZQ}4_MGLk|3Z)6(4F?g-3n3J{S~kYj~^Dwnv<Yx=AyY_jSO4g>&GPc#=6AwMx@gV zqN2|FJUNQpp(1IWocmbNJeGU10KlX2(l{$*{*sP;B5CcrQZmq+Tthht&d@ns;B#&8 zO3T+AX4=}DMk9K!k(@Vx-I+j0dul7nc(gkngVKR<F0~Dl#u~j>S0euK&1bi3KQzep zM6lzc*h={*zoyxCz6K=NSoU0BM@;uUBM<{8*P`;v-5&XDKFIupg~XhCgK2G_!0Ymm z<2^ROX2;%rREPC03IHw-+SY-NAtc$~KFPSbxCfz&YTEsDl!qtts#5NbI+RyT@_CX- zQ{Cr5fo+<l+CjSY0bp+XmXtpS3&cf>{J;AltKCY~gFt|&XCZ?6>~WF@&V0Fu`yu(8 zvexZ*vNPLDwip=N87IDR8C_=Lp{`GklB)&c57NigtODAf`gB>-ZQ`Kp4$t>Yms2fT zw(gYeP5P6}%oi3>tYD#kX2POq4JBtHgjS#Fq@bNBfyqAf^~L~l2Rs7vdTW9Kb!W={ zo4zPNSsXCLm+K>>BpUFORp0q@zjxe``Cm*kAL9wo$z#;_#{lIG@*heb)n|UiJ4P2u z4McJ7w70>WZJbeesRv(XE`qVOUSE|%*v($pp5uNjFbnAwP-WcjXHm?3RV5rXo5LBa zx-fnG+@5j>_9T4j1v9`kp_*<)krj0~R$cr-*lNv>V~~bAXo~j?2=GJkfYKB7c?s0Z z;<7yO;3J+O)B=(Rg{o9kvOnM>Bnpx#=3ZfHH|`Zir_tt1E5yWzTzIloJ?miSm7?&+ z(OR&J26S+Z$ZEGJB8c+ah-G~5gI98B11_S^^y$<Y3qb}mXb?b}oA9_ZCk2(>C>!-; zykHG36PWPB+vv84S}|!2M&c<pyY{}TGomDy?8skv3dz0682V#&STXcvE*6FHKC$Gb zBBiQ3Z+jPZX3x#Lwg6D>r>|TNb@E7JUbrVM1$@xx4i`f6VEVoMvU$4GX>`WsZu0;u z{1!lvQwB1vFHU-F#O7fG>_dv7q|o_ACLc&$g?*oz?lON&h2Q8mw$om9(J{BPeE6F0 zEc|HO5;xH?2U^3hk8Pu5OPV0<)b2%C$2v;8+E*sZ65`Ey@~>ptKPNh$*EU8(C#u9e z(F02QB%Zho8K-?~FtV{u9CtBTpcP;9^}UE#f`2s+l6yS|^~iPSe#mS0O8Rqf!}-p` z7I)EEe(u<jie*~{wgmt<1FW_c85ggB2rm2KbxUhBpsY|!xhl3;L7l%KX9(vBX`9}* zt7KMsahJzkoH@7!4YILiODn5>qY&;4czGj7#I^h=-}ycjD0VSGB0+FVmUr&ll?&cn zVR-c#k++hq8PVAdVNKBJ5bq`j3md6@NP$tZocS|R;I`yVZ)v>J#sLj$VkJVaf};xY z%T9Oqi;&h;cEI69wNa$F#l3@(pHPbN420OB9516f=tih?r_|@(iQO+r?&5#{Bs!+h z2y%3_W`_Ug$6wbEAZ)d1S~yt0QO&@a*>Yerf;oc)&4&f`0pOh)1!$>w+)MhUzkp#` z=io*8-@^C@Bu_flY-s@~!600qKj|$<v-VWj=Ql7q+}H5i&)yx1!b#!NLnn?4`|r%+ z`3-e~D$R{F(>|2AFwk|J>>^<v++;Kj5?k(^{7Mn4EQJ^0-5P7n>|jksmuJ-&&x0w} z#eVs|Z)i~)$(G%{z4j%wLaD5FQMDSfvln&4OT^ByDIWSIrNf1d(|XiOAPFbczrS?o z8w%6zS9GF97#ve#{>lp_SoUOMGyu^$8^i0_u6$1f>^<I7wAjSqi4FTQXGDF6sExY# z8I+=bB;NCcqJ^ufT_->~>zmG(yuMe#FQ-1q0IcUqeb>Dl7rho1aRaAE8EUzu9gS!B z!Lot^YqG7m1PbE0B8}MN!S^=%^yGgx*QlQZj0oTO-0=93M0xTmz(OElx}PMqu<KEe zZWo;6jMN)8yu5(fz4>|2*-MvtDnzaJq<Nt%eVB+||DB~VvN}hIlaM2llOl0?QBCF+ z#+5O=@7L%`pxSd6*%?EfD_=*G&7hdl4w8(IKKQ$$j_Jyu(e=qUh?V_EMW==@Z4uVL zgMW=?g_L;CmCOx;a!q_OA6Z6zcB9j>xQA>Arv0TNjB*at;d|WK(NZ2e+hg#ZP-4yY z6u9STez-+PqCFfvS527Bk7}$|{srT%idRSHVc?9xUNAZZf9Jh;Tqsq7hY_SYcu(5! zckbx&PtN#bE_H10C8jsw%6PT27>h`C{uSju-aIkde9{VFys?kieIkQZ)iMqUDera! z{iQU-)hYqcLFcnQkzV`3+u`ZBB#LB+B2XzjqXk_HMhV016BPc<KJp6?k~`Kp1EjuR zmha8Ksn><!bH2jhJo^FADyGFb_%89;+~2_!ao?Id;vDK|fQM$<8-6o~v=@3}^X#ZR zBYjEaXRN!J16?O%98Bh{GOy=Mygdn|F=z!&v^6zffnLO_2QBP)r6)=DO;0Z<{a$al zaCjS?As6bFfq`Xa*rOIlQTp5{JiO~~AUmc}t{6Zd&*{3B?QcdHCy0Yegim8(I}n9& zbpQ=9mwrXl<o#9Bgo>gXhuc3(+#WP}iTj#-T<`oH;D35Bx`!8p9a8!IgMv-aFNexS zZ|#TqxrKio%AKxm(%_A7II3VBKBKR(`5aES4d;iwD~iLEpPm~3W8LcMLn#33M?k}( zYz=$;JQ}+{I_;t%?{BjO0T&7X0MLe3bW$}N0(K%|EArkcWtw3IxHg2de3hsT5!Kt3 z0+L4aDS9s-a+e@g;2t>Ydyihovv=!s2J~5xp_r%+$p=EpYxHwc5zKd<(k+WNX<~Z> z&76&V^+&rK5T=9NI4#n9KSdR{QwU6!;?3PDsP+8Hsi2gIIMQ-EtRGW?--X*M@B{!7 zC+{)>s3?%HgpG<dk_6Ka%I@u9QXD^1fHl0CpzdO;ezVC%4x0q`h@G-|@i)|7JSoum z=9LI|y-ba~&$kmHXr066@edoDm4CTxz`rA1liU<o5O~W`bjdgYep%D9<|ZXERlWD{ z@j9;=Qkb5s#|l<{E-H}8%l1>E#b>(;d@X`}+u~g_tTdi}X4ETd-;x%I&{@x85F_xk z5;;Y_%9BmvN((RuE1lwzci3A1zr-fHD&3j)gY#xi9)W<?MvU^E$=1@qEHd0|4@8xb zRg+SYNi&hVy||Q@PJ{$Cg=d`iD?VaEtkmnZFC(ux4)LvUx)+OH?S{EhEjY}<EZeQ{ zz?JrX+Nk%8xC6IJ8U|<Ll?Fxoa1Te2(Jn9d8GtqlVx&?yu~tnTiV(-XvZSs%X^q(1 z%CKj&9IXz-M^DD1AwZ7&dTF4LXsJy$q7N;kjsl%N>H3V0??K}R=Ix!Z=Q<W*UYhv? zGeTO@tnh#gE3-P>HfiiHez(Ru_{4B&Y|%u?+wDR1@XXO!ZiR^%bFn9+9!#H@H}#a! zknrexG4bL%wx+jPP4W(e$;<Cz3ucNlI6U$wA5O9`+i47^l=;NN6BioBd11g{<6ji! zz~u6zFAWAf9Qv(`(-?DOsGWG~hn7ut?Cs|AS5R35ER>rqm}rKe0^QeSWKfp9cFvAg zVq{D!e3KzAh_I`yA2V;dx!)*BmxIUKM{35rsl%Z5$XtJ^36)v%6{v3$-}sudLrF*7 zsTpxyX?L$qw^<p3a|O7(_nr9f+X0xM@1-48QvATL%df4q74e{bO)Pm}e79b_awc@w zj00(y$Y*iSZ_u9RP02BRM^#pTAuf-s&iRy0m2;c%c<e1mlu_3uja|NQgVkGz5sn-o z?`~b0vZaU9xm)Y}K0h<IfkJG0-O<2F91AD{vm001GUTCU2#3dMO+$LD*?)MasYldk zS=x-i5%jGK(RN6-!-Bo<7<LdaZ3=?<O_;s8iM1}QndUm&r1k-)tx58oNh`lulg?Sn zoKJ%WppkRXdaY)zx{xzXihLk)-6J~f!-N|w3Jf9F01-d1JGe|9z%PcmXpQ{jGn^HR z|9vE~SHTQ}(wurCfQ4BoH>><Yy3;kFa0TTj=(7I-zS0k!)i^^(8G-KOLkhmFANP<Z z9q1PTHcgjbS?1HU&7HZqk~dhuwoKt_Pxn@hDmSYhUjE(7QvAi=>atzHz@?sVpo{sk z8`!wq$tlbd`5*D^pZ&=YVu+s;d|GSKw1A9}OK4K7%e(#9*Y<=l!BE9ta*}OjFye&4 zOqu!N((@ZJx5E4dsN>632}YN`ozW01u?%=N^z3RuFK%&9Po~9(A(U_i#NJX=QC#n) z>so7J5qVrsu#jl&rqj=IE0I4Db|@5$yl8*)@F2kIFc{c;krg%z0Ti35mCD|J{<;a$ z{ygn3MUbIBewdd>4%8Ch0(`jG<V)aC`V{2R6etd)89oT-E4C;w&5$SpR<TI`s5OLr zh4DQH!i{Dwq=nQr3~2DTszJN#(IeA1Ju_Ia8;D^g?JYvSRBnVJma=!$O3{-buTp&& zv$CN?t;sZ=E$7~s<A;*C)$VlND=SvvR)f5LLASE~8R(r(zM#=VRqGx_YV({ht(*G^ z-xhsYBNvN9w{-?&x^P`fJdJNMzFIl5`q~A{`6ZMO4F>xgX)e43qf^XsNh_@^vQZul zaGXe7UgMv~tp(&!l~n1w*T3fy=Wkete2I4I{2h%^0SX{+6gfl@2d5`4rkf(Kqsq%~ zrG7Fp5`KRGp6@Tqm`F7C-@Lj#9}_#V#{tnzQ$DU-T%tm^fL|dmyGaDdod*Ls0e|~2 znbT`Bgmt+KJCntK5NvRz&ZF(2D7WZps+TH|%Bc4sY4KOz8dyu#V0Ch}BX~p^#ypK- za=s7Tio$>zumVQT+d&VLYKZ8PHUpy!DxK6lFa=8zuadJa+BhSeb>lLr7;bf?M*V)) z-To0d+>@udQ0u%!LfI5p2l{&KTH(e26UQEag^>|uwj6p!-OV{olB4Z#MA#$yn|m34 z`8%rU<TDck*Q2hM(i+fPsd5R6J~pQ68U76*pvhPyL4xnnVSj49ACptZK&nx6V7Hq_ zyqxpUp6y#$-ui0FUZ7JR*IO>u;8<u;5YR{<7r&wM3uHi-c`tj0w1;-YxF7Q^S|BTs zn?fD{ihdykMSj*(Hpe=jIu(3UTEA7$uFJ3MCdcL%ztZ`trNmSl+U%k5YvJ$=+S!<s z{!=1P&%-GE__THO&T6tA&fB?Sl#`tUm`MlrFn02VewI5)p4A@bn%NAQ+6z4oV2D(6 zUUs;x+uYuNfJ(=t`8fJ{9xdsvR?(^-$>-zCZELCuH3Z5kL;-05OJJ6?zZ=tmJXydD z5c@EuqPi3K@MAP<U!c6`R+V1`zsI;cSv3=^6fRt}StTHnYupJ=D5fFgbZFnRppnVT zcDBy{cq^X4W_#-1ZW!98&O(~x2|$i>%7|eKBJ5Aaxc9js_WPE!Q%Df6#2}A(AO6r6 zHSpUr3equC>+>W@BL1(Ng{SFFhx}6tzvM~@Ma1Oj&l=9c`UdAZ@?5!et@8aV2qkOk z#WB&(pUY*|ysGgc&H5~s1OTa#IdBOZX=q+GiI3SmZA^jwOIsi`I|aTIC;BAj-l})i zeF?4;$7WF>>BU4Z8bdyASD8nWy9!VKG<EHupzV=<re|1t{=2s&N3XUg9$jW^9Jeix zq|?A=4FH>-L44xQ-}>JGc3md*g87IIoWMc5;|7-*5MIHQ10c@a{(EL>JiiEUgXA8~ zt&3e3&Z;tB564>i6Xv%E`EN1HKAOeP(z^9jc+xLyzZN?f?-_&M=`gbkqU>uJ3DkI7 zvjS~q2hGgWhFV0sgE&r?bc6X^igV0<Xs~(UlI3LldYx-<D1<!jWh8k*L(;;-JuAe; z@{@W?Jil3XO@NbOX~9ri8p95LeGOsf7`w@R4l|{}X9&pj#*_z7hngPABIOHHbzVOn zP2S8O-K%B&mVO;9Xi6XEf7?ac(08s-d<|o^7LLF!d-tkTNad7BCS09zjBn{r$3c<4 z_v2)Hu0_@n+eGO4(O$hI0v{l2KLv8e>gKP_5JOqKP-_LLmZJ<5`oPOtO&$n~yH%7t z)XYv>9Be!4vLY?ARacoV@%D`G4au~Wp}-G49TRZ~O`#=`QD}*l_4+D@eNXllW^25i z{KyzQZD)zx2axqmIZ#7eSFb-Mb{2YU#2^HD${;-XcIw!Ey?gU5O<s|nR}DTP{=yBV z@}?UNMZd2^6#Ks3Js|e#n8#BQR%PGWGcO588JP7BC=a`bPJ#MIDFg9*eoYEcg;~)B z3?%>evy(&RieUa^CtMp{+Ry2(`nQC3Lf2!+U0>sNs(%hNqgs+5N$FM!6e!Y#)pft; z@OqO}6@HY+^{k&BDY=lQTw;g*W}_(m-q~iQm}B@x#q@KjiQ05N60e2UDaMyFs$Rc2 z{9Tmt<_bKq^{QFom;a~@C2bR*ALI`nIUaR;=LWdq12S!MrGP+H(g2@auxufnksXsc zScHH>8k!!@V{|A*w1CP5I4!@pxAi$bZy?f6cK(&O8T3oWVXOr0qWoVPjK=jlK`y>Q zD~W-~Gc@lo$Kie6K0EG#9j1ui$qr#AuTk$*;TkS<EGE8z(wHXB?0GSn$OIc7_Crb( zJ5|>dalDc_{)j+@qJ1A}HsQp$`xPk+^s{W$J`gF?R{b=SehWu@n+QPd06};$wkf^s zd!H)o$*xpI0rwqFR3R6}#rPt8y}shG&Nw}r4rN-PTOZy*-Bh<l>_&jezm3Ef!$PSe zn=w2W&!*LM`lwOyT3?=Mlhst{&Jn)KZ{n6vlX8gk4(1$xKOIXxq)Br-X^QsQ481ID z@*}^(6J~qQQfr_T5r99K{C$?aYactjW@9`|$i0ND+@(JzUeSF@-`LmHB_R@)wgea# zmDd7CpJJ@M$I{LziE#$24xf@Va~|^P>$zch1C6_XShA0<Vz>%){t#MmK+bK?3`7&i zEKNv=QEy<XA`8=qk0}ZT25$B~W*L0k9$ex#J++E`@KBZup5e2*WN|EQzU9WOZj=7+ zx=bT;Ugi4T<J>^TBZrQ8GOn7|%7z*zO=NV20|PsFg}_?-hk5pcuhbmN*<ufgBeea^ z2~VjXk)dsBAwy?seZuun2qx!0jTf_Tb`F9kAsTd7CT5H2R=oPc5x>gmRT`R*a&}Jt zzX1IL0{v>O38aN9Cc2p#g`gN_4sYR!qr>=?j=^FXJ1{^p3~3D<j-IfDHsMc<qD&|4 z-LUn`#e1NY;1If&(Ib1vY+}@b94hi!@9OXiK}~A=3O}QQ5DIIQ@()Qt+dVYkBH7;1 zzfh1XRp|a1%ziVrQ^ml9XRSPNBePKH4sxG~TUkbML^zSB{B3@Sn!o+bO;D{;CnTvK z|NjeU&x`;79{&!U3MOzP6+^Fn8S?Xgu1fq>1Yku28TFUm`28yk)ReEUVdF%49P27^ z+X%_2@FpRTWqsx*7*;d>8Pdyi(WjT6&2^ZoV%ZYJQ@i21@2vx)eyT<&5B^jTcaPk6 zOrLTg@(i=^6bobht8yY620}Ww2=HayGo)y+;vtJv`KwaG^!;?NGCXEnr*bFj@1EK_ z*I&+iT;3{|ZyySWYHZ?dzGAsR(LEkC38njNt(PWC3d$ARk=fb@jqBu=CsIsu5J!Dk z{N>a2lZiT<{lc?$b55^oAct(0N<j&mqtv)P6^i^piyS`n>5ps-ZmNkt01##qYl%M) zFG9JqT20a#rB-JwneL*Vv)8CQ49(ZXC%k>rV$n?76Zvh%oi<jU;ELY^UO>Ev!&Mzm z%B_`I_xf{`7(ZH=ak;^3bJ-g|<D~(v`fH=}sp66{Z{6GcY&oi8G99kmxz_<&71Zp$ z=AYXLI;@ez`Q!$Q$Jc-7KI9KVY<cr~sqFXKh1f9!BHIA5jJ#ZS(6<OxkE%mhgL34n zv3TLlPCqJnU3AC$L|xiw{kAO@ycQxV(_{f2G>n@{T9=3b0AuG3b!$yV|HR*3ZpHCa zJ8WQSfIt8i-;4Cmi}IhoEkBue)p4cL@b;kqxol^7kpKWn{x8G-7v24Wc&1N{3}S;N z>IZ-_sePRBIilmC^o*N`eJ?Z>6%`c~6%`c~6%`c~6%`c~6%`c~2h#OnVPRokK~Ygr uQBhG*-{%;&;%L9%h(xSA1l`Im5WgB6T|s}11|MU?<KO@Q000000000^eR^B~ literal 0 HcmV?d00001 diff --git a/vector/src/main/res/res/drawable-xxhdpi/app_layout_onboarding_welcome.webp b/vector/src/main/res/res/drawable-xxhdpi/app_layout_onboarding_welcome.webp new file mode 100644 index 0000000000000000000000000000000000000000..f95909eaaea856f7b4c857c55f124c9bac5ea7c3 GIT binary patch literal 22692 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 literal 0 HcmV?d00001 diff --git a/vector/src/main/res/res/drawable-xxxhdpi/app_layout_onboarding_feedback.webp b/vector/src/main/res/res/drawable-xxxhdpi/app_layout_onboarding_feedback.webp new file mode 100644 index 0000000000000000000000000000000000000000..cee3cf512ccd9ac2b74306cf13ba96551464727b GIT binary patch literal 32874 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 literal 0 HcmV?d00001 diff --git a/vector/src/main/res/res/drawable-xxxhdpi/app_layout_onboarding_spaces.webp b/vector/src/main/res/res/drawable-xxxhdpi/app_layout_onboarding_spaces.webp new file mode 100644 index 0000000000000000000000000000000000000000..b4bf421be5b889ed00119978f7e942e748d26930 GIT binary patch literal 52942 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	hrJ(}-m<CHW8)2ZSG4@dJ5a6bV!svrg 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 hDrS^cakcn}n;Q5400000000000000000000000*RkYNA- literal 0 HcmV?d00001 diff --git a/vector/src/main/res/res/drawable-xxxhdpi/app_layout_onboarding_welcome.webp b/vector/src/main/res/res/drawable-xxxhdpi/app_layout_onboarding_welcome.webp new file mode 100644 index 0000000000000000000000000000000000000000..cee3cf512ccd9ac2b74306cf13ba96551464727b GIT binary patch literal 32874 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 literal 0 HcmV?d00001 diff --git a/vector/src/test/java/im/vector/app/features/onboarding/OnboardingViewModelTest.kt b/vector/src/test/java/im/vector/app/features/onboarding/OnboardingViewModelTest.kt index 0e4a4704b9..49c3f3ef23 100644 --- a/vector/src/test/java/im/vector/app/features/onboarding/OnboardingViewModelTest.kt +++ b/vector/src/test/java/im/vector/app/features/onboarding/OnboardingViewModelTest.kt @@ -170,7 +170,7 @@ class OnboardingViewModelTest { .assertStatesChanges( initialState, { copy(isLoading = true) }, - { copy(isLoading = false) } + { copy(isLoading = false, selectedAuthenticationState = SelectedAuthenticationState(description = AuthenticationDescription.Login)) } ) .assertEvents(OnboardingViewEvents.OnAccountSignedIn) .finish() @@ -189,7 +189,7 @@ class OnboardingViewModelTest { .assertStatesChanges( initialState, { copy(isLoading = true) }, - { copy(isLoading = false) } + { copy(isLoading = false, selectedAuthenticationState = SelectedAuthenticationState(description = AuthenticationDescription.Login)) } ) .assertEvents(OnboardingViewEvents.OnAccountSignedIn) .finish() @@ -284,7 +284,7 @@ class OnboardingViewModelTest { .assertStatesChanges( initialState, { copy(isLoading = true) }, - { copy(isLoading = false) } + { copy(isLoading = false, selectedAuthenticationState = SelectedAuthenticationState(description = AuthenticationDescription.Login)) } ) .assertEvents(OnboardingViewEvents.OnAccountSignedIn) .finish() @@ -870,7 +870,7 @@ class OnboardingViewModelTest { .assertStatesChanges( initialState, { copy(isLoading = true) }, - { copy(isLoading = false) } + { copy(isLoading = false, selectedAuthenticationState = SelectedAuthenticationState(description = AuthenticationDescription.Login)) } ) .assertEvents(OnboardingViewEvents.OnAccountSignedIn) .finish() From 97a010cbc558a19b3412f7eb08983125e1b0dbd5 Mon Sep 17 00:00:00 2001 From: Benoit Marty <benoit@matrix.org> Date: Tue, 6 Sep 2022 12:15:20 +0200 Subject: [PATCH 27/57] Update doc. --- docs/nightly_build.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/nightly_build.md b/docs/nightly_build.md index 7750e0466a..77cc676c7f 100644 --- a/docs/nightly_build.md +++ b/docs/nightly_build.md @@ -47,7 +47,7 @@ git checkout develop mv towncrier.toml towncrier.toml.bak sed 's/CHANGES\.md/CHANGES_NIGHTLY\.md/' towncrier.toml.bak > towncrier.toml rm towncrier.toml.bak -yes n | towncrier --version nightly +yes n | towncrier build --version nightly ./gradlew assembleGplayNightly appDistributionUploadGplayNightly $CI_GRADLE_ARG_PROPERTIES ``` From b4fcffbdf9f01d14a667d8c39408d3f4418e49a6 Mon Sep 17 00:00:00 2001 From: Benoit Marty <benoit@matrix.org> Date: Tue, 6 Sep 2022 17:11:25 +0200 Subject: [PATCH 28/57] Add missing points. --- .../app/features/analytics/plan/UserProperties.kt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/analytics/plan/UserProperties.kt b/vector/src/main/java/im/vector/app/features/analytics/plan/UserProperties.kt index d6fa918b8e..28732c9a42 100644 --- a/vector/src/main/java/im/vector/app/features/analytics/plan/UserProperties.kt +++ b/vector/src/main/java/im/vector/app/features/analytics/plan/UserProperties.kt @@ -45,7 +45,7 @@ data class UserProperties( */ val webMetaSpacePeopleEnabled: Boolean? = null, /** - * The active filter in the All Chats screen + * The active filter in the All Chats screen. */ val allChatsActiveFilter: AllChatsActiveFilter? = null, /** @@ -87,22 +87,22 @@ data class UserProperties( enum class AllChatsActiveFilter { /** - * Filters are activated and All is selected + * Filters are activated and All is selected. */ All, /** - * Filters are activated and Favourites is selected + * Filters are activated and Favourites is selected. */ Favourites, /** - * Filters are activated and People is selected + * Filters are activated and People is selected. */ People, /** - * Filters are activated and Unreads is selected + * Filters are activated and Unreads is selected. */ Unreads, } From 273999ee88dd7dea690b50452d325c89cb3db008 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jorge=20Mart=C3=ADn?= <jorgem@element.io> Date: Tue, 6 Sep 2022 12:34:24 +0200 Subject: [PATCH 29/57] Fix voice recording tests --- .../features/voice/VoiceRecorderProviderTests.kt | 14 ++++++++++++-- .../app/features/voice/VoiceRecorderProvider.kt | 4 +++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/vector/src/androidTest/java/im/vector/app/features/voice/VoiceRecorderProviderTests.kt b/vector/src/androidTest/java/im/vector/app/features/voice/VoiceRecorderProviderTests.kt index 61f745178c..65f81b145b 100644 --- a/vector/src/androidTest/java/im/vector/app/features/voice/VoiceRecorderProviderTests.kt +++ b/vector/src/androidTest/java/im/vector/app/features/voice/VoiceRecorderProviderTests.kt @@ -20,6 +20,8 @@ import android.os.Build import androidx.test.platform.app.InstrumentationRegistry import im.vector.app.AndroidVersionTestOverrider import im.vector.app.features.DefaultVectorFeatures +import io.mockk.every +import io.mockk.spyk import org.amshove.kluent.shouldBeInstanceOf import org.junit.After import org.junit.Test @@ -27,7 +29,7 @@ import org.junit.Test class VoiceRecorderProviderTests { private val context = InstrumentationRegistry.getInstrumentation().targetContext - private val provider = VoiceRecorderProvider(context, DefaultVectorFeatures()) + private val provider = spyk(VoiceRecorderProvider(context, DefaultVectorFeatures())) @After fun tearDown() { @@ -35,11 +37,19 @@ class VoiceRecorderProviderTests { } @Test - fun provideVoiceRecorderOnAndroidQReturnsQRecorder() { + fun provideVoiceRecorderOnAndroidQAndCodecReturnsQRecorder() { AndroidVersionTestOverrider.override(Build.VERSION_CODES.Q) + every { provider.hasOpusEncoder() } returns true provider.provideVoiceRecorder().shouldBeInstanceOf(VoiceRecorderQ::class) } + @Test + fun provideVoiceRecorderOnAndroidQButNoCodecReturnsLRecorder() { + AndroidVersionTestOverrider.override(Build.VERSION_CODES.Q) + every { provider.hasOpusEncoder() } returns false + provider.provideVoiceRecorder().shouldBeInstanceOf(VoiceRecorderL::class) + } + @Test fun provideVoiceRecorderOnOlderAndroidVersionReturnsLRecorder() { AndroidVersionTestOverrider.override(Build.VERSION_CODES.LOLLIPOP) diff --git a/vector/src/main/java/im/vector/app/features/voice/VoiceRecorderProvider.kt b/vector/src/main/java/im/vector/app/features/voice/VoiceRecorderProvider.kt index 3441d0231a..1bf289fb4c 100644 --- a/vector/src/main/java/im/vector/app/features/voice/VoiceRecorderProvider.kt +++ b/vector/src/main/java/im/vector/app/features/voice/VoiceRecorderProvider.kt @@ -20,6 +20,7 @@ import android.content.Context import android.media.MediaCodecList import android.media.MediaFormat import android.os.Build +import androidx.annotation.VisibleForTesting import im.vector.app.features.VectorFeatures import kotlinx.coroutines.Dispatchers import javax.inject.Inject @@ -40,7 +41,8 @@ class VoiceRecorderProvider @Inject constructor( return Build.VERSION.SDK_INT < Build.VERSION_CODES.Q || !hasOpusEncoder() || vectorFeatures.forceUsageOfOpusEncoder() } - private fun hasOpusEncoder(): Boolean { + @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) + internal fun hasOpusEncoder(): Boolean { val codecList = MediaCodecList(MediaCodecList.ALL_CODECS) val format = MediaFormat.createAudioFormat(MediaFormat.MIMETYPE_AUDIO_OPUS, 48000, 1) return codecList.findEncoderForFormat(format) != null From e2aa66e4c20a47fc953f2f8eeed0e22961e46e55 Mon Sep 17 00:00:00 2001 From: Maxime NATUREL <maxime.naturel@niji.fr> Date: Mon, 29 Aug 2022 17:23:07 +0200 Subject: [PATCH 30/57] Adding changelog entry --- changelog.d/6961.wip | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/6961.wip diff --git a/changelog.d/6961.wip b/changelog.d/6961.wip new file mode 100644 index 0000000000..2d271da8c1 --- /dev/null +++ b/changelog.d/6961.wip @@ -0,0 +1 @@ +[Devices Management] Session overview screen From 969663786b0f86f85601be1fbbbd3d8e66ac0c1e Mon Sep 17 00:00:00 2001 From: Maxime NATUREL <maxime.naturel@niji.fr> Date: Mon, 29 Aug 2022 17:30:59 +0200 Subject: [PATCH 31/57] Renaming header list view to be consistent --- .../stylable_devices_list_header_view.xml | 2 +- ...eaderView.kt => SessionsListHeaderView.kt} | 20 +++++++++---------- .../res/layout/fragment_settings_devices.xml | 6 +++--- ...ader.xml => view_sessions_list_header.xml} | 8 ++++---- 4 files changed, 18 insertions(+), 18 deletions(-) rename vector/src/main/java/im/vector/app/features/settings/devices/v2/list/{DevicesListHeaderView.kt => SessionsListHeaderView.kt} (74%) rename vector/src/main/res/layout/{view_devices_list_header.xml => view_sessions_list_header.xml} (83%) diff --git a/library/ui-styles/src/main/res/values/stylable_devices_list_header_view.xml b/library/ui-styles/src/main/res/values/stylable_devices_list_header_view.xml index f0807f89c6..97e0290815 100644 --- a/library/ui-styles/src/main/res/values/stylable_devices_list_header_view.xml +++ b/library/ui-styles/src/main/res/values/stylable_devices_list_header_view.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <resources> - <declare-styleable name="DevicesListHeaderView"> + <declare-styleable name="SessionsListHeaderView"> <attr name="devicesListHeaderTitle" format="string" /> <attr name="devicesListHeaderDescription" format="string" /> </declare-styleable> diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/DevicesListHeaderView.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/SessionsListHeaderView.kt similarity index 74% rename from vector/src/main/java/im/vector/app/features/settings/devices/v2/list/DevicesListHeaderView.kt rename to vector/src/main/java/im/vector/app/features/settings/devices/v2/list/SessionsListHeaderView.kt index d6c7dbe273..547ed93f24 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/DevicesListHeaderView.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/SessionsListHeaderView.kt @@ -25,15 +25,15 @@ import androidx.core.content.res.use import androidx.core.view.isVisible import im.vector.app.R import im.vector.app.core.extensions.setTextWithColoredPart -import im.vector.app.databinding.ViewDevicesListHeaderBinding +import im.vector.app.databinding.ViewSessionsListHeaderBinding -class DevicesListHeaderView @JvmOverloads constructor( +class SessionsListHeaderView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 ) : ConstraintLayout(context, attrs, defStyleAttr) { - private val binding = ViewDevicesListHeaderBinding.inflate( + private val binding = ViewSessionsListHeaderBinding.inflate( LayoutInflater.from(context), this ) @@ -43,7 +43,7 @@ class DevicesListHeaderView @JvmOverloads constructor( init { context.obtainStyledAttributes( attrs, - R.styleable.DevicesListHeaderView, + R.styleable.SessionsListHeaderView, 0, 0 ).use { @@ -53,14 +53,14 @@ class DevicesListHeaderView @JvmOverloads constructor( } private fun setTitle(typedArray: TypedArray) { - val title = typedArray.getString(R.styleable.DevicesListHeaderView_devicesListHeaderTitle) - binding.devicesListHeaderTitle.text = title + val title = typedArray.getString(R.styleable.SessionsListHeaderView_devicesListHeaderTitle) + binding.sessionsListHeaderTitle.text = title } private fun setDescription(typedArray: TypedArray) { - val description = typedArray.getString(R.styleable.DevicesListHeaderView_devicesListHeaderDescription) + val description = typedArray.getString(R.styleable.SessionsListHeaderView_devicesListHeaderDescription) if (description.isNullOrEmpty()) { - binding.devicesListHeaderDescription.isVisible = false + binding.sessionsListHeaderDescription.isVisible = false return } @@ -70,8 +70,8 @@ class DevicesListHeaderView @JvmOverloads constructor( stringBuilder.append(" ") stringBuilder.append(learnMore) - binding.devicesListHeaderDescription.isVisible = true - binding.devicesListHeaderDescription.setTextWithColoredPart( + binding.sessionsListHeaderDescription.isVisible = true + binding.sessionsListHeaderDescription.setTextWithColoredPart( fullText = stringBuilder.toString(), coloredPart = learnMore, underline = false diff --git a/vector/src/main/res/layout/fragment_settings_devices.xml b/vector/src/main/res/layout/fragment_settings_devices.xml index 6710f345ce..a289bda735 100644 --- a/vector/src/main/res/layout/fragment_settings_devices.xml +++ b/vector/src/main/res/layout/fragment_settings_devices.xml @@ -56,7 +56,7 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/deviceListInactiveSessionsRecommendation" /> - <im.vector.app.features.settings.devices.v2.list.DevicesListHeaderView + <im.vector.app.features.settings.devices.v2.list.SessionsListHeaderView android:id="@+id/deviceListHeaderCurrentSession" android:layout_width="0dp" android:layout_height="wrap_content" @@ -66,7 +66,7 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/deviceListSecurityRecommendationsDivider" /> - <im.vector.app.features.settings.devices.v2.list.CurrentSessionView + <im.vector.app.features.settings.devices.v2.list.SessionInfoView android:id="@+id/deviceListCurrentSession" android:layout_width="0dp" android:layout_height="wrap_content" @@ -86,7 +86,7 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/deviceListCurrentSession" /> - <im.vector.app.features.settings.devices.v2.list.DevicesListHeaderView + <im.vector.app.features.settings.devices.v2.list.SessionsListHeaderView android:id="@+id/deviceListHeaderOtherSessions" android:layout_width="0dp" android:layout_height="wrap_content" diff --git a/vector/src/main/res/layout/view_devices_list_header.xml b/vector/src/main/res/layout/view_sessions_list_header.xml similarity index 83% rename from vector/src/main/res/layout/view_devices_list_header.xml rename to vector/src/main/res/layout/view_sessions_list_header.xml index 492c3e7a12..d690ee4c87 100644 --- a/vector/src/main/res/layout/view_devices_list_header.xml +++ b/vector/src/main/res/layout/view_sessions_list_header.xml @@ -7,7 +7,7 @@ tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout"> <TextView - android:id="@+id/devices_list_header_title" + android:id="@+id/sessions_list_header_title" style="@style/TextAppearance.Vector.Subtitle.Medium.DevicesManagement" android:layout_width="0dp" android:layout_height="wrap_content" @@ -19,14 +19,14 @@ tools:text="Other sessions" /> <TextView - android:id="@+id/devices_list_header_description" + android:id="@+id/sessions_list_header_description" style="@style/TextAppearance.Vector.Body.DevicesManagement" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginTop="18.5dp" android:layout_marginEnd="40dp" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="@id/devices_list_header_title" - app:layout_constraintTop_toBottomOf="@id/devices_list_header_title" + app:layout_constraintStart_toStartOf="@id/sessions_list_header_title" + app:layout_constraintTop_toBottomOf="@id/sessions_list_header_title" tools:text="For best security, verify your sessions and sign out from any session that you don’t recognize or use anymore. Learn More." /> </merge> From ebf707dca9a26346450e28c6ba5470916a232224 Mon Sep 17 00:00:00 2001 From: Maxime NATUREL <maxime.naturel@niji.fr> Date: Mon, 29 Aug 2022 18:29:12 +0200 Subject: [PATCH 32/57] Navigation from current session --- .../src/main/res/values/strings.xml | 2 + vector/src/main/AndroidManifest.xml | 1 + .../app/core/di/MavericksViewModelModule.kt | 6 +++ .../v2/VectorSettingsDevicesFragment.kt | 26 ++++++++- .../v2/VectorSettingsDevicesViewNavigator.kt | 29 ++++++++++ .../devices/v2/list/CurrentSessionView.kt | 2 + .../v2/overview/SessionOverviewAction.kt | 21 ++++++++ .../v2/overview/SessionOverviewActivity.kt | 52 ++++++++++++++++++ .../v2/overview/SessionOverviewArgs.kt | 25 +++++++++ .../v2/overview/SessionOverviewFragment.kt | 52 ++++++++++++++++++ .../v2/overview/SessionOverviewState.kt | 28 ++++++++++ .../v2/overview/SessionOverviewViewModel.kt | 53 +++++++++++++++++++ .../res/layout/fragment_settings_devices.xml | 2 +- .../fragment_settings_session_overview.xml | 6 +++ 14 files changed, 302 insertions(+), 3 deletions(-) create mode 100644 vector/src/main/java/im/vector/app/features/settings/devices/v2/VectorSettingsDevicesViewNavigator.kt create mode 100644 vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewAction.kt create mode 100644 vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewActivity.kt create mode 100644 vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewArgs.kt create mode 100644 vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewFragment.kt create mode 100644 vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewState.kt create mode 100644 vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewModel.kt create mode 100644 vector/src/main/res/layout/fragment_settings_session_overview.xml diff --git a/library/ui-strings/src/main/res/values/strings.xml b/library/ui-strings/src/main/res/values/strings.xml index 8c2af01e52..823a26df74 100644 --- a/library/ui-strings/src/main/res/values/strings.xml +++ b/library/ui-strings/src/main/res/values/strings.xml @@ -3248,6 +3248,8 @@ <item quantity="one">Consider signing out from old sessions (%1$d day or more) that you don’t use anymore.</item> <item quantity="other">Consider signing out from old sessions (%1$d days or more) that you don’t use anymore.</item> </plurals> + <string name="device_manager_current_session_title">Current Session</string> + <string name="device_manager_session_title">Session</string> <!-- Note to translators: %s will be replaces with selected space name --> <string name="home_empty_space_no_rooms_title">%s\nis looking a little empty.</string> diff --git a/vector/src/main/AndroidManifest.xml b/vector/src/main/AndroidManifest.xml index c4022576c3..cd2fd52b32 100644 --- a/vector/src/main/AndroidManifest.xml +++ b/vector/src/main/AndroidManifest.xml @@ -339,6 +339,7 @@ <activity android:name=".features.call.dialpad.PstnDialActivity" /> <activity android:name=".features.home.room.list.home.invites.InvitesActivity"/> <activity android:name=".features.home.room.list.home.release.ReleaseNotesActivity"/> + <activity android:name=".features.settings.devices.v2.overview.SessionOverviewActivity"/> <!-- Services --> diff --git a/vector/src/main/java/im/vector/app/core/di/MavericksViewModelModule.kt b/vector/src/main/java/im/vector/app/core/di/MavericksViewModelModule.kt index a40aeaaa15..40484f57e8 100644 --- a/vector/src/main/java/im/vector/app/core/di/MavericksViewModelModule.kt +++ b/vector/src/main/java/im/vector/app/core/di/MavericksViewModelModule.kt @@ -88,6 +88,7 @@ import im.vector.app.features.settings.account.deactivation.DeactivateAccountVie import im.vector.app.features.settings.crosssigning.CrossSigningSettingsViewModel import im.vector.app.features.settings.devices.DeviceVerificationInfoBottomSheetViewModel import im.vector.app.features.settings.devices.DevicesViewModel +import im.vector.app.features.settings.devices.v2.overview.SessionOverviewViewModel import im.vector.app.features.settings.devtools.AccountDataViewModel import im.vector.app.features.settings.devtools.GossipingEventsPaperTrailViewModel import im.vector.app.features.settings.devtools.KeyRequestListViewModel @@ -630,4 +631,9 @@ interface MavericksViewModelModule { @IntoMap @MavericksViewModelKey(ReleaseNotesViewModel::class) fun releaseNotesViewModel(factory: ReleaseNotesViewModel.Factory): MavericksAssistedViewModelFactory<*, *> + + @Binds + @IntoMap + @MavericksViewModelKey(SessionOverviewViewModel::class) + fun sessionOverviewViewModelFactory(factory: SessionOverviewViewModel.Factory): MavericksAssistedViewModelFactory<*, *> } diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/VectorSettingsDevicesFragment.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/VectorSettingsDevicesFragment.kt index 78b8c66f9c..2adf7969bf 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/VectorSettingsDevicesFragment.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/VectorSettingsDevicesFragment.kt @@ -42,6 +42,7 @@ import im.vector.app.features.settings.devices.DevicesViewEvents import im.vector.app.features.settings.devices.DevicesViewModel import im.vector.app.features.settings.devices.v2.list.SESSION_IS_MARKED_AS_INACTIVE_AFTER_DAYS import im.vector.app.features.settings.devices.v2.list.SecurityRecommendationViewState +import javax.inject.Inject /** * Display the list of the user's devices and sessions. @@ -50,6 +51,8 @@ import im.vector.app.features.settings.devices.v2.list.SecurityRecommendationVie class VectorSettingsDevicesFragment : VectorBaseFragment<FragmentSettingsDevicesBinding>() { + @Inject lateinit var viewNavigator: VectorSettingsDevicesViewNavigator + private val viewModel: DevicesViewModel by fragmentViewModel() override fun getBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentSettingsDevicesBinding { @@ -72,10 +75,10 @@ class VectorSettingsDevicesFragment : initLearnMoreButtons() initWaitingView() - observerViewEvents() + observeViewEvents() } - private fun observerViewEvents() { + private fun observeViewEvents() { viewModel.observeViewEvents { when (it) { is DevicesViewEvents.Loading -> showLoading(it.message) @@ -197,15 +200,34 @@ class VectorSettingsDevicesFragment : views.deviceListHeaderCurrentSession.isVisible = true views.deviceListCurrentSession.isVisible = true views.deviceListCurrentSession.render(it) + views.deviceListCurrentSession.debouncedClicks { + currentDeviceInfo.deviceInfo.deviceId?.let { deviceId -> navigateToSessionOverview(deviceId) } + } + views.deviceListCurrentSession.viewDetailsButton.debouncedClicks { + currentDeviceInfo.deviceInfo.deviceId?.let { deviceId -> navigateToSessionOverview(deviceId) } + } } ?: run { hideCurrentSessionView() } } + private fun navigateToSessionOverview(sessionId: String) { + viewNavigator.navigateToSessionOverview( + context = requireActivity(), + sessionId = sessionId + ) + } + private fun hideCurrentSessionView() { views.deviceListHeaderCurrentSession.isVisible = false views.deviceListCurrentSession.isVisible = false views.deviceListDividerCurrentSession.isVisible = false + views.deviceListCurrentSession.debouncedClicks { + // do nothing + } + views.deviceListCurrentSession.viewDetailsButton.debouncedClicks { + // do nothing + } } private fun handleRequestStatus(unIgnoreRequest: Async<Unit>) { diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/VectorSettingsDevicesViewNavigator.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/VectorSettingsDevicesViewNavigator.kt new file mode 100644 index 0000000000..0e5cb87d7b --- /dev/null +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/VectorSettingsDevicesViewNavigator.kt @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2022 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.app.features.settings.devices.v2 + +import android.content.Context +import im.vector.app.features.settings.devices.v2.overview.SessionOverviewActivity +import javax.inject.Inject + +// TODO add unit tests +class VectorSettingsDevicesViewNavigator @Inject constructor() { + + fun navigateToSessionOverview(context: Context, sessionId: String) { + context.startActivity(SessionOverviewActivity.newIntent(context, sessionId)) + } +} diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/CurrentSessionView.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/CurrentSessionView.kt index d6f81f4f79..1ce035931f 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/CurrentSessionView.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/CurrentSessionView.kt @@ -39,6 +39,8 @@ class CurrentSessionView @JvmOverloads constructor( views = ViewCurrentSessionBinding.bind(this) } + val viewDetailsButton = views.currentSessionViewDetailsButton + fun render(currentDeviceInfo: DeviceFullInfo) { renderDeviceInfo(currentDeviceInfo.deviceInfo.displayName.orEmpty()) renderVerificationStatus(currentDeviceInfo.trustLevelForShield) diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewAction.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewAction.kt new file mode 100644 index 0000000000..c028c08ec4 --- /dev/null +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewAction.kt @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2020 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.app.features.settings.devices.v2.overview + +import im.vector.app.core.platform.VectorViewModelAction + +sealed class SessionOverviewAction : VectorViewModelAction diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewActivity.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewActivity.kt new file mode 100644 index 0000000000..a663c0ff2a --- /dev/null +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewActivity.kt @@ -0,0 +1,52 @@ +/* + * Copyright 2022 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.app.features.settings.devices.v2.overview + +import android.content.Context +import android.content.Intent +import android.os.Bundle +import com.airbnb.mvrx.Mavericks +import dagger.hilt.android.AndroidEntryPoint +import im.vector.app.core.extensions.addFragment +import im.vector.app.core.platform.SimpleFragmentActivity + +/** + * Display the overview info about a Session. + */ +@AndroidEntryPoint +class SessionOverviewActivity : SimpleFragmentActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + if (isFirstCreation()) { + addFragment( + container = views.container, + fragmentClass = SessionOverviewFragment::class.java, + params = intent.getParcelableExtra(Mavericks.KEY_ARG) + ) + } + } + + companion object { + fun newIntent(context: Context, sessionId: String): Intent { + return Intent(context, SessionOverviewActivity::class.java).apply { + putExtra(Mavericks.KEY_ARG, SessionOverviewArgs(sessionId)) + } + } + } +} diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewArgs.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewArgs.kt new file mode 100644 index 0000000000..87ea883362 --- /dev/null +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewArgs.kt @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2022 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.app.features.settings.devices.v2.overview + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize +data class SessionOverviewArgs( + val sessionId: String +) : Parcelable diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewFragment.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewFragment.kt new file mode 100644 index 0000000000..1b8b231a5c --- /dev/null +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewFragment.kt @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2022 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.app.features.settings.devices.v2.overview + +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.appcompat.app.AppCompatActivity +import com.airbnb.mvrx.fragmentViewModel +import com.airbnb.mvrx.withState +import dagger.hilt.android.AndroidEntryPoint +import im.vector.app.R +import im.vector.app.core.platform.VectorBaseFragment +import im.vector.app.databinding.FragmentSettingsSessionOverviewBinding + +/** + * Display the overview info about a Session. + */ +@AndroidEntryPoint +class SessionOverviewFragment : + VectorBaseFragment<FragmentSettingsSessionOverviewBinding>() { + + private val viewModel: SessionOverviewViewModel by fragmentViewModel() + + override fun getBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentSettingsSessionOverviewBinding { + return FragmentSettingsSessionOverviewBinding.inflate(inflater, container, false) + } + + override fun invalidate() = withState(viewModel) { state -> + updateToolbar(state.isCurrentSession) + } + + private fun updateToolbar(isCurrentSession: Boolean) { + val titleResId = if (isCurrentSession) R.string.device_manager_current_session_title else R.string.device_manager_session_title + (activity as? AppCompatActivity) + ?.supportActionBar + ?.setTitle(titleResId) + } +} diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewState.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewState.kt new file mode 100644 index 0000000000..d91d6a82ce --- /dev/null +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewState.kt @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2022 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.app.features.settings.devices.v2.overview + +import com.airbnb.mvrx.MavericksState + +data class SessionOverviewState( + val sessionId: String, + val isCurrentSession: Boolean = false, +) : MavericksState { + constructor(args: SessionOverviewArgs) : this( + sessionId = args.sessionId + ) +} diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewModel.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewModel.kt new file mode 100644 index 0000000000..a95cc1a49b --- /dev/null +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewModel.kt @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2022 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.app.features.settings.devices.v2.overview + +import com.airbnb.mvrx.MavericksViewModelFactory +import dagger.assisted.Assisted +import dagger.assisted.AssistedFactory +import dagger.assisted.AssistedInject +import im.vector.app.core.di.MavericksAssistedViewModelFactory +import im.vector.app.core.di.hiltMavericksViewModelFactory +import im.vector.app.core.platform.EmptyViewEvents +import im.vector.app.core.platform.VectorViewModel +import org.matrix.android.sdk.api.session.Session + +class SessionOverviewViewModel @AssistedInject constructor( + @Assisted val initialState: SessionOverviewState, + session: Session, +) : VectorViewModel<SessionOverviewState, SessionOverviewAction, EmptyViewEvents>(initialState) { + + companion object : MavericksViewModelFactory<SessionOverviewViewModel, SessionOverviewState> by hiltMavericksViewModelFactory() + + @AssistedFactory + interface Factory : MavericksAssistedViewModelFactory<SessionOverviewViewModel, SessionOverviewState> { + override fun create(initialState: SessionOverviewState): SessionOverviewViewModel + } + + init { + val currentSessionId = session.sessionParams.deviceId.orEmpty() + setState { + copy( + isCurrentSession = sessionId.isNotEmpty() && sessionId == currentSessionId + ) + } + } + + override fun handle(action: SessionOverviewAction) { + TODO("Implement when adding the first action") + } +} diff --git a/vector/src/main/res/layout/fragment_settings_devices.xml b/vector/src/main/res/layout/fragment_settings_devices.xml index a289bda735..b4f47302e1 100644 --- a/vector/src/main/res/layout/fragment_settings_devices.xml +++ b/vector/src/main/res/layout/fragment_settings_devices.xml @@ -61,7 +61,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" app:devicesListHeaderDescription="" - app:devicesListHeaderTitle="@string/device_manager_header_section_current_session" + app:devicesListHeaderTitle="@string/device_manager_current_session_title" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/deviceListSecurityRecommendationsDivider" /> diff --git a/vector/src/main/res/layout/fragment_settings_session_overview.xml b/vector/src/main/res/layout/fragment_settings_session_overview.xml new file mode 100644 index 0000000000..1354408486 --- /dev/null +++ b/vector/src/main/res/layout/fragment_settings_session_overview.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent"> + +</androidx.constraintlayout.widget.ConstraintLayout> From 26dbd3171743d10dea6f3badf2ea9e34246c99ad Mon Sep 17 00:00:00 2001 From: Maxime NATUREL <maxime.naturel@niji.fr> Date: Tue, 30 Aug 2022 15:03:07 +0200 Subject: [PATCH 33/57] Unit tests for navigator --- .../v2/VectorSettingsDevicesViewNavigator.kt | 1 - .../VectorSettingsDevicesViewNavigatorTest.kt | 65 +++++++++++++++++++ .../im/vector/app/test/fakes/FakeContext.kt | 7 ++ 3 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 vector/src/test/java/im/vector/app/features/settings/devices/v2/VectorSettingsDevicesViewNavigatorTest.kt diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/VectorSettingsDevicesViewNavigator.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/VectorSettingsDevicesViewNavigator.kt index 0e5cb87d7b..25c971aacb 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/VectorSettingsDevicesViewNavigator.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/VectorSettingsDevicesViewNavigator.kt @@ -20,7 +20,6 @@ import android.content.Context import im.vector.app.features.settings.devices.v2.overview.SessionOverviewActivity import javax.inject.Inject -// TODO add unit tests class VectorSettingsDevicesViewNavigator @Inject constructor() { fun navigateToSessionOverview(context: Context, sessionId: String) { diff --git a/vector/src/test/java/im/vector/app/features/settings/devices/v2/VectorSettingsDevicesViewNavigatorTest.kt b/vector/src/test/java/im/vector/app/features/settings/devices/v2/VectorSettingsDevicesViewNavigatorTest.kt new file mode 100644 index 0000000000..2a4c53f34f --- /dev/null +++ b/vector/src/test/java/im/vector/app/features/settings/devices/v2/VectorSettingsDevicesViewNavigatorTest.kt @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2022 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.app.features.settings.devices.v2 + +import android.content.Intent +import im.vector.app.features.settings.devices.v2.overview.SessionOverviewActivity +import im.vector.app.test.fakes.FakeContext +import io.mockk.every +import io.mockk.mockk +import io.mockk.mockkObject +import io.mockk.unmockkAll +import io.mockk.verify +import org.junit.After +import org.junit.Before +import org.junit.Test + +private const val A_SESSION_ID = "session_id" + +class VectorSettingsDevicesViewNavigatorTest { + + private val context = FakeContext() + private val vectorSettingsDevicesViewNavigator = VectorSettingsDevicesViewNavigator() + + @Before + fun setUp() { + mockkObject(SessionOverviewActivity.Companion) + } + + @After + fun tearDown() { + unmockkAll() + } + + @Test + fun `given a session id when navigating to overview then it starts the correct activity`() { + val intent = givenIntentForSessionOverview(A_SESSION_ID) + context.givenStartActivity(intent) + + vectorSettingsDevicesViewNavigator.navigateToSessionOverview(context.instance, A_SESSION_ID) + + verify { + context.instance.startActivity(intent) + } + } + + private fun givenIntentForSessionOverview(sessionId: String): Intent { + val intent = mockk<Intent>() + every { SessionOverviewActivity.newIntent(context.instance, sessionId) } returns intent + return intent + } +} diff --git a/vector/src/test/java/im/vector/app/test/fakes/FakeContext.kt b/vector/src/test/java/im/vector/app/test/fakes/FakeContext.kt index 329ac1bdae..d74ebcb678 100644 --- a/vector/src/test/java/im/vector/app/test/fakes/FakeContext.kt +++ b/vector/src/test/java/im/vector/app/test/fakes/FakeContext.kt @@ -18,11 +18,14 @@ package im.vector.app.test.fakes import android.content.ContentResolver import android.content.Context +import android.content.Intent import android.net.ConnectivityManager import android.net.Uri import android.os.ParcelFileDescriptor import io.mockk.every +import io.mockk.just import io.mockk.mockk +import io.mockk.runs import java.io.OutputStream class FakeContext( @@ -67,4 +70,8 @@ class FakeContext( connectivityManager.givenHasActiveConnection() givenService(Context.CONNECTIVITY_SERVICE, ConnectivityManager::class.java, connectivityManager.instance) } + + fun givenStartActivity(intent: Intent) { + every { instance.startActivity(intent) } just runs + } } From 3eb29b46615014e7215a526422fd334aef6206d4 Mon Sep 17 00:00:00 2001 From: Maxime NATUREL <maxime.naturel@niji.fr> Date: Tue, 30 Aug 2022 15:39:14 +0200 Subject: [PATCH 34/57] Renaming view state --- .../devices/v2/overview/SessionOverviewViewModel.kt | 10 +++++----- ...ionOverviewState.kt => SessionOverviewViewState.kt} | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) rename vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/{SessionOverviewState.kt => SessionOverviewViewState.kt} (96%) diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewModel.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewModel.kt index a95cc1a49b..f55da2819f 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewModel.kt @@ -27,15 +27,15 @@ import im.vector.app.core.platform.VectorViewModel import org.matrix.android.sdk.api.session.Session class SessionOverviewViewModel @AssistedInject constructor( - @Assisted val initialState: SessionOverviewState, + @Assisted val initialState: SessionOverviewViewState, session: Session, -) : VectorViewModel<SessionOverviewState, SessionOverviewAction, EmptyViewEvents>(initialState) { +) : VectorViewModel<SessionOverviewViewState, SessionOverviewAction, EmptyViewEvents>(initialState) { - companion object : MavericksViewModelFactory<SessionOverviewViewModel, SessionOverviewState> by hiltMavericksViewModelFactory() + companion object : MavericksViewModelFactory<SessionOverviewViewModel, SessionOverviewViewState> by hiltMavericksViewModelFactory() @AssistedFactory - interface Factory : MavericksAssistedViewModelFactory<SessionOverviewViewModel, SessionOverviewState> { - override fun create(initialState: SessionOverviewState): SessionOverviewViewModel + interface Factory : MavericksAssistedViewModelFactory<SessionOverviewViewModel, SessionOverviewViewState> { + override fun create(initialState: SessionOverviewViewState): SessionOverviewViewModel } init { diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewState.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewState.kt similarity index 96% rename from vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewState.kt rename to vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewState.kt index d91d6a82ce..e839348800 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewState.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewState.kt @@ -18,7 +18,7 @@ package im.vector.app.features.settings.devices.v2.overview import com.airbnb.mvrx.MavericksState -data class SessionOverviewState( +data class SessionOverviewViewState( val sessionId: String, val isCurrentSession: Boolean = false, ) : MavericksState { From 2a599d9760fad3af70035a5c0394bfc350ff88b0 Mon Sep 17 00:00:00 2001 From: Maxime NATUREL <maxime.naturel@niji.fr> Date: Tue, 30 Aug 2022 16:09:03 +0200 Subject: [PATCH 35/57] Small renamings/reorganization in CryptoService --- .../matrix/android/sdk/flow/FlowSession.kt | 2 +- .../sdk/internal/crypto/E2eeSanityTests.kt | 4 ++-- .../crypto/crosssigning/XSigningTest.kt | 2 +- .../internal/crypto/verification/SASTest.kt | 4 ++-- .../sdk/api/session/crypto/CryptoService.kt | 24 +++++++++---------- .../internal/crypto/DefaultCryptoService.kt | 22 ++++++++--------- .../helper/MessageInformationDataFactory.kt | 2 +- .../VectorSettingsSecurityPrivacyFragment.kt | 2 +- 8 files changed, 31 insertions(+), 31 deletions(-) diff --git a/matrix-sdk-android-flow/src/main/java/org/matrix/android/sdk/flow/FlowSession.kt b/matrix-sdk-android-flow/src/main/java/org/matrix/android/sdk/flow/FlowSession.kt index f22cfa369a..80ed311901 100644 --- a/matrix-sdk-android-flow/src/main/java/org/matrix/android/sdk/flow/FlowSession.kt +++ b/matrix-sdk-android-flow/src/main/java/org/matrix/android/sdk/flow/FlowSession.kt @@ -72,7 +72,7 @@ class FlowSession(private val session: Session) { } fun liveMyDevicesInfo(): Flow<List<DeviceInfo>> { - return session.cryptoService().getLiveMyDevicesInfo().asFlow() + return session.cryptoService().getMyDevicesInfoLive().asFlow() .startWith(session.coroutineDispatchers.io) { session.cryptoService().getMyDevicesInfo() } diff --git a/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/internal/crypto/E2eeSanityTests.kt b/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/internal/crypto/E2eeSanityTests.kt index 251c13ccbf..f883295495 100644 --- a/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/internal/crypto/E2eeSanityTests.kt +++ b/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/internal/crypto/E2eeSanityTests.kt @@ -676,8 +676,8 @@ class E2eeSanityTests : InstrumentedTest { assertEquals("Decimal code should have matched", oldCode, newCode) // Assert that devices are verified - val newDeviceFromOldPov: CryptoDeviceInfo? = aliceSession.cryptoService().getDeviceInfo(aliceSession.myUserId, aliceNewSession.sessionParams.deviceId) - val oldDeviceFromNewPov: CryptoDeviceInfo? = aliceSession.cryptoService().getDeviceInfo(aliceSession.myUserId, aliceSession.sessionParams.deviceId) + val newDeviceFromOldPov: CryptoDeviceInfo? = aliceSession.cryptoService().getCryptoDeviceInfo(aliceSession.myUserId, aliceNewSession.sessionParams.deviceId) + val oldDeviceFromNewPov: CryptoDeviceInfo? = aliceSession.cryptoService().getCryptoDeviceInfo(aliceSession.myUserId, aliceSession.sessionParams.deviceId) Assert.assertTrue("new device should be verified from old point of view", newDeviceFromOldPov!!.isVerified) Assert.assertTrue("old device should be verified from new point of view", oldDeviceFromNewPov!!.isVerified) diff --git a/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/internal/crypto/crosssigning/XSigningTest.kt b/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/internal/crypto/crosssigning/XSigningTest.kt index 8cb38ddc87..ef3fdfeeda 100644 --- a/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/internal/crypto/crosssigning/XSigningTest.kt +++ b/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/internal/crypto/crosssigning/XSigningTest.kt @@ -193,7 +193,7 @@ class XSigningTest : InstrumentedTest { fail("Bob should see the new device") } - val bobSecondDevicePOVFirstDevice = bobSession.cryptoService().getDeviceInfo(bobUserId, bobSecondDeviceId) + val bobSecondDevicePOVFirstDevice = bobSession.cryptoService().getCryptoDeviceInfo(bobUserId, bobSecondDeviceId) assertNotNull("Bob Second device should be known and persisted from first", bobSecondDevicePOVFirstDevice) // Manually mark it as trusted from first session diff --git a/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/internal/crypto/verification/SASTest.kt b/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/internal/crypto/verification/SASTest.kt index c2e74abc59..1bffbeeeaa 100644 --- a/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/internal/crypto/verification/SASTest.kt +++ b/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/internal/crypto/verification/SASTest.kt @@ -521,9 +521,9 @@ class SASTest : InstrumentedTest { testHelper.await(bobSASLatch) // Assert that devices are verified - val bobDeviceInfoFromAlicePOV: CryptoDeviceInfo? = aliceSession.cryptoService().getDeviceInfo(bobUserId, bobDeviceId) + val bobDeviceInfoFromAlicePOV: CryptoDeviceInfo? = aliceSession.cryptoService().getCryptoDeviceInfo(bobUserId, bobDeviceId) val aliceDeviceInfoFromBobPOV: CryptoDeviceInfo? = - bobSession.cryptoService().getDeviceInfo(aliceSession.myUserId, aliceSession.cryptoService().getMyDevice().deviceId) + bobSession.cryptoService().getCryptoDeviceInfo(aliceSession.myUserId, aliceSession.cryptoService().getMyDevice().deviceId) assertTrue("alice device should be verified from bob point of view", aliceDeviceInfoFromBobPOV!!.isVerified) assertTrue("bob device should be verified from alice point of view", bobDeviceInfoFromAlicePOV!!.isVerified) diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/CryptoService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/CryptoService.kt index a5e05f69e0..ee5fe20d07 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/CryptoService.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/CryptoService.kt @@ -113,7 +113,17 @@ interface CryptoService { fun setRoomBlacklistUnverifiedDevices(roomId: String) - fun getDeviceInfo(userId: String, deviceId: String?): CryptoDeviceInfo? + fun getCryptoDeviceInfo(userId: String, deviceId: String?): CryptoDeviceInfo? + + fun getCryptoDeviceInfo(deviceId: String, callback: MatrixCallback<DeviceInfo>) + + fun getCryptoDeviceInfo(userId: String): List<CryptoDeviceInfo> + + fun getLiveCryptoDeviceInfo(): LiveData<List<CryptoDeviceInfo>> + + fun getLiveCryptoDeviceInfo(userId: String): LiveData<List<CryptoDeviceInfo>> + + fun getLiveCryptoDeviceInfo(userIds: List<String>): LiveData<List<CryptoDeviceInfo>> fun requestRoomKeyForEvent(event: Event) @@ -127,9 +137,7 @@ interface CryptoService { fun getMyDevicesInfo(): List<DeviceInfo> - fun getLiveMyDevicesInfo(): LiveData<List<DeviceInfo>> - - fun getDeviceInfo(deviceId: String, callback: MatrixCallback<DeviceInfo>) + fun getMyDevicesInfoLive(): LiveData<List<DeviceInfo>> fun inboundGroupSessionsCount(onlyBackedUp: Boolean): Int @@ -156,14 +164,6 @@ interface CryptoService { fun downloadKeys(userIds: List<String>, forceDownload: Boolean, callback: MatrixCallback<MXUsersDevicesMap<CryptoDeviceInfo>>) - fun getCryptoDeviceInfo(userId: String): List<CryptoDeviceInfo> - - fun getLiveCryptoDeviceInfo(): LiveData<List<CryptoDeviceInfo>> - - fun getLiveCryptoDeviceInfo(userId: String): LiveData<List<CryptoDeviceInfo>> - - fun getLiveCryptoDeviceInfo(userIds: List<String>): LiveData<List<CryptoDeviceInfo>> - fun addNewSessionListener(newSessionListener: NewSessionListener) fun removeSessionListener(listener: NewSessionListener) diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/DefaultCryptoService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/DefaultCryptoService.kt index 35c066dea8..739f86e659 100755 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/DefaultCryptoService.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/DefaultCryptoService.kt @@ -273,7 +273,7 @@ internal class DefaultCryptoService @Inject constructor( .executeBy(taskExecutor) } - override fun getLiveMyDevicesInfo(): LiveData<List<DeviceInfo>> { + override fun getMyDevicesInfoLive(): LiveData<List<DeviceInfo>> { return cryptoStore.getLiveMyDevicesInfo() } @@ -281,15 +281,6 @@ internal class DefaultCryptoService @Inject constructor( return cryptoStore.getMyDevicesInfo() } - override fun getDeviceInfo(deviceId: String, callback: MatrixCallback<DeviceInfo>) { - getDeviceInfoTask - .configureWith(GetDeviceInfoTask.Params(deviceId)) { - this.executionThread = TaskThread.CRYPTO - this.callback = callback - } - .executeBy(taskExecutor) - } - override fun inboundGroupSessionsCount(onlyBackedUp: Boolean): Int { return cryptoStore.inboundGroupSessionsCount(onlyBackedUp) } @@ -513,7 +504,7 @@ internal class DefaultCryptoService @Inject constructor( * @param userId the user id * @param deviceId the device id */ - override fun getDeviceInfo(userId: String, deviceId: String?): CryptoDeviceInfo? { + override fun getCryptoDeviceInfo(userId: String, deviceId: String?): CryptoDeviceInfo? { return if (userId.isNotEmpty() && !deviceId.isNullOrEmpty()) { cryptoStore.getUserDevice(userId, deviceId) } else { @@ -521,6 +512,15 @@ internal class DefaultCryptoService @Inject constructor( } } + override fun getCryptoDeviceInfo(deviceId: String, callback: MatrixCallback<DeviceInfo>) { + getDeviceInfoTask + .configureWith(GetDeviceInfoTask.Params(deviceId)) { + this.executionThread = TaskThread.CRYPTO + this.callback = callback + } + .executeBy(taskExecutor) + } + override fun getCryptoDeviceInfo(userId: String): List<CryptoDeviceInfo> { return cryptoStore.getUserDeviceList(userId).orEmpty() } diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/helper/MessageInformationDataFactory.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/helper/MessageInformationDataFactory.kt index 6d94837f88..b711bf37bd 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/helper/MessageInformationDataFactory.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/helper/MessageInformationDataFactory.kt @@ -162,7 +162,7 @@ class MessageInformationDataFactory @Inject constructor( .toModel<EncryptedEventContent>() ?.deviceId ?.let { deviceId -> - session.cryptoService().getDeviceInfo(event.root.senderId ?: "", deviceId) + session.cryptoService().getCryptoDeviceInfo(event.root.senderId ?: "", deviceId) } when { sendingDevice == null -> { diff --git a/vector/src/main/java/im/vector/app/features/settings/VectorSettingsSecurityPrivacyFragment.kt b/vector/src/main/java/im/vector/app/features/settings/VectorSettingsSecurityPrivacyFragment.kt index 2b4d376f55..ecb1779a4a 100644 --- a/vector/src/main/java/im/vector/app/features/settings/VectorSettingsSecurityPrivacyFragment.kt +++ b/vector/src/main/java/im/vector/app/features/settings/VectorSettingsSecurityPrivacyFragment.kt @@ -585,7 +585,7 @@ class VectorSettingsSecurityPrivacyFragment : } // crypto section: device key (fingerprint) - val deviceInfo = session.cryptoService().getDeviceInfo(userId, deviceId) + val deviceInfo = session.cryptoService().getCryptoDeviceInfo(userId, deviceId) val fingerprint = deviceInfo?.fingerprint() if (fingerprint?.isNotEmpty() == true) { From f74a0b090103c47b084ac6a2550d432309744f64 Mon Sep 17 00:00:00 2001 From: Maxime NATUREL <maxime.naturel@niji.fr> Date: Tue, 30 Aug 2022 16:32:32 +0200 Subject: [PATCH 36/57] Adding a method to retrieve livedata of device info for a given device id --- .../sdk/api/session/crypto/CryptoService.kt | 3 ++ .../internal/crypto/DefaultCryptoService.kt | 5 +++ .../internal/crypto/store/IMXCryptoStore.kt | 2 ++ .../crypto/store/db/RealmCryptoStore.kt | 26 +++++++++----- .../MyDeviceLastSeenInfoEntityMapper.kt | 34 +++++++++++++++++++ 5 files changed, 62 insertions(+), 8 deletions(-) create mode 100644 matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/mapper/MyDeviceLastSeenInfoEntityMapper.kt diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/CryptoService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/CryptoService.kt index ee5fe20d07..4f6a1fa02f 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/CryptoService.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/CryptoService.kt @@ -40,6 +40,7 @@ import org.matrix.android.sdk.api.session.crypto.verification.VerificationServic import org.matrix.android.sdk.api.session.events.model.Content import org.matrix.android.sdk.api.session.events.model.Event import org.matrix.android.sdk.api.session.events.model.content.RoomKeyWithHeldContent +import org.matrix.android.sdk.api.util.Optional import org.matrix.android.sdk.internal.crypto.model.SessionInfo interface CryptoService { @@ -139,6 +140,8 @@ interface CryptoService { fun getMyDevicesInfoLive(): LiveData<List<DeviceInfo>> + fun getMyDevicesInfoLive(deviceId: String): LiveData<Optional<DeviceInfo>> + fun inboundGroupSessionsCount(onlyBackedUp: Boolean): Int fun isRoomEncrypted(roomId: String): Boolean diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/DefaultCryptoService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/DefaultCryptoService.kt index 739f86e659..39866163ce 100755 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/DefaultCryptoService.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/DefaultCryptoService.kt @@ -73,6 +73,7 @@ import org.matrix.android.sdk.api.session.room.model.RoomHistoryVisibilityConten import org.matrix.android.sdk.api.session.room.model.RoomMemberContent import org.matrix.android.sdk.api.session.room.model.shouldShareHistory import org.matrix.android.sdk.api.session.sync.model.SyncResponse +import org.matrix.android.sdk.api.util.Optional import org.matrix.android.sdk.internal.crypto.actions.MegolmSessionDataImporter import org.matrix.android.sdk.internal.crypto.actions.SetDeviceVerificationAction import org.matrix.android.sdk.internal.crypto.algorithms.IMXEncrypting @@ -277,6 +278,10 @@ internal class DefaultCryptoService @Inject constructor( return cryptoStore.getLiveMyDevicesInfo() } + override fun getMyDevicesInfoLive(deviceId: String): LiveData<Optional<DeviceInfo>> { + return cryptoStore.getLiveMyDevicesInfo(deviceId) + } + override fun getMyDevicesInfo(): List<DeviceInfo> { return cryptoStore.getMyDevicesInfo() } diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/IMXCryptoStore.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/IMXCryptoStore.kt index 0413fc730c..3aa4e2f764 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/IMXCryptoStore.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/IMXCryptoStore.kt @@ -242,6 +242,8 @@ internal interface IMXCryptoStore { fun getLiveMyDevicesInfo(): LiveData<List<DeviceInfo>> + fun getLiveMyDevicesInfo(deviceId: String): LiveData<Optional<DeviceInfo>> + fun saveMyDevicesInfo(info: List<DeviceInfo>) /** diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/RealmCryptoStore.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/RealmCryptoStore.kt index f5468634cb..736d4d495c 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/RealmCryptoStore.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/RealmCryptoStore.kt @@ -55,6 +55,7 @@ import org.matrix.android.sdk.internal.crypto.model.OlmSessionWrapper import org.matrix.android.sdk.internal.crypto.model.OutboundGroupSessionWrapper import org.matrix.android.sdk.internal.crypto.store.IMXCryptoStore import org.matrix.android.sdk.internal.crypto.store.db.mapper.CrossSigningKeysMapper +import org.matrix.android.sdk.internal.crypto.store.db.mapper.MyDeviceLastSeenInfoEntityMapper import org.matrix.android.sdk.internal.crypto.store.db.model.AuditTrailEntity import org.matrix.android.sdk.internal.crypto.store.db.model.AuditTrailEntityFields import org.matrix.android.sdk.internal.crypto.store.db.model.AuditTrailMapper @@ -68,6 +69,7 @@ import org.matrix.android.sdk.internal.crypto.store.db.model.DeviceInfoEntity import org.matrix.android.sdk.internal.crypto.store.db.model.DeviceInfoEntityFields import org.matrix.android.sdk.internal.crypto.store.db.model.KeysBackupDataEntity import org.matrix.android.sdk.internal.crypto.store.db.model.MyDeviceLastSeenInfoEntity +import org.matrix.android.sdk.internal.crypto.store.db.model.MyDeviceLastSeenInfoEntityFields import org.matrix.android.sdk.internal.crypto.store.db.model.OlmInboundGroupSessionEntity import org.matrix.android.sdk.internal.crypto.store.db.model.OlmInboundGroupSessionEntityFields import org.matrix.android.sdk.internal.crypto.store.db.model.OlmSessionEntity @@ -112,6 +114,7 @@ internal class RealmCryptoStore @Inject constructor( @UserId private val userId: String, @DeviceId private val deviceId: String?, private val clock: Clock, + private val myDeviceLastSeenInfoEntityMapper: MyDeviceLastSeenInfoEntityMapper, ) : IMXCryptoStore { /* ========================================================================================== @@ -596,17 +599,24 @@ internal class RealmCryptoStore @Inject constructor( { realm: Realm -> realm.where<MyDeviceLastSeenInfoEntity>() }, - { entity -> - DeviceInfo( - deviceId = entity.deviceId, - lastSeenIp = entity.lastSeenIp, - lastSeenTs = entity.lastSeenTs, - displayName = entity.displayName - ) - } + { entity -> myDeviceLastSeenInfoEntityMapper.map(entity) } ) } + override fun getLiveMyDevicesInfo(deviceId: String): LiveData<Optional<DeviceInfo>> { + val liveData = monarchy.findAllMappedWithChanges( + { realm: Realm -> + realm.where<MyDeviceLastSeenInfoEntity>() + .equalTo(MyDeviceLastSeenInfoEntityFields.DEVICE_ID, deviceId) + }, + { entity -> myDeviceLastSeenInfoEntityMapper.map(entity) } + ) + + return Transformations.map(liveData) { + it.firstOrNull().toOptional() + } + } + override fun saveMyDevicesInfo(info: List<DeviceInfo>) { val entities = info.map { MyDeviceLastSeenInfoEntity( diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/mapper/MyDeviceLastSeenInfoEntityMapper.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/mapper/MyDeviceLastSeenInfoEntityMapper.kt new file mode 100644 index 0000000000..ed44b0765a --- /dev/null +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/mapper/MyDeviceLastSeenInfoEntityMapper.kt @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2022 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.matrix.android.sdk.internal.crypto.store.db.mapper + +import org.matrix.android.sdk.api.session.crypto.model.DeviceInfo +import org.matrix.android.sdk.internal.crypto.store.db.model.MyDeviceLastSeenInfoEntity +import javax.inject.Inject + +// TODO add unit tests +internal class MyDeviceLastSeenInfoEntityMapper @Inject constructor() { + + fun map(entity: MyDeviceLastSeenInfoEntity): DeviceInfo { + return DeviceInfo( + deviceId = entity.deviceId, + lastSeenIp = entity.lastSeenIp, + lastSeenTs = entity.lastSeenTs, + displayName = entity.displayName + ) + } +} From e542dc4aaccc36552830d9104b975828f57bac3d Mon Sep 17 00:00:00 2001 From: Maxime NATUREL <maxime.naturel@niji.fr> Date: Tue, 30 Aug 2022 16:47:34 +0200 Subject: [PATCH 37/57] Adding a method to retrieve livedata of crypto device info for a given device id --- .../matrix/android/sdk/api/session/crypto/CryptoService.kt | 2 ++ .../android/sdk/internal/crypto/DefaultCryptoService.kt | 4 ++++ .../android/sdk/internal/crypto/store/IMXCryptoStore.kt | 2 ++ .../sdk/internal/crypto/store/db/RealmCryptoStore.kt | 6 ++++++ 4 files changed, 14 insertions(+) diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/CryptoService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/CryptoService.kt index 4f6a1fa02f..e0e662c789 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/CryptoService.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/CryptoService.kt @@ -122,6 +122,8 @@ interface CryptoService { fun getLiveCryptoDeviceInfo(): LiveData<List<CryptoDeviceInfo>> + fun getLiveCryptoDeviceInfoWithId(deviceId: String): LiveData<Optional<CryptoDeviceInfo>> + fun getLiveCryptoDeviceInfo(userId: String): LiveData<List<CryptoDeviceInfo>> fun getLiveCryptoDeviceInfo(userIds: List<String>): LiveData<List<CryptoDeviceInfo>> diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/DefaultCryptoService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/DefaultCryptoService.kt index 39866163ce..8dd7c309c6 100755 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/DefaultCryptoService.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/DefaultCryptoService.kt @@ -534,6 +534,10 @@ internal class DefaultCryptoService @Inject constructor( return cryptoStore.getLiveDeviceList() } + override fun getLiveCryptoDeviceInfoWithId(deviceId: String): LiveData<Optional<CryptoDeviceInfo>> { + return cryptoStore.getLiveDeviceWithId(deviceId) + } + override fun getLiveCryptoDeviceInfo(userId: String): LiveData<List<CryptoDeviceInfo>> { return cryptoStore.getLiveDeviceList(userId) } diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/IMXCryptoStore.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/IMXCryptoStore.kt index 3aa4e2f764..56eba25249 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/IMXCryptoStore.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/IMXCryptoStore.kt @@ -238,6 +238,8 @@ internal interface IMXCryptoStore { // TODO temp fun getLiveDeviceList(): LiveData<List<CryptoDeviceInfo>> + fun getLiveDeviceWithId(deviceId: String): LiveData<Optional<CryptoDeviceInfo>> + fun getMyDevicesInfo(): List<DeviceInfo> fun getLiveMyDevicesInfo(): LiveData<List<DeviceInfo>> diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/RealmCryptoStore.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/RealmCryptoStore.kt index 736d4d495c..3b8fa4cacd 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/RealmCryptoStore.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/RealmCryptoStore.kt @@ -581,6 +581,12 @@ internal class RealmCryptoStore @Inject constructor( } } + override fun getLiveDeviceWithId(deviceId: String): LiveData<Optional<CryptoDeviceInfo>> { + return Transformations.map(getLiveDeviceList()) { devices -> + devices.firstOrNull { it.deviceId == deviceId }.toOptional() + } + } + override fun getMyDevicesInfo(): List<DeviceInfo> { return monarchy.fetchAllCopiedSync { it.where<MyDeviceLastSeenInfoEntity>() From 68f106efaca22254596fee23f78c052a06b3e285 Mon Sep 17 00:00:00 2001 From: Maxime NATUREL <maxime.naturel@niji.fr> Date: Wed, 31 Aug 2022 10:09:40 +0200 Subject: [PATCH 38/57] Adding use case to get full device info for a given device id --- .../v2/overview/GetDeviceFullInfoUseCase.kt | 54 +++++++++++++++++++ .../v2/overview/SessionOverviewViewModel.kt | 21 ++++++-- 2 files changed, 71 insertions(+), 4 deletions(-) create mode 100644 vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/GetDeviceFullInfoUseCase.kt diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/GetDeviceFullInfoUseCase.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/GetDeviceFullInfoUseCase.kt new file mode 100644 index 0000000000..b7d8efb59a --- /dev/null +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/GetDeviceFullInfoUseCase.kt @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2022 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.app.features.settings.devices.v2.overview + +import androidx.lifecycle.asFlow +import im.vector.app.core.di.ActiveSessionHolder +import im.vector.app.features.settings.devices.DeviceFullInfo +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.emptyFlow +import org.matrix.android.sdk.api.util.Optional +import org.matrix.android.sdk.api.util.toOptional +import javax.inject.Inject + +// TODO add unit tests +class GetDeviceFullInfoUseCase @Inject constructor( + private val activeSessionHolder: ActiveSessionHolder, +) { + + fun execute(deviceId: String): Flow<Optional<DeviceFullInfo>> { + return activeSessionHolder.getSafeActiveSession()?.let { session -> + combine( + session.cryptoService().getMyDevicesInfoLive(deviceId).asFlow(), + session.cryptoService().getLiveCryptoDeviceInfoWithId(deviceId).asFlow() + ) { deviceInfo, cryptoDeviceInfo -> + val info = deviceInfo.getOrNull() + val cryptoInfo = cryptoDeviceInfo.getOrNull() + val fullInfo = if (info != null && cryptoInfo != null) { + DeviceFullInfo( + deviceInfo = info, + cryptoDeviceInfo = cryptoInfo + ) + } else { + null + } + fullInfo.toOptional() + } + } ?: emptyFlow() + } +} diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewModel.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewModel.kt index f55da2819f..84c15301aa 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewModel.kt @@ -17,6 +17,7 @@ package im.vector.app.features.settings.devices.v2.overview import com.airbnb.mvrx.MavericksViewModelFactory +import com.airbnb.mvrx.Success import dagger.assisted.Assisted import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject @@ -24,11 +25,16 @@ import im.vector.app.core.di.MavericksAssistedViewModelFactory import im.vector.app.core.di.hiltMavericksViewModelFactory import im.vector.app.core.platform.EmptyViewEvents import im.vector.app.core.platform.VectorViewModel +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.flow.mapNotNull +import kotlinx.coroutines.flow.onEach import org.matrix.android.sdk.api.session.Session +// TODO add unit tests class SessionOverviewViewModel @AssistedInject constructor( @Assisted val initialState: SessionOverviewViewState, session: Session, + private val getDeviceFullInfoUseCase: GetDeviceFullInfoUseCase, ) : VectorViewModel<SessionOverviewViewState, SessionOverviewAction, EmptyViewEvents>(initialState) { companion object : MavericksViewModelFactory<SessionOverviewViewModel, SessionOverviewViewState> by hiltMavericksViewModelFactory() @@ -39,12 +45,19 @@ class SessionOverviewViewModel @AssistedInject constructor( } init { - val currentSessionId = session.sessionParams.deviceId.orEmpty() + val currentDeviceId = session.sessionParams.deviceId.orEmpty() setState { - copy( - isCurrentSession = sessionId.isNotEmpty() && sessionId == currentSessionId - ) + copy(isCurrentSession = sessionId.isNotEmpty() && sessionId == currentDeviceId) } + + observeSessionInfo(currentDeviceId) + } + + private fun observeSessionInfo(deviceId: String) { + getDeviceFullInfoUseCase.execute(deviceId) + .mapNotNull { it.getOrNull() } + .onEach { setState { copy(deviceInfo = Success(it)) } } + .launchIn(viewModelScope) } override fun handle(action: SessionOverviewAction) { From 0c3310dd162ff5e23c35499a089bb645834cf679 Mon Sep 17 00:00:00 2001 From: Maxime NATUREL <maxime.naturel@niji.fr> Date: Wed, 31 Aug 2022 11:55:58 +0200 Subject: [PATCH 39/57] Adding unit tests for the new use case --- .../v2/overview/GetDeviceFullInfoUseCase.kt | 1 - .../GetLiveLocationShareSummaryUseCaseTest.kt | 7 +- .../GetListOfUserLiveLocationUseCaseTest.kt | 4 +- .../overview/GetDeviceFullInfoUseCaseTest.kt | 99 +++++++++++++++++++ .../app/test/TestCoroutineDispatchers.kt | 2 +- .../app/test/fakes/FakeActiveSessionHolder.kt | 4 + .../app/test/fakes/FakeCryptoService.kt | 8 ++ .../test/fakes/FakeFlowLiveDataConversions.kt | 4 +- 8 files changed, 119 insertions(+), 10 deletions(-) create mode 100644 vector/src/test/java/im/vector/app/features/settings/devices/v2/overview/GetDeviceFullInfoUseCaseTest.kt diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/GetDeviceFullInfoUseCase.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/GetDeviceFullInfoUseCase.kt index b7d8efb59a..d20ca17471 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/GetDeviceFullInfoUseCase.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/GetDeviceFullInfoUseCase.kt @@ -26,7 +26,6 @@ import org.matrix.android.sdk.api.util.Optional import org.matrix.android.sdk.api.util.toOptional import javax.inject.Inject -// TODO add unit tests class GetDeviceFullInfoUseCase @Inject constructor( private val activeSessionHolder: ActiveSessionHolder, ) { diff --git a/vector/src/test/java/im/vector/app/features/location/live/GetLiveLocationShareSummaryUseCaseTest.kt b/vector/src/test/java/im/vector/app/features/location/live/GetLiveLocationShareSummaryUseCaseTest.kt index ed1bcebf16..89966b5317 100644 --- a/vector/src/test/java/im/vector/app/features/location/live/GetLiveLocationShareSummaryUseCaseTest.kt +++ b/vector/src/test/java/im/vector/app/features/location/live/GetLiveLocationShareSummaryUseCaseTest.kt @@ -18,7 +18,7 @@ package im.vector.app.features.location.live import im.vector.app.test.fakes.FakeFlowLiveDataConversions import im.vector.app.test.fakes.FakeSession -import im.vector.app.test.fakes.givenAsFlowReturns +import im.vector.app.test.fakes.givenAsFlow import io.mockk.unmockkAll import kotlinx.coroutines.flow.first import kotlinx.coroutines.test.runTest @@ -28,7 +28,6 @@ import org.junit.Before import org.junit.Test import org.matrix.android.sdk.api.session.room.model.livelocation.LiveLocationShareAggregatedSummary import org.matrix.android.sdk.api.session.room.model.message.MessageBeaconLocationDataContent -import org.matrix.android.sdk.api.util.Optional private const val A_ROOM_ID = "room_id" private const val AN_EVENT_ID = "event_id" @@ -64,7 +63,7 @@ class GetLiveLocationShareSummaryUseCaseTest { .getRoom(A_ROOM_ID) .locationSharingService() .givenLiveLocationShareSummaryReturns(AN_EVENT_ID, summary) - .givenAsFlowReturns(Optional(summary)) + .givenAsFlow() val result = getLiveLocationShareSummaryUseCase.execute(A_ROOM_ID, AN_EVENT_ID).first() @@ -77,7 +76,7 @@ class GetLiveLocationShareSummaryUseCaseTest { .getRoom(A_ROOM_ID) .locationSharingService() .givenLiveLocationShareSummaryReturns(AN_EVENT_ID, null) - .givenAsFlowReturns(Optional(null)) + .givenAsFlow() val result = getLiveLocationShareSummaryUseCase.execute(A_ROOM_ID, AN_EVENT_ID).first() diff --git a/vector/src/test/java/im/vector/app/features/location/live/map/GetListOfUserLiveLocationUseCaseTest.kt b/vector/src/test/java/im/vector/app/features/location/live/map/GetListOfUserLiveLocationUseCaseTest.kt index 420b8e6a06..6d24858915 100644 --- a/vector/src/test/java/im/vector/app/features/location/live/map/GetListOfUserLiveLocationUseCaseTest.kt +++ b/vector/src/test/java/im/vector/app/features/location/live/map/GetListOfUserLiveLocationUseCaseTest.kt @@ -19,7 +19,7 @@ package im.vector.app.features.location.live.map import im.vector.app.features.location.LocationData import im.vector.app.test.fakes.FakeFlowLiveDataConversions import im.vector.app.test.fakes.FakeSession -import im.vector.app.test.fakes.givenAsFlowReturns +import im.vector.app.test.fakes.givenAsFlow import io.mockk.coEvery import io.mockk.mockk import io.mockk.unmockkAll @@ -81,7 +81,7 @@ class GetListOfUserLiveLocationUseCaseTest { .getRoom(A_ROOM_ID) .locationSharingService() .givenRunningLiveLocationShareSummariesReturns(summaries) - .givenAsFlowReturns(summaries) + .givenAsFlow() val viewState1 = UserLiveLocationViewState( matrixItem = MatrixItem.UserItem(id = "@userId1:matrix.org", displayName = "User 1", avatarUrl = ""), diff --git a/vector/src/test/java/im/vector/app/features/settings/devices/v2/overview/GetDeviceFullInfoUseCaseTest.kt b/vector/src/test/java/im/vector/app/features/settings/devices/v2/overview/GetDeviceFullInfoUseCaseTest.kt new file mode 100644 index 0000000000..32d7b6edfe --- /dev/null +++ b/vector/src/test/java/im/vector/app/features/settings/devices/v2/overview/GetDeviceFullInfoUseCaseTest.kt @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2022 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.app.features.settings.devices.v2.overview + +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.asFlow +import im.vector.app.features.settings.devices.DeviceFullInfo +import im.vector.app.test.fakes.FakeActiveSessionHolder +import im.vector.app.test.fakes.FakeFlowLiveDataConversions +import im.vector.app.test.fakes.givenAsFlow +import io.mockk.unmockkAll +import io.mockk.verify +import kotlinx.coroutines.flow.firstOrNull +import kotlinx.coroutines.test.runTest +import org.amshove.kluent.shouldBeEqualTo +import org.junit.After +import org.junit.Before +import org.junit.Test +import org.matrix.android.sdk.api.session.crypto.model.CryptoDeviceInfo +import org.matrix.android.sdk.api.session.crypto.model.DeviceInfo +import org.matrix.android.sdk.api.util.Optional + +private const val A_DEVICE_ID = "device-id" + +class GetDeviceFullInfoUseCaseTest { + + private val fakeActiveSessionHolder = FakeActiveSessionHolder() + private val fakeFlowLiveDataConversions = FakeFlowLiveDataConversions() + + private val getDeviceFullInfoUseCase = GetDeviceFullInfoUseCase( + activeSessionHolder = fakeActiveSessionHolder.instance + ) + + @Before + fun setUp() { + fakeFlowLiveDataConversions.setup() + } + + @After + fun tearDown() { + unmockkAll() + } + + @Test + fun `given an active session and info for device when getting device info then the result is correct`() = runTest { + val deviceInfo = DeviceInfo() + fakeActiveSessionHolder.fakeSession.fakeCryptoService.myDevicesInfoWithIdLiveData = MutableLiveData(Optional(deviceInfo)) + fakeActiveSessionHolder.fakeSession.fakeCryptoService.myDevicesInfoWithIdLiveData.givenAsFlow() + val cryptoDeviceInfo = CryptoDeviceInfo(deviceId = A_DEVICE_ID, userId = "") + fakeActiveSessionHolder.fakeSession.fakeCryptoService.cryptoDeviceInfoWithIdLiveData = MutableLiveData(Optional(cryptoDeviceInfo)) + fakeActiveSessionHolder.fakeSession.fakeCryptoService.cryptoDeviceInfoWithIdLiveData.givenAsFlow() + + val deviceFullInfo = getDeviceFullInfoUseCase.execute(A_DEVICE_ID).firstOrNull() + + deviceFullInfo shouldBeEqualTo Optional(DeviceFullInfo(deviceInfo = deviceInfo, cryptoDeviceInfo = cryptoDeviceInfo)) + verify { fakeActiveSessionHolder.instance.getSafeActiveSession() } + verify { fakeActiveSessionHolder.fakeSession.fakeCryptoService.getMyDevicesInfoLive(A_DEVICE_ID).asFlow() } + verify { fakeActiveSessionHolder.fakeSession.fakeCryptoService.getLiveCryptoDeviceInfoWithId(A_DEVICE_ID).asFlow() } + } + + @Test + fun `given an active session and no info for device when getting device info then the result is null`() = runTest { + fakeActiveSessionHolder.fakeSession.fakeCryptoService.myDevicesInfoWithIdLiveData = MutableLiveData(Optional(null)) + fakeActiveSessionHolder.fakeSession.fakeCryptoService.myDevicesInfoWithIdLiveData.givenAsFlow() + fakeActiveSessionHolder.fakeSession.fakeCryptoService.cryptoDeviceInfoWithIdLiveData = MutableLiveData(Optional(null)) + fakeActiveSessionHolder.fakeSession.fakeCryptoService.cryptoDeviceInfoWithIdLiveData.givenAsFlow() + + val deviceFullInfo = getDeviceFullInfoUseCase.execute(A_DEVICE_ID).firstOrNull() + + deviceFullInfo shouldBeEqualTo Optional(null) + verify { fakeActiveSessionHolder.instance.getSafeActiveSession() } + verify { fakeActiveSessionHolder.fakeSession.fakeCryptoService.getMyDevicesInfoLive(A_DEVICE_ID).asFlow() } + verify { fakeActiveSessionHolder.fakeSession.fakeCryptoService.getLiveCryptoDeviceInfoWithId(A_DEVICE_ID).asFlow() } + } + + @Test + fun `given no active session when getting device info then the result is empty`() = runTest { + fakeActiveSessionHolder.givenGetSafeActiveSessionReturns(null) + + val deviceFullInfo = getDeviceFullInfoUseCase.execute(A_DEVICE_ID).firstOrNull() + + deviceFullInfo shouldBeEqualTo null + verify { fakeActiveSessionHolder.instance.getSafeActiveSession() } + } +} diff --git a/vector/src/test/java/im/vector/app/test/TestCoroutineDispatchers.kt b/vector/src/test/java/im/vector/app/test/TestCoroutineDispatchers.kt index fb3c1bb70a..c4f4c2a19a 100644 --- a/vector/src/test/java/im/vector/app/test/TestCoroutineDispatchers.kt +++ b/vector/src/test/java/im/vector/app/test/TestCoroutineDispatchers.kt @@ -19,7 +19,7 @@ package im.vector.app.test import kotlinx.coroutines.test.UnconfinedTestDispatcher import org.matrix.android.sdk.api.MatrixCoroutineDispatchers -private val testDispatcher = UnconfinedTestDispatcher() +internal val testDispatcher = UnconfinedTestDispatcher() internal val testCoroutineDispatchers = MatrixCoroutineDispatchers( io = testDispatcher, diff --git a/vector/src/test/java/im/vector/app/test/fakes/FakeActiveSessionHolder.kt b/vector/src/test/java/im/vector/app/test/fakes/FakeActiveSessionHolder.kt index 3065c18c30..bfc36ef06d 100644 --- a/vector/src/test/java/im/vector/app/test/fakes/FakeActiveSessionHolder.kt +++ b/vector/src/test/java/im/vector/app/test/fakes/FakeActiveSessionHolder.kt @@ -33,4 +33,8 @@ class FakeActiveSessionHolder( fun expectSetsActiveSession(session: Session) { justRun { instance.setActiveSession(session) } } + + fun givenGetSafeActiveSessionReturns(session: Session?) { + every { instance.getSafeActiveSession() } returns session + } } diff --git a/vector/src/test/java/im/vector/app/test/fakes/FakeCryptoService.kt b/vector/src/test/java/im/vector/app/test/fakes/FakeCryptoService.kt index ed571fc2f2..2c31933464 100644 --- a/vector/src/test/java/im/vector/app/test/fakes/FakeCryptoService.kt +++ b/vector/src/test/java/im/vector/app/test/fakes/FakeCryptoService.kt @@ -20,11 +20,15 @@ import androidx.lifecycle.MutableLiveData import io.mockk.mockk import org.matrix.android.sdk.api.session.crypto.CryptoService import org.matrix.android.sdk.api.session.crypto.model.CryptoDeviceInfo +import org.matrix.android.sdk.api.session.crypto.model.DeviceInfo +import org.matrix.android.sdk.api.util.Optional class FakeCryptoService : CryptoService by mockk() { var roomKeysExport = ByteArray(size = 1) var cryptoDeviceInfos = mutableMapOf<String, CryptoDeviceInfo>() + var cryptoDeviceInfoWithIdLiveData: MutableLiveData<Optional<CryptoDeviceInfo>> = MutableLiveData() + var myDevicesInfoWithIdLiveData: MutableLiveData<Optional<DeviceInfo>> = MutableLiveData() override suspend fun exportRoomKeys(password: String) = roomKeysExport @@ -35,4 +39,8 @@ class FakeCryptoService : CryptoService by mockk() { override fun getLiveCryptoDeviceInfo(userIds: List<String>) = MutableLiveData( cryptoDeviceInfos.filterKeys { userIds.contains(it) }.values.toList() ) + + override fun getLiveCryptoDeviceInfoWithId(deviceId: String) = cryptoDeviceInfoWithIdLiveData + + override fun getMyDevicesInfoLive(deviceId: String) = myDevicesInfoWithIdLiveData } diff --git a/vector/src/test/java/im/vector/app/test/fakes/FakeFlowLiveDataConversions.kt b/vector/src/test/java/im/vector/app/test/fakes/FakeFlowLiveDataConversions.kt index 9abbcc174d..956a86f32e 100644 --- a/vector/src/test/java/im/vector/app/test/fakes/FakeFlowLiveDataConversions.kt +++ b/vector/src/test/java/im/vector/app/test/fakes/FakeFlowLiveDataConversions.kt @@ -28,6 +28,6 @@ class FakeFlowLiveDataConversions { } } -fun <T> LiveData<T>.givenAsFlowReturns(value: T) { - every { asFlow() } returns flowOf(value) +fun <T> LiveData<T>.givenAsFlow() { + every { asFlow() } returns flowOf(value!!) } From 611749c08f6f9e5a849e9c93a8571481fa2c71c0 Mon Sep 17 00:00:00 2001 From: Maxime NATUREL <maxime.naturel@niji.fr> Date: Wed, 31 Aug 2022 14:12:16 +0200 Subject: [PATCH 40/57] Adding unit tests for mapper --- .../MyDeviceLastSeenInfoEntityMapper.kt | 1 - .../MyDeviceLastSeenInfoEntityMapperTest.kt | 52 +++++++++++++++++++ 2 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 matrix-sdk-android/src/test/java/org/matrix/android/sdk/internal/crypto/store/db/mapper/MyDeviceLastSeenInfoEntityMapperTest.kt diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/mapper/MyDeviceLastSeenInfoEntityMapper.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/mapper/MyDeviceLastSeenInfoEntityMapper.kt index ed44b0765a..76e3171f4d 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/mapper/MyDeviceLastSeenInfoEntityMapper.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/mapper/MyDeviceLastSeenInfoEntityMapper.kt @@ -20,7 +20,6 @@ import org.matrix.android.sdk.api.session.crypto.model.DeviceInfo import org.matrix.android.sdk.internal.crypto.store.db.model.MyDeviceLastSeenInfoEntity import javax.inject.Inject -// TODO add unit tests internal class MyDeviceLastSeenInfoEntityMapper @Inject constructor() { fun map(entity: MyDeviceLastSeenInfoEntity): DeviceInfo { diff --git a/matrix-sdk-android/src/test/java/org/matrix/android/sdk/internal/crypto/store/db/mapper/MyDeviceLastSeenInfoEntityMapperTest.kt b/matrix-sdk-android/src/test/java/org/matrix/android/sdk/internal/crypto/store/db/mapper/MyDeviceLastSeenInfoEntityMapperTest.kt new file mode 100644 index 0000000000..e706fd6622 --- /dev/null +++ b/matrix-sdk-android/src/test/java/org/matrix/android/sdk/internal/crypto/store/db/mapper/MyDeviceLastSeenInfoEntityMapperTest.kt @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2022 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.matrix.android.sdk.internal.crypto.store.db.mapper + +import org.amshove.kluent.shouldBeEqualTo +import org.junit.Test +import org.matrix.android.sdk.api.session.crypto.model.DeviceInfo +import org.matrix.android.sdk.internal.crypto.store.db.model.MyDeviceLastSeenInfoEntity + +private const val A_DEVICE_ID = "device-id" +private const val AN_IP_ADDRESS = "ip-address" +private const val A_TIMESTAMP = 123L +private const val A_DISPLAY_NAME = "display-name" + +class MyDeviceLastSeenInfoEntityMapperTest { + + private val myDeviceLastSeenInfoEntityMapper = MyDeviceLastSeenInfoEntityMapper() + + @Test + fun `given an entity when mapping to model then all fields are correctly mapped`() { + val entity = MyDeviceLastSeenInfoEntity( + deviceId = A_DEVICE_ID, + lastSeenIp = AN_IP_ADDRESS, + lastSeenTs = A_TIMESTAMP, + displayName = A_DISPLAY_NAME + ) + val expectedDeviceInfo = DeviceInfo( + deviceId = A_DEVICE_ID, + lastSeenIp = AN_IP_ADDRESS, + lastSeenTs = A_TIMESTAMP, + displayName = A_DISPLAY_NAME + ) + + val deviceInfo = myDeviceLastSeenInfoEntityMapper.map(entity) + + deviceInfo shouldBeEqualTo expectedDeviceInfo + } +} From b995f798f993612daeb3f3d827e13de85b78aa17 Mon Sep 17 00:00:00 2001 From: Maxime NATUREL <maxime.naturel@niji.fr> Date: Wed, 31 Aug 2022 14:44:01 +0200 Subject: [PATCH 41/57] Adding unit tests for viewModel --- .../v2/overview/SessionOverviewViewModel.kt | 1 - .../v2/overview/SessionOverviewViewState.kt | 4 + .../overview/SessionOverviewViewModelTest.kt | 80 +++++++++++++++++++ .../im/vector/app/test/fakes/FakeSession.kt | 5 ++ 4 files changed, 89 insertions(+), 1 deletion(-) create mode 100644 vector/src/test/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewModelTest.kt diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewModel.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewModel.kt index 84c15301aa..9c40480270 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewModel.kt @@ -30,7 +30,6 @@ import kotlinx.coroutines.flow.mapNotNull import kotlinx.coroutines.flow.onEach import org.matrix.android.sdk.api.session.Session -// TODO add unit tests class SessionOverviewViewModel @AssistedInject constructor( @Assisted val initialState: SessionOverviewViewState, session: Session, diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewState.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewState.kt index e839348800..8fa19a6eee 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewState.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewState.kt @@ -16,11 +16,15 @@ package im.vector.app.features.settings.devices.v2.overview +import com.airbnb.mvrx.Async import com.airbnb.mvrx.MavericksState +import com.airbnb.mvrx.Uninitialized +import im.vector.app.features.settings.devices.DeviceFullInfo data class SessionOverviewViewState( val sessionId: String, val isCurrentSession: Boolean = false, + val deviceInfo: Async<DeviceFullInfo> = Uninitialized, ) : MavericksState { constructor(args: SessionOverviewArgs) : this( sessionId = args.sessionId diff --git a/vector/src/test/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewModelTest.kt b/vector/src/test/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewModelTest.kt new file mode 100644 index 0000000000..f15bc0860c --- /dev/null +++ b/vector/src/test/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewModelTest.kt @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2022 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.app.features.settings.devices.v2.overview + +import com.airbnb.mvrx.Success +import com.airbnb.mvrx.test.MvRxTestRule +import im.vector.app.features.settings.devices.DeviceFullInfo +import im.vector.app.test.fakes.FakeSession +import im.vector.app.test.test +import io.mockk.every +import io.mockk.mockk +import io.mockk.verify +import kotlinx.coroutines.flow.flowOf +import kotlinx.coroutines.test.UnconfinedTestDispatcher +import kotlinx.coroutines.test.runTest +import org.junit.Rule +import org.junit.Test +import org.matrix.android.sdk.api.auth.data.SessionParams +import org.matrix.android.sdk.api.util.Optional + +private const val A_SESSION_ID = "session-id" + +class SessionOverviewViewModelTest { + + @get:Rule + val mvRxTestRule = MvRxTestRule(testDispatcher = UnconfinedTestDispatcher()) + + private val args = SessionOverviewArgs( + sessionId = A_SESSION_ID + ) + private val fakeSession = FakeSession() + private val getDeviceFullInfoUseCase = mockk<GetDeviceFullInfoUseCase>() + + private fun createViewModel() = SessionOverviewViewModel( + initialState = SessionOverviewViewState(args), + session = fakeSession, + getDeviceFullInfoUseCase = getDeviceFullInfoUseCase + ) + + @Test + fun `given the viewModel has been initialized then viewState is updated with session info`() = runTest { + val sessionParams = givenIdForSession(A_SESSION_ID) + val deviceFullInfo = mockk<DeviceFullInfo>() + every { getDeviceFullInfoUseCase.execute(A_SESSION_ID) } returns flowOf(Optional(deviceFullInfo)) + val expectedState = SessionOverviewViewState( + sessionId = A_SESSION_ID, + isCurrentSession = true, + deviceInfo = Success(deviceFullInfo) + ) + + val viewModel = createViewModel() + + viewModel.test() + .assertLatestState { state -> state == expectedState } + .finish() + verify { sessionParams.deviceId } + verify { getDeviceFullInfoUseCase.execute(A_SESSION_ID) } + } + + private fun givenIdForSession(deviceId: String): SessionParams { + val sessionParams = mockk<SessionParams>() + every { sessionParams.deviceId } returns deviceId + fakeSession.givenSessionParams(sessionParams) + return sessionParams + } +} diff --git a/vector/src/test/java/im/vector/app/test/fakes/FakeSession.kt b/vector/src/test/java/im/vector/app/test/fakes/FakeSession.kt index ee016ecae3..71bcde5807 100644 --- a/vector/src/test/java/im/vector/app/test/fakes/FakeSession.kt +++ b/vector/src/test/java/im/vector/app/test/fakes/FakeSession.kt @@ -26,6 +26,7 @@ import io.mockk.coJustRun import io.mockk.every import io.mockk.mockk import io.mockk.mockkStatic +import org.matrix.android.sdk.api.auth.data.SessionParams import org.matrix.android.sdk.api.session.Session import org.matrix.android.sdk.api.session.getRoomSummary import org.matrix.android.sdk.api.session.homeserver.HomeServerCapabilitiesService @@ -71,6 +72,10 @@ class FakeSession( } } + fun givenSessionParams(sessionParams: SessionParams) { + every { this@FakeSession.sessionParams } returns sessionParams + } + companion object { fun withRoomSummary(roomSummary: RoomSummary) = FakeSession().apply { From a5ee4faef4867c54d26d8ba136ae9f084f7b087c Mon Sep 17 00:00:00 2001 From: Maxime NATUREL <maxime.naturel@niji.fr> Date: Thu, 1 Sep 2022 09:25:11 +0200 Subject: [PATCH 42/57] Introducing some reusable usecases --- .../devices/CurrentSessionCrossSigningInfo.kt | 26 ++++++++++ .../settings/devices/DevicesViewModel.kt | 28 +++-------- ...etCurrentSessionCrossSigningInfoUseCase.kt | 37 ++++++++++++++ ...yptionTrustLevelForCurrentDeviceUseCase.kt | 38 ++++++++++++++ ...GetEncryptionTrustLevelForDeviceUseCase.kt | 40 +++++++++++++++ ...cryptionTrustLevelForOtherDeviceUseCase.kt | 49 +++++++++++++++++++ .../features/settings/devices/TrustUtils.kt | 1 + .../v2/overview/GetDeviceFullInfoUseCase.kt | 10 +++- 8 files changed, 206 insertions(+), 23 deletions(-) create mode 100644 vector/src/main/java/im/vector/app/features/settings/devices/CurrentSessionCrossSigningInfo.kt create mode 100644 vector/src/main/java/im/vector/app/features/settings/devices/GetCurrentSessionCrossSigningInfoUseCase.kt create mode 100644 vector/src/main/java/im/vector/app/features/settings/devices/GetEncryptionTrustLevelForCurrentDeviceUseCase.kt create mode 100644 vector/src/main/java/im/vector/app/features/settings/devices/GetEncryptionTrustLevelForDeviceUseCase.kt create mode 100644 vector/src/main/java/im/vector/app/features/settings/devices/GetEncryptionTrustLevelForOtherDeviceUseCase.kt diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/CurrentSessionCrossSigningInfo.kt b/vector/src/main/java/im/vector/app/features/settings/devices/CurrentSessionCrossSigningInfo.kt new file mode 100644 index 0000000000..790de08823 --- /dev/null +++ b/vector/src/main/java/im/vector/app/features/settings/devices/CurrentSessionCrossSigningInfo.kt @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2022 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.app.features.settings.devices + +/** + * Used to hold some info about the cross signing of the current Session. + */ +data class CurrentSessionCrossSigningInfo( + val deviceId: String?, + val isCrossSigningInitialized: Boolean, + val isCrossSigningVerified: Boolean, +) diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/DevicesViewModel.kt b/vector/src/main/java/im/vector/app/features/settings/devices/DevicesViewModel.kt index 3b5bcb61d9..82c346b09c 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/DevicesViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/DevicesViewModel.kt @@ -101,6 +101,8 @@ class DevicesViewModel @AssistedInject constructor( private val stringProvider: StringProvider, private val matrix: Matrix, private val checkIfSessionIsInactiveUseCase: CheckIfSessionIsInactiveUseCase, + getCurrentSessionCrossSigningInfoUseCase: GetCurrentSessionCrossSigningInfoUseCase, + private val getEncryptionTrustLevelForDeviceUseCase: GetEncryptionTrustLevelForDeviceUseCase, ) : VectorViewModel<DevicesViewState, DevicesAction, DevicesViewEvents>(initialState), VerificationService.Listener { var uiaContinuation: Continuation<UIABaseAuth>? = null @@ -116,8 +118,9 @@ class DevicesViewModel @AssistedInject constructor( private val refreshSource = PublishDataSource<Unit>() init { - val hasAccountCrossSigning = session.cryptoService().crossSigningService().isCrossSigningInitialized() - val accountCrossSigningIsTrusted = session.cryptoService().crossSigningService().isCrossSigningVerified() + val currentSessionCrossSigningInfo = getCurrentSessionCrossSigningInfoUseCase.execute() + val hasAccountCrossSigning = currentSessionCrossSigningInfo.isCrossSigningInitialized + val accountCrossSigningIsTrusted = currentSessionCrossSigningInfo.isCrossSigningVerified setState { copy( @@ -143,12 +146,7 @@ class DevicesViewModel @AssistedInject constructor( .sortedByDescending { it.lastSeenTs } .map { deviceInfo -> val cryptoDeviceInfo = cryptoList.firstOrNull { it.deviceId == deviceInfo.deviceId } - val trustLevelForShield = computeTrustLevelForShield( - currentSessionCrossTrusted = accountCrossSigningIsTrusted, - legacyMode = !hasAccountCrossSigning, - deviceTrustLevel = cryptoDeviceInfo?.trustLevel, - isCurrentDevice = deviceInfo.deviceId == session.sessionParams.deviceId - ) + val trustLevelForShield = getEncryptionTrustLevelForDeviceUseCase.execute(currentSessionCrossSigningInfo, cryptoDeviceInfo) val isInactive = checkIfSessionIsInactiveUseCase.execute(deviceInfo.lastSeenTs ?: 0) DeviceFullInfo(deviceInfo, cryptoDeviceInfo, trustLevelForShield, isInactive) } @@ -268,20 +266,6 @@ class DevicesViewModel @AssistedInject constructor( } } - private fun computeTrustLevelForShield( - currentSessionCrossTrusted: Boolean, - legacyMode: Boolean, - deviceTrustLevel: DeviceTrustLevel?, - isCurrentDevice: Boolean, - ): RoomEncryptionTrustLevel { - return TrustUtils.shieldForTrust( - currentDevice = isCurrentDevice, - trustMSK = currentSessionCrossTrusted, - legacyMode = legacyMode, - deviceTrustLevel = deviceTrustLevel - ) - } - private fun handleInteractiveVerification(action: DevicesAction.VerifyMyDevice) { val txID = session.cryptoService() .verificationService() diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/GetCurrentSessionCrossSigningInfoUseCase.kt b/vector/src/main/java/im/vector/app/features/settings/devices/GetCurrentSessionCrossSigningInfoUseCase.kt new file mode 100644 index 0000000000..aa0de9ddf1 --- /dev/null +++ b/vector/src/main/java/im/vector/app/features/settings/devices/GetCurrentSessionCrossSigningInfoUseCase.kt @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2022 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.app.features.settings.devices + +import im.vector.app.core.di.ActiveSessionHolder +import javax.inject.Inject + +// TODO add unit tests +class GetCurrentSessionCrossSigningInfoUseCase @Inject constructor( + private val activeSessionHolder: ActiveSessionHolder, +) { + + fun execute(): CurrentSessionCrossSigningInfo { + val session = activeSessionHolder.getActiveSession() + val isCrossSigningInitialized = session.cryptoService().crossSigningService().isCrossSigningInitialized() + val isCrossSigningVerified = session.cryptoService().crossSigningService().isCrossSigningVerified() + return CurrentSessionCrossSigningInfo( + deviceId = session.sessionParams.deviceId, + isCrossSigningInitialized = isCrossSigningInitialized, + isCrossSigningVerified = isCrossSigningVerified + ) + } +} diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/GetEncryptionTrustLevelForCurrentDeviceUseCase.kt b/vector/src/main/java/im/vector/app/features/settings/devices/GetEncryptionTrustLevelForCurrentDeviceUseCase.kt new file mode 100644 index 0000000000..eaa72b424a --- /dev/null +++ b/vector/src/main/java/im/vector/app/features/settings/devices/GetEncryptionTrustLevelForCurrentDeviceUseCase.kt @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2022 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.app.features.settings.devices + +import org.matrix.android.sdk.api.session.crypto.model.RoomEncryptionTrustLevel +import javax.inject.Inject + +// TODO add unit tests +class GetEncryptionTrustLevelForCurrentDeviceUseCase @Inject constructor() { + + fun execute(trustMSK: Boolean, legacyMode: Boolean): RoomEncryptionTrustLevel { + return if (legacyMode) { + // In legacy, current session is always trusted + RoomEncryptionTrustLevel.Trusted + } else { + // If current session doesn't trust MSK, show red shield for current device + if (trustMSK) { + RoomEncryptionTrustLevel.Trusted + } else { + RoomEncryptionTrustLevel.Warning + } + } + } +} diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/GetEncryptionTrustLevelForDeviceUseCase.kt b/vector/src/main/java/im/vector/app/features/settings/devices/GetEncryptionTrustLevelForDeviceUseCase.kt new file mode 100644 index 0000000000..d988f728ae --- /dev/null +++ b/vector/src/main/java/im/vector/app/features/settings/devices/GetEncryptionTrustLevelForDeviceUseCase.kt @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2022 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.app.features.settings.devices + +import org.matrix.android.sdk.api.session.crypto.model.CryptoDeviceInfo +import org.matrix.android.sdk.api.session.crypto.model.RoomEncryptionTrustLevel +import javax.inject.Inject + +// TODO add unit tests +class GetEncryptionTrustLevelForDeviceUseCase @Inject constructor( + private val getEncryptionTrustLevelForCurrentDeviceUseCase: GetEncryptionTrustLevelForCurrentDeviceUseCase, + private val getEncryptionTrustLevelForOtherDeviceUseCase: GetEncryptionTrustLevelForOtherDeviceUseCase, +) { + + fun execute(currentSessionCrossSigningInfo: CurrentSessionCrossSigningInfo, cryptoDeviceInfo: CryptoDeviceInfo?): RoomEncryptionTrustLevel { + val legacyMode = !currentSessionCrossSigningInfo.isCrossSigningInitialized + val trustMSK = currentSessionCrossSigningInfo.isCrossSigningVerified + val isCurrentDevice = !cryptoDeviceInfo?.deviceId.isNullOrEmpty() && cryptoDeviceInfo?.deviceId == currentSessionCrossSigningInfo.deviceId + val deviceTrustLevel = cryptoDeviceInfo?.trustLevel + + return when { + isCurrentDevice -> getEncryptionTrustLevelForCurrentDeviceUseCase.execute(trustMSK, legacyMode) + else -> getEncryptionTrustLevelForOtherDeviceUseCase.execute(trustMSK, legacyMode, deviceTrustLevel) + } + } +} diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/GetEncryptionTrustLevelForOtherDeviceUseCase.kt b/vector/src/main/java/im/vector/app/features/settings/devices/GetEncryptionTrustLevelForOtherDeviceUseCase.kt new file mode 100644 index 0000000000..41cdae23a4 --- /dev/null +++ b/vector/src/main/java/im/vector/app/features/settings/devices/GetEncryptionTrustLevelForOtherDeviceUseCase.kt @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2022 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.app.features.settings.devices + +import org.matrix.android.sdk.api.session.crypto.crosssigning.DeviceTrustLevel +import org.matrix.android.sdk.api.session.crypto.model.RoomEncryptionTrustLevel +import javax.inject.Inject + +// TODO add unit tests +class GetEncryptionTrustLevelForOtherDeviceUseCase @Inject constructor() { + + fun execute(trustMSK: Boolean, legacyMode: Boolean, deviceTrustLevel: DeviceTrustLevel?): RoomEncryptionTrustLevel { + return if (legacyMode) { + // use local trust + if (deviceTrustLevel?.locallyVerified == true) { + RoomEncryptionTrustLevel.Trusted + } else { + RoomEncryptionTrustLevel.Warning + } + } else { + if (trustMSK) { + // use cross sign trust, put locally trusted in black + when { + deviceTrustLevel?.crossSigningVerified == true -> RoomEncryptionTrustLevel.Trusted + deviceTrustLevel?.locallyVerified == true -> RoomEncryptionTrustLevel.Default + else -> RoomEncryptionTrustLevel.Warning + } + } else { + // The current session is untrusted, so displays others in black + // as we can't know the cross-signing state + RoomEncryptionTrustLevel.Default + } + } + } +} diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/TrustUtils.kt b/vector/src/main/java/im/vector/app/features/settings/devices/TrustUtils.kt index da18154ea1..7709a63344 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/TrustUtils.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/TrustUtils.kt @@ -19,6 +19,7 @@ package im.vector.app.features.settings.devices import org.matrix.android.sdk.api.session.crypto.crosssigning.DeviceTrustLevel import org.matrix.android.sdk.api.session.crypto.model.RoomEncryptionTrustLevel +// TODO Replace usage by the use case GetEncryptionTrustLevelForDeviceUseCase object TrustUtils { fun shieldForTrust( diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/GetDeviceFullInfoUseCase.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/GetDeviceFullInfoUseCase.kt index d20ca17471..51252de34a 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/GetDeviceFullInfoUseCase.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/GetDeviceFullInfoUseCase.kt @@ -19,6 +19,8 @@ package im.vector.app.features.settings.devices.v2.overview import androidx.lifecycle.asFlow import im.vector.app.core.di.ActiveSessionHolder import im.vector.app.features.settings.devices.DeviceFullInfo +import im.vector.app.features.settings.devices.GetCurrentSessionCrossSigningInfoUseCase +import im.vector.app.features.settings.devices.GetEncryptionTrustLevelForDeviceUseCase import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.emptyFlow @@ -26,12 +28,16 @@ import org.matrix.android.sdk.api.util.Optional import org.matrix.android.sdk.api.util.toOptional import javax.inject.Inject +// TODO update unit test class GetDeviceFullInfoUseCase @Inject constructor( private val activeSessionHolder: ActiveSessionHolder, + private val getCurrentSessionCrossSigningInfoUseCase: GetCurrentSessionCrossSigningInfoUseCase, + private val getEncryptionTrustLevelForDeviceUseCase: GetEncryptionTrustLevelForDeviceUseCase, ) { fun execute(deviceId: String): Flow<Optional<DeviceFullInfo>> { return activeSessionHolder.getSafeActiveSession()?.let { session -> + val currentSessionCrossSigningInfo = getCurrentSessionCrossSigningInfoUseCase.execute() combine( session.cryptoService().getMyDevicesInfoLive(deviceId).asFlow(), session.cryptoService().getLiveCryptoDeviceInfoWithId(deviceId).asFlow() @@ -39,9 +45,11 @@ class GetDeviceFullInfoUseCase @Inject constructor( val info = deviceInfo.getOrNull() val cryptoInfo = cryptoDeviceInfo.getOrNull() val fullInfo = if (info != null && cryptoInfo != null) { + val roomEncryptionTrustLevel = getEncryptionTrustLevelForDeviceUseCase.execute(currentSessionCrossSigningInfo, cryptoInfo) DeviceFullInfo( deviceInfo = info, - cryptoDeviceInfo = cryptoInfo + cryptoDeviceInfo = cryptoInfo, + trustLevelForShield = roomEncryptionTrustLevel ) } else { null From 52006c1bb453057f2c3cbe7195c819edea3da2c2 Mon Sep 17 00:00:00 2001 From: Maxime NATUREL <maxime.naturel@niji.fr> Date: Thu, 1 Sep 2022 09:32:14 +0200 Subject: [PATCH 43/57] Renaming CurrentSessionView into SessionInfoView to be more generic --- .../devices/v2/list/CurrentSessionView.kt | 78 ------------------- .../devices/v2/list/SessionInfoView.kt | 78 +++++++++++++++++++ ...rent_session.xml => view_session_info.xml} | 26 +++---- 3 files changed, 91 insertions(+), 91 deletions(-) delete mode 100644 vector/src/main/java/im/vector/app/features/settings/devices/v2/list/CurrentSessionView.kt create mode 100644 vector/src/main/java/im/vector/app/features/settings/devices/v2/list/SessionInfoView.kt rename vector/src/main/res/layout/{view_current_session.xml => view_session_info.xml} (78%) diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/CurrentSessionView.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/CurrentSessionView.kt deleted file mode 100644 index 1ce035931f..0000000000 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/CurrentSessionView.kt +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (c) 2022 New Vector Ltd - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package im.vector.app.features.settings.devices.v2.list - -import android.content.Context -import android.util.AttributeSet -import androidx.constraintlayout.widget.ConstraintLayout -import androidx.core.view.isVisible -import im.vector.app.R -import im.vector.app.databinding.ViewCurrentSessionBinding -import im.vector.app.features.settings.devices.DeviceFullInfo -import im.vector.app.features.themes.ThemeUtils -import org.matrix.android.sdk.api.session.crypto.model.RoomEncryptionTrustLevel - -class CurrentSessionView @JvmOverloads constructor( - context: Context, - attrs: AttributeSet? = null, - defStyleAttr: Int = 0 -) : ConstraintLayout(context, attrs, defStyleAttr) { - - private val views: ViewCurrentSessionBinding - - init { - inflate(context, R.layout.view_current_session, this) - views = ViewCurrentSessionBinding.bind(this) - } - - val viewDetailsButton = views.currentSessionViewDetailsButton - - fun render(currentDeviceInfo: DeviceFullInfo) { - renderDeviceInfo(currentDeviceInfo.deviceInfo.displayName.orEmpty()) - renderVerificationStatus(currentDeviceInfo.trustLevelForShield) - } - - private fun renderVerificationStatus(trustLevelForShield: RoomEncryptionTrustLevel) { - views.currentSessionVerificationStatusImageView.render(trustLevelForShield) - if (trustLevelForShield == RoomEncryptionTrustLevel.Trusted) { - renderCrossSigningVerified() - } else { - renderCrossSigningUnverified() - } - } - - private fun renderCrossSigningVerified() { - views.currentSessionVerificationStatusTextView.text = context.getString(R.string.device_manager_verification_status_verified) - views.currentSessionVerificationStatusTextView.setTextColor(ThemeUtils.getColor(context, R.attr.colorPrimary)) - views.currentSessionVerificationStatusDetailTextView.text = context.getString(R.string.device_manager_verification_status_detail_verified) - views.currentSessionVerifySessionButton.isVisible = false - } - - private fun renderCrossSigningUnverified() { - views.currentSessionVerificationStatusTextView.text = context.getString(R.string.device_manager_verification_status_unverified) - views.currentSessionVerificationStatusTextView.setTextColor(ThemeUtils.getColor(context, R.attr.colorError)) - views.currentSessionVerificationStatusDetailTextView.text = context.getString(R.string.device_manager_verification_status_detail_unverified) - views.currentSessionVerifySessionButton.isVisible = true - } - - // TODO. We don't have this info yet. Update later accordingly. - private fun renderDeviceInfo(sessionName: String) { - views.currentSessionDeviceTypeImageView.setImageResource(R.drawable.ic_device_type_mobile) - views.currentSessionDeviceTypeImageView.contentDescription = context.getString(R.string.a11y_device_manager_device_type_mobile) - views.currentSessionNameTextView.text = sessionName - } -} diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/SessionInfoView.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/SessionInfoView.kt new file mode 100644 index 0000000000..b79adfb2d4 --- /dev/null +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/SessionInfoView.kt @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2022 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.app.features.settings.devices.v2.list + +import android.content.Context +import android.util.AttributeSet +import androidx.constraintlayout.widget.ConstraintLayout +import androidx.core.view.isVisible +import im.vector.app.R +import im.vector.app.databinding.ViewSessionInfoBinding +import im.vector.app.features.settings.devices.DeviceFullInfo +import im.vector.app.features.themes.ThemeUtils +import org.matrix.android.sdk.api.session.crypto.model.RoomEncryptionTrustLevel + +class SessionInfoView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : ConstraintLayout(context, attrs, defStyleAttr) { + + private val views: ViewSessionInfoBinding + + init { + inflate(context, R.layout.view_session_info, this) + views = ViewSessionInfoBinding.bind(this) + } + + val viewDetailsButton = views.sessionInfoViewDetailsButton + + fun render(deviceInfo: DeviceFullInfo) { + renderDeviceInfo(deviceInfo.deviceInfo.displayName.orEmpty()) + renderVerificationStatus(deviceInfo.trustLevelForShield) + } + + private fun renderVerificationStatus(trustLevelForShield: RoomEncryptionTrustLevel) { + views.sessionInfoVerificationStatusImageView.render(trustLevelForShield) + if (trustLevelForShield == RoomEncryptionTrustLevel.Trusted) { + renderCrossSigningVerified() + } else { + renderCrossSigningUnverified() + } + } + + private fun renderCrossSigningVerified() { + views.sessionInfoVerificationStatusTextView.text = context.getString(R.string.device_manager_verification_status_verified) + views.sessionInfoVerificationStatusTextView.setTextColor(ThemeUtils.getColor(context, R.attr.colorPrimary)) + views.sessionInfoVerificationStatusDetailTextView.text = context.getString(R.string.device_manager_verification_status_detail_verified) + views.sessionInfoVerifySessionButton.isVisible = false + } + + private fun renderCrossSigningUnverified() { + views.sessionInfoVerificationStatusTextView.text = context.getString(R.string.device_manager_verification_status_unverified) + views.sessionInfoVerificationStatusTextView.setTextColor(ThemeUtils.getColor(context, R.attr.colorError)) + views.sessionInfoVerificationStatusDetailTextView.text = context.getString(R.string.device_manager_verification_status_detail_unverified) + views.sessionInfoVerifySessionButton.isVisible = true + } + + // TODO. We don't have this info yet. Update later accordingly. + private fun renderDeviceInfo(sessionName: String) { + views.sessionInfoDeviceTypeImageView.setImageResource(R.drawable.ic_device_type_mobile) + views.sessionInfoDeviceTypeImageView.contentDescription = context.getString(R.string.a11y_device_manager_device_type_mobile) + views.sessionInfoNameTextView.text = sessionName + } +} diff --git a/vector/src/main/res/layout/view_current_session.xml b/vector/src/main/res/layout/view_session_info.xml similarity index 78% rename from vector/src/main/res/layout/view_current_session.xml rename to vector/src/main/res/layout/view_session_info.xml index 91977eba40..015f4961c9 100644 --- a/vector/src/main/res/layout/view_current_session.xml +++ b/vector/src/main/res/layout/view_session_info.xml @@ -8,7 +8,7 @@ android:paddingBottom="16dp"> <ImageView - android:id="@+id/currentSessionDeviceTypeImageView" + android:id="@+id/sessionInfoDeviceTypeImageView" android:layout_width="40dp" android:layout_height="40dp" android:layout_marginTop="16dp" @@ -21,18 +21,18 @@ tools:src="@drawable/ic_device_type_mobile" /> <TextView - android:id="@+id/currentSessionNameTextView" + android:id="@+id/sessionInfoNameTextView" style="@style/TextAppearance.Vector.Subtitle.Medium.DevicesManagement" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="4dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/currentSessionDeviceTypeImageView" + app:layout_constraintTop_toBottomOf="@id/sessionInfoDeviceTypeImageView" tools:text="Element Mobile: Android" /> <LinearLayout - android:id="@+id/currentSessionVerificationStatusContainer" + android:id="@+id/sessionInfoVerificationStatusContainer" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="12dp" @@ -40,17 +40,17 @@ android:orientation="horizontal" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/currentSessionNameTextView"> + app:layout_constraintTop_toBottomOf="@id/sessionInfoNameTextView"> <im.vector.app.core.ui.views.ShieldImageView - android:id="@+id/currentSessionVerificationStatusImageView" + android:id="@+id/sessionInfoVerificationStatusImageView" android:layout_width="16dp" android:layout_height="16dp" android:importantForAccessibility="no" tools:src="@drawable/ic_shield_trusted" /> <TextView - android:id="@+id/currentSessionVerificationStatusTextView" + android:id="@+id/sessionInfoVerificationStatusTextView" style="@style/TextAppearance.Vector.Body" android:layout_width="wrap_content" android:layout_height="wrap_content" @@ -60,7 +60,7 @@ </LinearLayout> <TextView - android:id="@+id/currentSessionVerificationStatusDetailTextView" + android:id="@+id/sessionInfoVerificationStatusDetailTextView" style="@style/TextAppearance.Vector.Body.DevicesManagement" android:layout_width="0dp" android:layout_height="wrap_content" @@ -69,11 +69,11 @@ android:gravity="center" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/currentSessionVerificationStatusContainer" + app:layout_constraintTop_toBottomOf="@id/sessionInfoVerificationStatusContainer" tools:text="@string/device_manager_verification_status_detail_verified" /> <Button - android:id="@+id/currentSessionVerifySessionButton" + android:id="@+id/sessionInfoVerifySessionButton" android:layout_width="0dp" android:layout_height="52dp" android:layout_marginHorizontal="24dp" @@ -81,10 +81,10 @@ android:text="@string/device_manager_verify_session" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/currentSessionVerificationStatusDetailTextView" /> + app:layout_constraintTop_toBottomOf="@id/sessionInfoVerificationStatusDetailTextView" /> <Button - android:id="@+id/currentSessionViewDetailsButton" + android:id="@+id/sessionInfoViewDetailsButton" style="@style/Widget.Vector.Button.Text" android:layout_width="0dp" android:layout_height="wrap_content" @@ -93,6 +93,6 @@ android:text="@string/device_manager_view_details" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/currentSessionVerifySessionButton" /> + app:layout_constraintTop_toBottomOf="@id/sessionInfoVerifySessionButton" /> </androidx.constraintlayout.widget.ConstraintLayout> From f4865df50cd164a6edc2be0755d1a73394036146 Mon Sep 17 00:00:00 2001 From: Maxime NATUREL <maxime.naturel@niji.fr> Date: Thu, 1 Sep 2022 10:05:24 +0200 Subject: [PATCH 44/57] Show info in overview screen --- .../src/main/res/values/strings.xml | 10 ++++- .../v2/VectorSettingsDevicesFragment.kt | 7 +++- .../devices/v2/list/SessionInfoView.kt | 40 +++++++++++++------ .../devices/v2/list/SessionInfoViewState.kt | 25 ++++++++++++ .../v2/overview/SessionOverviewFragment.kt | 32 +++++++++++++-- .../res/layout/fragment_session_overview.xml | 20 ++++++++++ .../fragment_settings_session_overview.xml | 6 --- .../src/main/res/layout/view_session_info.xml | 2 +- 8 files changed, 115 insertions(+), 27 deletions(-) create mode 100644 vector/src/main/java/im/vector/app/features/settings/devices/v2/list/SessionInfoViewState.kt create mode 100644 vector/src/main/res/layout/fragment_session_overview.xml delete mode 100644 vector/src/main/res/layout/fragment_settings_session_overview.xml diff --git a/library/ui-strings/src/main/res/values/strings.xml b/library/ui-strings/src/main/res/values/strings.xml index 823a26df74..e1c03da532 100644 --- a/library/ui-strings/src/main/res/values/strings.xml +++ b/library/ui-strings/src/main/res/values/strings.xml @@ -3226,8 +3226,14 @@ <string name="a11y_device_manager_device_type_unknown">Unknown device type</string> <string name="device_manager_verification_status_verified">Verified session</string> <string name="device_manager_verification_status_unverified">Unverified session</string> - <string name="device_manager_verification_status_detail_verified">Your current session is ready for secure messaging.</string> - <string name="device_manager_verification_status_detail_unverified">Verify your current session for enhanced secure messaging.</string> + <!-- TODO TO BE REMOVED: replaced by device_manager_verification_status_detail_current_session_verified --> + <string name="device_manager_verification_status_detail_verified" tools:ignore="UnusedResources">Your current session is ready for secure messaging.</string> + <!-- TODO TO BE REMOVED: replaced by device_manager_verification_status_detail_current_session_unverified --> + <string name="device_manager_verification_status_detail_unverified" tools:ignore="UnusedResources">Verify your current session for enhanced secure messaging.</string> + <string name="device_manager_verification_status_detail_current_session_verified">Your current session is ready for secure messaging.</string> + <string name="device_manager_verification_status_detail_other_session_verified">This session is ready for secure messaging.</string> + <string name="device_manager_verification_status_detail_current_session_unverified">Verify your current session for enhanced secure messaging.</string> + <string name="device_manager_verification_status_detail_other_session_unverified">Verify or sign out from this session for best security and reliability.</string> <string name="device_manager_verify_session">Verify Session</string> <string name="device_manager_view_details">View Details</string> <string name="device_manager_header_section_current_session">Current Session</string> diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/VectorSettingsDevicesFragment.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/VectorSettingsDevicesFragment.kt index 2adf7969bf..8bab4ebd60 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/VectorSettingsDevicesFragment.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/VectorSettingsDevicesFragment.kt @@ -42,6 +42,7 @@ import im.vector.app.features.settings.devices.DevicesViewEvents import im.vector.app.features.settings.devices.DevicesViewModel import im.vector.app.features.settings.devices.v2.list.SESSION_IS_MARKED_AS_INACTIVE_AFTER_DAYS import im.vector.app.features.settings.devices.v2.list.SecurityRecommendationViewState +import im.vector.app.features.settings.devices.v2.list.SessionInfoViewState import javax.inject.Inject /** @@ -199,7 +200,11 @@ class VectorSettingsDevicesFragment : currentDeviceInfo?.let { views.deviceListHeaderCurrentSession.isVisible = true views.deviceListCurrentSession.isVisible = true - views.deviceListCurrentSession.render(it) + val viewState = SessionInfoViewState( + isCurrentSession = true, + deviceFullInfo = it + ) + views.deviceListCurrentSession.render(viewState) views.deviceListCurrentSession.debouncedClicks { currentDeviceInfo.deviceInfo.deviceId?.let { deviceId -> navigateToSessionOverview(deviceId) } } diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/SessionInfoView.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/SessionInfoView.kt index b79adfb2d4..be6cfad1c8 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/SessionInfoView.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/SessionInfoView.kt @@ -22,7 +22,6 @@ import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.view.isVisible import im.vector.app.R import im.vector.app.databinding.ViewSessionInfoBinding -import im.vector.app.features.settings.devices.DeviceFullInfo import im.vector.app.features.themes.ThemeUtils import org.matrix.android.sdk.api.session.crypto.model.RoomEncryptionTrustLevel @@ -41,31 +40,42 @@ class SessionInfoView @JvmOverloads constructor( val viewDetailsButton = views.sessionInfoViewDetailsButton - fun render(deviceInfo: DeviceFullInfo) { - renderDeviceInfo(deviceInfo.deviceInfo.displayName.orEmpty()) - renderVerificationStatus(deviceInfo.trustLevelForShield) + fun render(sessionInfoViewState: SessionInfoViewState) { + renderDeviceInfo(sessionInfoViewState.deviceFullInfo.deviceInfo.displayName.orEmpty()) + renderVerificationStatus(sessionInfoViewState.deviceFullInfo.trustLevelForShield, sessionInfoViewState.isCurrentSession) + renderDetailsButton(sessionInfoViewState.isDetailsButtonVisible) } - private fun renderVerificationStatus(trustLevelForShield: RoomEncryptionTrustLevel) { - views.sessionInfoVerificationStatusImageView.render(trustLevelForShield) - if (trustLevelForShield == RoomEncryptionTrustLevel.Trusted) { - renderCrossSigningVerified() + private fun renderVerificationStatus(encryptionTrustLevel: RoomEncryptionTrustLevel, isCurrentSession: Boolean) { + views.sessionInfoVerificationStatusImageView.render(encryptionTrustLevel) + if (encryptionTrustLevel == RoomEncryptionTrustLevel.Trusted) { + renderCrossSigningVerified(isCurrentSession) } else { - renderCrossSigningUnverified() + renderCrossSigningUnverified(isCurrentSession) } } - private fun renderCrossSigningVerified() { + private fun renderCrossSigningVerified(isCurrentSession: Boolean) { views.sessionInfoVerificationStatusTextView.text = context.getString(R.string.device_manager_verification_status_verified) views.sessionInfoVerificationStatusTextView.setTextColor(ThemeUtils.getColor(context, R.attr.colorPrimary)) - views.sessionInfoVerificationStatusDetailTextView.text = context.getString(R.string.device_manager_verification_status_detail_verified) + val statusResId = if (isCurrentSession) { + R.string.device_manager_verification_status_detail_current_session_verified + } else { + R.string.device_manager_verification_status_detail_other_session_verified + } + views.sessionInfoVerificationStatusDetailTextView.text = context.getString(statusResId) views.sessionInfoVerifySessionButton.isVisible = false } - private fun renderCrossSigningUnverified() { + private fun renderCrossSigningUnverified(isCurrentSession: Boolean) { views.sessionInfoVerificationStatusTextView.text = context.getString(R.string.device_manager_verification_status_unverified) views.sessionInfoVerificationStatusTextView.setTextColor(ThemeUtils.getColor(context, R.attr.colorError)) - views.sessionInfoVerificationStatusDetailTextView.text = context.getString(R.string.device_manager_verification_status_detail_unverified) + val statusResId = if (isCurrentSession) { + R.string.device_manager_verification_status_detail_current_session_unverified + } else { + R.string.device_manager_verification_status_detail_other_session_unverified + } + views.sessionInfoVerificationStatusDetailTextView.text = context.getString(statusResId) views.sessionInfoVerifySessionButton.isVisible = true } @@ -75,4 +85,8 @@ class SessionInfoView @JvmOverloads constructor( views.sessionInfoDeviceTypeImageView.contentDescription = context.getString(R.string.a11y_device_manager_device_type_mobile) views.sessionInfoNameTextView.text = sessionName } + + private fun renderDetailsButton(isDetailsButtonVisible: Boolean) { + views.sessionInfoViewDetailsButton.isVisible = isDetailsButtonVisible + } } diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/SessionInfoViewState.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/SessionInfoViewState.kt new file mode 100644 index 0000000000..c9a351f568 --- /dev/null +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/SessionInfoViewState.kt @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2022 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.app.features.settings.devices.v2.list + +import im.vector.app.features.settings.devices.DeviceFullInfo + +data class SessionInfoViewState( + val isCurrentSession: Boolean, + val deviceFullInfo: DeviceFullInfo, + val isDetailsButtonVisible: Boolean = true, +) diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewFragment.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewFragment.kt index 1b8b231a5c..60d58c8a8d 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewFragment.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewFragment.kt @@ -19,28 +19,38 @@ package im.vector.app.features.settings.devices.v2.overview import android.view.LayoutInflater import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity +import androidx.core.view.isGone +import androidx.core.view.isVisible +import com.airbnb.mvrx.Success import com.airbnb.mvrx.fragmentViewModel import com.airbnb.mvrx.withState import dagger.hilt.android.AndroidEntryPoint import im.vector.app.R import im.vector.app.core.platform.VectorBaseFragment -import im.vector.app.databinding.FragmentSettingsSessionOverviewBinding +import im.vector.app.databinding.FragmentSessionOverviewBinding +import im.vector.app.features.settings.devices.DeviceFullInfo +import im.vector.app.features.settings.devices.v2.list.SessionInfoViewState /** * Display the overview info about a Session. */ @AndroidEntryPoint class SessionOverviewFragment : - VectorBaseFragment<FragmentSettingsSessionOverviewBinding>() { + VectorBaseFragment<FragmentSessionOverviewBinding>() { private val viewModel: SessionOverviewViewModel by fragmentViewModel() - override fun getBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentSettingsSessionOverviewBinding { - return FragmentSettingsSessionOverviewBinding.inflate(inflater, container, false) + override fun getBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentSessionOverviewBinding { + return FragmentSessionOverviewBinding.inflate(inflater, container, false) } override fun invalidate() = withState(viewModel) { state -> updateToolbar(state.isCurrentSession) + if (state.deviceInfo is Success) { + renderSessionInfo(state.isCurrentSession, state.deviceInfo.invoke()) + } else { + hideSessionInfo() + } } private fun updateToolbar(isCurrentSession: Boolean) { @@ -49,4 +59,18 @@ class SessionOverviewFragment : ?.supportActionBar ?.setTitle(titleResId) } + + private fun renderSessionInfo(isCurrentSession: Boolean, deviceFullInfo: DeviceFullInfo) { + views.sessionOverviewInfo.isVisible = true + val viewState = SessionInfoViewState( + isCurrentSession = isCurrentSession, + deviceFullInfo = deviceFullInfo, + isDetailsButtonVisible = false + ) + views.sessionOverviewInfo.render(viewState) + } + + private fun hideSessionInfo() { + views.sessionOverviewInfo.isGone = true + } } diff --git a/vector/src/main/res/layout/fragment_session_overview.xml b/vector/src/main/res/layout/fragment_session_overview.xml new file mode 100644 index 0000000000..156e61673b --- /dev/null +++ b/vector/src/main/res/layout/fragment_session_overview.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <im.vector.app.features.settings.devices.v2.list.SessionInfoView + android:id="@+id/sessionOverviewInfo" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginHorizontal="16dp" + android:layout_marginVertical="24dp" + android:visibility="gone" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + tools:visibility="visible" /> + +</androidx.constraintlayout.widget.ConstraintLayout> diff --git a/vector/src/main/res/layout/fragment_settings_session_overview.xml b/vector/src/main/res/layout/fragment_settings_session_overview.xml deleted file mode 100644 index 1354408486..0000000000 --- a/vector/src/main/res/layout/fragment_settings_session_overview.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent"> - -</androidx.constraintlayout.widget.ConstraintLayout> diff --git a/vector/src/main/res/layout/view_session_info.xml b/vector/src/main/res/layout/view_session_info.xml index 015f4961c9..02aad7b19d 100644 --- a/vector/src/main/res/layout/view_session_info.xml +++ b/vector/src/main/res/layout/view_session_info.xml @@ -70,7 +70,7 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/sessionInfoVerificationStatusContainer" - tools:text="@string/device_manager_verification_status_detail_verified" /> + tools:text="@string/device_manager_verification_status_detail_current_session_verified" /> <Button android:id="@+id/sessionInfoVerifySessionButton" From 78c2b10b8950366c322d0aa3ed4e81c91c67f523 Mon Sep 17 00:00:00 2001 From: Maxime NATUREL <maxime.naturel@niji.fr> Date: Thu, 1 Sep 2022 10:43:17 +0200 Subject: [PATCH 45/57] Navigation from other session item --- .../devices/v2/VectorSettingsDevicesFragment.kt | 10 ++++++++++ .../settings/devices/v2/list/OtherSessionItem.kt | 10 ++++++++++ .../devices/v2/list/OtherSessionsController.kt | 7 +++++++ .../settings/devices/v2/list/OtherSessionsView.kt | 5 +++++ vector/src/main/res/layout/item_other_session.xml | 1 + 5 files changed, 33 insertions(+) diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/VectorSettingsDevicesFragment.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/VectorSettingsDevicesFragment.kt index 8bab4ebd60..f7f6ca6db4 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/VectorSettingsDevicesFragment.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/VectorSettingsDevicesFragment.kt @@ -42,6 +42,7 @@ import im.vector.app.features.settings.devices.DevicesViewEvents import im.vector.app.features.settings.devices.DevicesViewModel import im.vector.app.features.settings.devices.v2.list.SESSION_IS_MARKED_AS_INACTIVE_AFTER_DAYS import im.vector.app.features.settings.devices.v2.list.SecurityRecommendationViewState +import im.vector.app.features.settings.devices.v2.list.OtherSessionsController import im.vector.app.features.settings.devices.v2.list.SessionInfoViewState import javax.inject.Inject @@ -76,6 +77,7 @@ class VectorSettingsDevicesFragment : initLearnMoreButtons() initWaitingView() + initOtherSessionsView() observeViewEvents() } @@ -114,6 +116,14 @@ class VectorSettingsDevicesFragment : views.waitingView.waitingStatusText.isVisible = true } + private fun initOtherSessionsView() { + views.deviceListOtherSessions.setCallback(object : OtherSessionsController.Callback { + override fun onItemClicked(deviceId: String) { + navigateToSessionOverview(deviceId) + } + }) + } + override fun onDestroyView() { cleanUpLearnMoreButtonsListeners() super.onDestroyView() diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/OtherSessionItem.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/OtherSessionItem.kt index e9376953e0..c73389d775 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/OtherSessionItem.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/OtherSessionItem.kt @@ -22,8 +22,10 @@ import android.widget.TextView import com.airbnb.epoxy.EpoxyAttribute import com.airbnb.epoxy.EpoxyModelClass import im.vector.app.R +import im.vector.app.core.epoxy.ClickListener import im.vector.app.core.epoxy.VectorEpoxyHolder import im.vector.app.core.epoxy.VectorEpoxyModel +import im.vector.app.core.epoxy.onClick import im.vector.app.core.resources.StringProvider import im.vector.app.core.ui.views.ShieldImageView import org.matrix.android.sdk.api.session.crypto.model.RoomEncryptionTrustLevel @@ -49,8 +51,16 @@ abstract class OtherSessionItem : VectorEpoxyModel<OtherSessionItem.Holder>(R.la @EpoxyAttribute lateinit var stringProvider: StringProvider + @EpoxyAttribute(EpoxyAttribute.Option.DoNotHash) + var clickListener: ClickListener? = null + override fun bind(holder: Holder) { super.bind(holder) + holder.view.onClick(clickListener) + if (clickListener == null) { + holder.view.isClickable = false + } + when (deviceType) { DeviceType.MOBILE -> { holder.otherSessionDeviceTypeImageView.setImageResource(R.drawable.ic_device_type_mobile) diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/OtherSessionsController.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/OtherSessionsController.kt index 8a5ee05af7..6419d02fc9 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/OtherSessionsController.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/OtherSessionsController.kt @@ -35,6 +35,12 @@ class OtherSessionsController @Inject constructor( private val colorProvider: ColorProvider, ) : TypedEpoxyController<List<DeviceFullInfo>>() { + var callback: Callback? = null + + interface Callback { + fun onItemClicked(deviceId: String) + } + override fun buildModels(data: List<DeviceFullInfo>?) { val host = this @@ -70,6 +76,7 @@ class OtherSessionsController @Inject constructor( sessionDescription(description) sessionDescriptionDrawable(descriptionDrawable) stringProvider(this@OtherSessionsController.stringProvider) + clickListener { device.deviceInfo.deviceId?.let { host.callback?.onItemClicked(it) } } } } } diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/OtherSessionsView.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/OtherSessionsView.kt index 55978e61fd..682a9c6e64 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/OtherSessionsView.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/OtherSessionsView.kt @@ -49,7 +49,12 @@ class OtherSessionsView @JvmOverloads constructor( otherSessionsController.setData(devices) } + fun setCallback(callback: OtherSessionsController.Callback) { + otherSessionsController.callback = callback + } + override fun onDetachedFromWindow() { + otherSessionsController.callback = null views.otherSessionsRecyclerView.cleanup() super.onDetachedFromWindow() } diff --git a/vector/src/main/res/layout/item_other_session.xml b/vector/src/main/res/layout/item_other_session.xml index 2c41ce6a56..2f93c2be5d 100644 --- a/vector/src/main/res/layout/item_other_session.xml +++ b/vector/src/main/res/layout/item_other_session.xml @@ -4,6 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" + android:foreground="?selectableItemBackground" android:paddingTop="16dp"> <ImageView From 3f30cf0bee063b15817ea8c2f09002081dbce1ce Mon Sep 17 00:00:00 2001 From: Maxime NATUREL <maxime.naturel@niji.fr> Date: Thu, 1 Sep 2022 14:20:58 +0200 Subject: [PATCH 46/57] Updating existing unit tests --- .../v2/overview/GetDeviceFullInfoUseCase.kt | 1 - .../overview/GetDeviceFullInfoUseCaseTest.kt | 41 ++++++++++++++++++- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/GetDeviceFullInfoUseCase.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/GetDeviceFullInfoUseCase.kt index 51252de34a..3cde519385 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/GetDeviceFullInfoUseCase.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/GetDeviceFullInfoUseCase.kt @@ -28,7 +28,6 @@ import org.matrix.android.sdk.api.util.Optional import org.matrix.android.sdk.api.util.toOptional import javax.inject.Inject -// TODO update unit test class GetDeviceFullInfoUseCase @Inject constructor( private val activeSessionHolder: ActiveSessionHolder, private val getCurrentSessionCrossSigningInfoUseCase: GetCurrentSessionCrossSigningInfoUseCase, diff --git a/vector/src/test/java/im/vector/app/features/settings/devices/v2/overview/GetDeviceFullInfoUseCaseTest.kt b/vector/src/test/java/im/vector/app/features/settings/devices/v2/overview/GetDeviceFullInfoUseCaseTest.kt index 32d7b6edfe..3d56f4ff11 100644 --- a/vector/src/test/java/im/vector/app/features/settings/devices/v2/overview/GetDeviceFullInfoUseCaseTest.kt +++ b/vector/src/test/java/im/vector/app/features/settings/devices/v2/overview/GetDeviceFullInfoUseCaseTest.kt @@ -18,10 +18,15 @@ package im.vector.app.features.settings.devices.v2.overview import androidx.lifecycle.MutableLiveData import androidx.lifecycle.asFlow +import im.vector.app.features.settings.devices.CurrentSessionCrossSigningInfo import im.vector.app.features.settings.devices.DeviceFullInfo +import im.vector.app.features.settings.devices.GetCurrentSessionCrossSigningInfoUseCase +import im.vector.app.features.settings.devices.GetEncryptionTrustLevelForDeviceUseCase import im.vector.app.test.fakes.FakeActiveSessionHolder import im.vector.app.test.fakes.FakeFlowLiveDataConversions import im.vector.app.test.fakes.givenAsFlow +import io.mockk.every +import io.mockk.mockk import io.mockk.unmockkAll import io.mockk.verify import kotlinx.coroutines.flow.firstOrNull @@ -32,6 +37,7 @@ import org.junit.Before import org.junit.Test import org.matrix.android.sdk.api.session.crypto.model.CryptoDeviceInfo import org.matrix.android.sdk.api.session.crypto.model.DeviceInfo +import org.matrix.android.sdk.api.session.crypto.model.RoomEncryptionTrustLevel import org.matrix.android.sdk.api.util.Optional private const val A_DEVICE_ID = "device-id" @@ -39,10 +45,14 @@ private const val A_DEVICE_ID = "device-id" class GetDeviceFullInfoUseCaseTest { private val fakeActiveSessionHolder = FakeActiveSessionHolder() + private val getCurrentSessionCrossSigningInfoUseCase = mockk<GetCurrentSessionCrossSigningInfoUseCase>() + private val getEncryptionTrustLevelForDeviceUseCase = mockk<GetEncryptionTrustLevelForDeviceUseCase>() private val fakeFlowLiveDataConversions = FakeFlowLiveDataConversions() private val getDeviceFullInfoUseCase = GetDeviceFullInfoUseCase( - activeSessionHolder = fakeActiveSessionHolder.instance + activeSessionHolder = fakeActiveSessionHolder.instance, + getCurrentSessionCrossSigningInfoUseCase = getCurrentSessionCrossSigningInfoUseCase, + getEncryptionTrustLevelForDeviceUseCase = getEncryptionTrustLevelForDeviceUseCase ) @Before @@ -57,23 +67,34 @@ class GetDeviceFullInfoUseCaseTest { @Test fun `given an active session and info for device when getting device info then the result is correct`() = runTest { + val currentSessionCrossSigningInfo = givenCurrentSessionCrossSigningInfo() val deviceInfo = DeviceInfo() fakeActiveSessionHolder.fakeSession.fakeCryptoService.myDevicesInfoWithIdLiveData = MutableLiveData(Optional(deviceInfo)) fakeActiveSessionHolder.fakeSession.fakeCryptoService.myDevicesInfoWithIdLiveData.givenAsFlow() val cryptoDeviceInfo = CryptoDeviceInfo(deviceId = A_DEVICE_ID, userId = "") fakeActiveSessionHolder.fakeSession.fakeCryptoService.cryptoDeviceInfoWithIdLiveData = MutableLiveData(Optional(cryptoDeviceInfo)) fakeActiveSessionHolder.fakeSession.fakeCryptoService.cryptoDeviceInfoWithIdLiveData.givenAsFlow() + val trustLevel = givenTrustLevel(currentSessionCrossSigningInfo, cryptoDeviceInfo) val deviceFullInfo = getDeviceFullInfoUseCase.execute(A_DEVICE_ID).firstOrNull() - deviceFullInfo shouldBeEqualTo Optional(DeviceFullInfo(deviceInfo = deviceInfo, cryptoDeviceInfo = cryptoDeviceInfo)) + deviceFullInfo shouldBeEqualTo Optional( + DeviceFullInfo( + deviceInfo = deviceInfo, + cryptoDeviceInfo = cryptoDeviceInfo, + trustLevelForShield = trustLevel + ) + ) verify { fakeActiveSessionHolder.instance.getSafeActiveSession() } + verify { getCurrentSessionCrossSigningInfoUseCase.execute() } + verify { getEncryptionTrustLevelForDeviceUseCase.execute(currentSessionCrossSigningInfo, cryptoDeviceInfo) } verify { fakeActiveSessionHolder.fakeSession.fakeCryptoService.getMyDevicesInfoLive(A_DEVICE_ID).asFlow() } verify { fakeActiveSessionHolder.fakeSession.fakeCryptoService.getLiveCryptoDeviceInfoWithId(A_DEVICE_ID).asFlow() } } @Test fun `given an active session and no info for device when getting device info then the result is null`() = runTest { + givenCurrentSessionCrossSigningInfo() fakeActiveSessionHolder.fakeSession.fakeCryptoService.myDevicesInfoWithIdLiveData = MutableLiveData(Optional(null)) fakeActiveSessionHolder.fakeSession.fakeCryptoService.myDevicesInfoWithIdLiveData.givenAsFlow() fakeActiveSessionHolder.fakeSession.fakeCryptoService.cryptoDeviceInfoWithIdLiveData = MutableLiveData(Optional(null)) @@ -96,4 +117,20 @@ class GetDeviceFullInfoUseCaseTest { deviceFullInfo shouldBeEqualTo null verify { fakeActiveSessionHolder.instance.getSafeActiveSession() } } + + private fun givenCurrentSessionCrossSigningInfo(): CurrentSessionCrossSigningInfo { + val currentSessionCrossSigningInfo = CurrentSessionCrossSigningInfo( + deviceId = A_DEVICE_ID, + isCrossSigningInitialized = true, + isCrossSigningVerified = false + ) + every { getCurrentSessionCrossSigningInfoUseCase.execute() } returns currentSessionCrossSigningInfo + return currentSessionCrossSigningInfo + } + + private fun givenTrustLevel(currentSessionCrossSigningInfo: CurrentSessionCrossSigningInfo, cryptoDeviceInfo: CryptoDeviceInfo?): RoomEncryptionTrustLevel { + val trustLevel = RoomEncryptionTrustLevel.Trusted + every { getEncryptionTrustLevelForDeviceUseCase.execute(currentSessionCrossSigningInfo, cryptoDeviceInfo) } returns trustLevel + return trustLevel + } } From 38a04c3655d44876d3d2d8fc220e887b4468727d Mon Sep 17 00:00:00 2001 From: Maxime NATUREL <maxime.naturel@niji.fr> Date: Thu, 1 Sep 2022 14:40:40 +0200 Subject: [PATCH 47/57] Unit tests for GetCurrentSessionCrossSigningInfoUseCase --- ...etCurrentSessionCrossSigningInfoUseCase.kt | 1 - ...rrentSessionCrossSigningInfoUseCaseTest.kt | 62 +++++++++++++++++++ .../app/test/fakes/FakeCrossSigningService.kt | 32 ++++++++++ .../app/test/fakes/FakeCryptoService.kt | 6 +- 4 files changed, 99 insertions(+), 2 deletions(-) create mode 100644 vector/src/test/java/im/vector/app/features/settings/devices/GetCurrentSessionCrossSigningInfoUseCaseTest.kt create mode 100644 vector/src/test/java/im/vector/app/test/fakes/FakeCrossSigningService.kt diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/GetCurrentSessionCrossSigningInfoUseCase.kt b/vector/src/main/java/im/vector/app/features/settings/devices/GetCurrentSessionCrossSigningInfoUseCase.kt index aa0de9ddf1..d07bd5daae 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/GetCurrentSessionCrossSigningInfoUseCase.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/GetCurrentSessionCrossSigningInfoUseCase.kt @@ -19,7 +19,6 @@ package im.vector.app.features.settings.devices import im.vector.app.core.di.ActiveSessionHolder import javax.inject.Inject -// TODO add unit tests class GetCurrentSessionCrossSigningInfoUseCase @Inject constructor( private val activeSessionHolder: ActiveSessionHolder, ) { diff --git a/vector/src/test/java/im/vector/app/features/settings/devices/GetCurrentSessionCrossSigningInfoUseCaseTest.kt b/vector/src/test/java/im/vector/app/features/settings/devices/GetCurrentSessionCrossSigningInfoUseCaseTest.kt new file mode 100644 index 0000000000..f3684fd8cf --- /dev/null +++ b/vector/src/test/java/im/vector/app/features/settings/devices/GetCurrentSessionCrossSigningInfoUseCaseTest.kt @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2022 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.app.features.settings.devices + +import im.vector.app.test.fakes.FakeActiveSessionHolder +import io.mockk.every +import io.mockk.mockk +import kotlinx.coroutines.test.runTest +import org.amshove.kluent.shouldBeEqualTo +import org.junit.Test +import org.matrix.android.sdk.api.auth.data.SessionParams + +private const val A_DEVICE_ID = "device-id" + +class GetCurrentSessionCrossSigningInfoUseCaseTest { + + private val fakeActiveSessionHolder = FakeActiveSessionHolder() + + private val getCurrentSessionCrossSigningInfoUseCase = GetCurrentSessionCrossSigningInfoUseCase( + activeSessionHolder = fakeActiveSessionHolder.instance + ) + + @Test + fun `given the active session when getting cross signing info then the result is correct`() = runTest { + val sessionParams = mockk<SessionParams>() + every { sessionParams.deviceId } returns A_DEVICE_ID + fakeActiveSessionHolder.fakeSession.givenSessionParams(sessionParams) + val isCrossSigningInitialized = true + fakeActiveSessionHolder.fakeSession + .fakeCryptoService + .fakeCrossSigningService + .givenIsCrossSigningInitializedReturns(isCrossSigningInitialized) + val isCrossSigningVerified = true + fakeActiveSessionHolder.fakeSession + .fakeCryptoService + .fakeCrossSigningService + .givenIsCrossSigningVerifiedReturns(isCrossSigningVerified) + val expectedResult = CurrentSessionCrossSigningInfo( + deviceId = A_DEVICE_ID, + isCrossSigningInitialized = isCrossSigningInitialized, + isCrossSigningVerified = isCrossSigningVerified + ) + + val result = getCurrentSessionCrossSigningInfoUseCase.execute() + + result shouldBeEqualTo expectedResult + } +} diff --git a/vector/src/test/java/im/vector/app/test/fakes/FakeCrossSigningService.kt b/vector/src/test/java/im/vector/app/test/fakes/FakeCrossSigningService.kt new file mode 100644 index 0000000000..e9a5365b1c --- /dev/null +++ b/vector/src/test/java/im/vector/app/test/fakes/FakeCrossSigningService.kt @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2022 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.app.test.fakes + +import io.mockk.every +import io.mockk.mockk +import org.matrix.android.sdk.api.session.crypto.crosssigning.CrossSigningService + +class FakeCrossSigningService : CrossSigningService by mockk() { + + fun givenIsCrossSigningInitializedReturns(isInitialized: Boolean) { + every { isCrossSigningInitialized() } returns isInitialized + } + + fun givenIsCrossSigningVerifiedReturns(isVerified: Boolean) { + every { isCrossSigningVerified() } returns isVerified + } +} diff --git a/vector/src/test/java/im/vector/app/test/fakes/FakeCryptoService.kt b/vector/src/test/java/im/vector/app/test/fakes/FakeCryptoService.kt index 2c31933464..197ccf4cd2 100644 --- a/vector/src/test/java/im/vector/app/test/fakes/FakeCryptoService.kt +++ b/vector/src/test/java/im/vector/app/test/fakes/FakeCryptoService.kt @@ -23,13 +23,17 @@ import org.matrix.android.sdk.api.session.crypto.model.CryptoDeviceInfo import org.matrix.android.sdk.api.session.crypto.model.DeviceInfo import org.matrix.android.sdk.api.util.Optional -class FakeCryptoService : CryptoService by mockk() { +class FakeCryptoService( + val fakeCrossSigningService: FakeCrossSigningService = FakeCrossSigningService() +) : CryptoService by mockk() { var roomKeysExport = ByteArray(size = 1) var cryptoDeviceInfos = mutableMapOf<String, CryptoDeviceInfo>() var cryptoDeviceInfoWithIdLiveData: MutableLiveData<Optional<CryptoDeviceInfo>> = MutableLiveData() var myDevicesInfoWithIdLiveData: MutableLiveData<Optional<DeviceInfo>> = MutableLiveData() + override fun crossSigningService() = fakeCrossSigningService + override suspend fun exportRoomKeys(password: String) = roomKeysExport override fun getLiveCryptoDeviceInfo() = MutableLiveData(cryptoDeviceInfos.values.toList()) From fde7072bc78961abaab6689471af268df1247cd8 Mon Sep 17 00:00:00 2001 From: Maxime NATUREL <maxime.naturel@niji.fr> Date: Thu, 1 Sep 2022 16:11:38 +0200 Subject: [PATCH 48/57] Unit tests for computing trust level of device --- ...yptionTrustLevelForCurrentDeviceUseCase.kt | 1 - ...GetEncryptionTrustLevelForDeviceUseCase.kt | 1 - ...cryptionTrustLevelForOtherDeviceUseCase.kt | 1 - ...rrentSessionCrossSigningInfoUseCaseTest.kt | 3 +- ...onTrustLevelForCurrentDeviceUseCaseTest.kt | 56 +++++++++ ...ncryptionTrustLevelForDeviceUseCaseTest.kt | 114 ++++++++++++++++++ ...tionTrustLevelForOtherDeviceUseCaseTest.kt | 100 +++++++++++++++ .../overview/SessionOverviewViewModelTest.kt | 3 +- 8 files changed, 272 insertions(+), 7 deletions(-) create mode 100644 vector/src/test/java/im/vector/app/features/settings/devices/GetEncryptionTrustLevelForCurrentDeviceUseCaseTest.kt create mode 100644 vector/src/test/java/im/vector/app/features/settings/devices/GetEncryptionTrustLevelForDeviceUseCaseTest.kt create mode 100644 vector/src/test/java/im/vector/app/features/settings/devices/GetEncryptionTrustLevelForOtherDeviceUseCaseTest.kt diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/GetEncryptionTrustLevelForCurrentDeviceUseCase.kt b/vector/src/main/java/im/vector/app/features/settings/devices/GetEncryptionTrustLevelForCurrentDeviceUseCase.kt index eaa72b424a..0d30aba318 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/GetEncryptionTrustLevelForCurrentDeviceUseCase.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/GetEncryptionTrustLevelForCurrentDeviceUseCase.kt @@ -19,7 +19,6 @@ package im.vector.app.features.settings.devices import org.matrix.android.sdk.api.session.crypto.model.RoomEncryptionTrustLevel import javax.inject.Inject -// TODO add unit tests class GetEncryptionTrustLevelForCurrentDeviceUseCase @Inject constructor() { fun execute(trustMSK: Boolean, legacyMode: Boolean): RoomEncryptionTrustLevel { diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/GetEncryptionTrustLevelForDeviceUseCase.kt b/vector/src/main/java/im/vector/app/features/settings/devices/GetEncryptionTrustLevelForDeviceUseCase.kt index d988f728ae..e5ef4b446b 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/GetEncryptionTrustLevelForDeviceUseCase.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/GetEncryptionTrustLevelForDeviceUseCase.kt @@ -20,7 +20,6 @@ import org.matrix.android.sdk.api.session.crypto.model.CryptoDeviceInfo import org.matrix.android.sdk.api.session.crypto.model.RoomEncryptionTrustLevel import javax.inject.Inject -// TODO add unit tests class GetEncryptionTrustLevelForDeviceUseCase @Inject constructor( private val getEncryptionTrustLevelForCurrentDeviceUseCase: GetEncryptionTrustLevelForCurrentDeviceUseCase, private val getEncryptionTrustLevelForOtherDeviceUseCase: GetEncryptionTrustLevelForOtherDeviceUseCase, diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/GetEncryptionTrustLevelForOtherDeviceUseCase.kt b/vector/src/main/java/im/vector/app/features/settings/devices/GetEncryptionTrustLevelForOtherDeviceUseCase.kt index 41cdae23a4..11bc3a8ede 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/GetEncryptionTrustLevelForOtherDeviceUseCase.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/GetEncryptionTrustLevelForOtherDeviceUseCase.kt @@ -20,7 +20,6 @@ import org.matrix.android.sdk.api.session.crypto.crosssigning.DeviceTrustLevel import org.matrix.android.sdk.api.session.crypto.model.RoomEncryptionTrustLevel import javax.inject.Inject -// TODO add unit tests class GetEncryptionTrustLevelForOtherDeviceUseCase @Inject constructor() { fun execute(trustMSK: Boolean, legacyMode: Boolean, deviceTrustLevel: DeviceTrustLevel?): RoomEncryptionTrustLevel { diff --git a/vector/src/test/java/im/vector/app/features/settings/devices/GetCurrentSessionCrossSigningInfoUseCaseTest.kt b/vector/src/test/java/im/vector/app/features/settings/devices/GetCurrentSessionCrossSigningInfoUseCaseTest.kt index f3684fd8cf..7c8ee008eb 100644 --- a/vector/src/test/java/im/vector/app/features/settings/devices/GetCurrentSessionCrossSigningInfoUseCaseTest.kt +++ b/vector/src/test/java/im/vector/app/features/settings/devices/GetCurrentSessionCrossSigningInfoUseCaseTest.kt @@ -19,7 +19,6 @@ package im.vector.app.features.settings.devices import im.vector.app.test.fakes.FakeActiveSessionHolder import io.mockk.every import io.mockk.mockk -import kotlinx.coroutines.test.runTest import org.amshove.kluent.shouldBeEqualTo import org.junit.Test import org.matrix.android.sdk.api.auth.data.SessionParams @@ -35,7 +34,7 @@ class GetCurrentSessionCrossSigningInfoUseCaseTest { ) @Test - fun `given the active session when getting cross signing info then the result is correct`() = runTest { + fun `given the active session when getting cross signing info then the result is correct`() { val sessionParams = mockk<SessionParams>() every { sessionParams.deviceId } returns A_DEVICE_ID fakeActiveSessionHolder.fakeSession.givenSessionParams(sessionParams) diff --git a/vector/src/test/java/im/vector/app/features/settings/devices/GetEncryptionTrustLevelForCurrentDeviceUseCaseTest.kt b/vector/src/test/java/im/vector/app/features/settings/devices/GetEncryptionTrustLevelForCurrentDeviceUseCaseTest.kt new file mode 100644 index 0000000000..830eab5dcb --- /dev/null +++ b/vector/src/test/java/im/vector/app/features/settings/devices/GetEncryptionTrustLevelForCurrentDeviceUseCaseTest.kt @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2022 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.app.features.settings.devices + +import org.amshove.kluent.shouldBeEqualTo +import org.junit.Test +import org.matrix.android.sdk.api.session.crypto.model.RoomEncryptionTrustLevel + +class GetEncryptionTrustLevelForCurrentDeviceUseCaseTest { + + private val getEncryptionTrustLevelForCurrentDeviceUseCase = GetEncryptionTrustLevelForCurrentDeviceUseCase() + + @Test + fun `given in legacy mode when computing trust level then device is trusted`() { + val trustMSK = false + val legacyMode = true + + val result = getEncryptionTrustLevelForCurrentDeviceUseCase.execute(trustMSK = trustMSK, legacyMode = legacyMode) + + result shouldBeEqualTo RoomEncryptionTrustLevel.Trusted + } + + @Test + fun `given trustMSK is true and not in legacy mode when computing trust level then device is trusted`() { + val trustMSK = true + val legacyMode = false + + val result = getEncryptionTrustLevelForCurrentDeviceUseCase.execute(trustMSK = trustMSK, legacyMode = legacyMode) + + result shouldBeEqualTo RoomEncryptionTrustLevel.Trusted + } + + @Test + fun `given trustMSK is false and not in legacy mode when computing trust level then device is unverified`() { + val trustMSK = false + val legacyMode = false + + val result = getEncryptionTrustLevelForCurrentDeviceUseCase.execute(trustMSK = trustMSK, legacyMode = legacyMode) + + result shouldBeEqualTo RoomEncryptionTrustLevel.Warning + } +} diff --git a/vector/src/test/java/im/vector/app/features/settings/devices/GetEncryptionTrustLevelForDeviceUseCaseTest.kt b/vector/src/test/java/im/vector/app/features/settings/devices/GetEncryptionTrustLevelForDeviceUseCaseTest.kt new file mode 100644 index 0000000000..8d54b31ab4 --- /dev/null +++ b/vector/src/test/java/im/vector/app/features/settings/devices/GetEncryptionTrustLevelForDeviceUseCaseTest.kt @@ -0,0 +1,114 @@ +/* + * Copyright (c) 2022 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.app.features.settings.devices + +import io.mockk.every +import io.mockk.mockk +import io.mockk.verify +import org.amshove.kluent.shouldBeEqualTo +import org.junit.Test +import org.matrix.android.sdk.api.session.crypto.crosssigning.DeviceTrustLevel +import org.matrix.android.sdk.api.session.crypto.model.CryptoDeviceInfo +import org.matrix.android.sdk.api.session.crypto.model.RoomEncryptionTrustLevel + +private const val A_DEVICE_ID = "device-id" +private const val A_DEVICE_ID_2 = "device-id-2" + +class GetEncryptionTrustLevelForDeviceUseCaseTest { + + private val getEncryptionTrustLevelForCurrentDeviceUseCase = mockk<GetEncryptionTrustLevelForCurrentDeviceUseCase>() + private val getEncryptionTrustLevelForOtherDeviceUseCase = mockk<GetEncryptionTrustLevelForOtherDeviceUseCase>() + + private val getEncryptionTrustLevelForDeviceUseCase = GetEncryptionTrustLevelForDeviceUseCase( + getEncryptionTrustLevelForCurrentDeviceUseCase = getEncryptionTrustLevelForCurrentDeviceUseCase, + getEncryptionTrustLevelForOtherDeviceUseCase = getEncryptionTrustLevelForOtherDeviceUseCase, + ) + + @Test + fun `given is current device when computing trust level then the correct sub use case result is returned`() { + val currentSessionCrossSigningInfo = givenCurrentSessionCrossSigningInfo( + deviceId = A_DEVICE_ID, + isCrossSigningInitialized = true, + isCrossSigningVerified = false + ) + val cryptoDeviceInfo = givenCryptoDeviceInfo( + deviceId = A_DEVICE_ID, + trustLevel = null + ) + val trustLevel = RoomEncryptionTrustLevel.Trusted + every { getEncryptionTrustLevelForCurrentDeviceUseCase.execute(any(), any()) } returns trustLevel + + val result = getEncryptionTrustLevelForDeviceUseCase.execute(currentSessionCrossSigningInfo, cryptoDeviceInfo) + + result shouldBeEqualTo trustLevel + verify { + getEncryptionTrustLevelForCurrentDeviceUseCase.execute( + trustMSK = currentSessionCrossSigningInfo.isCrossSigningVerified, + legacyMode = !currentSessionCrossSigningInfo.isCrossSigningInitialized + ) + } + } + + @Test + fun `given is not current device when computing trust level then the correct sub use case result is returned`() { + val currentSessionCrossSigningInfo = givenCurrentSessionCrossSigningInfo( + deviceId = A_DEVICE_ID, + isCrossSigningInitialized = true, + isCrossSigningVerified = false + ) + val cryptoDeviceInfo = givenCryptoDeviceInfo( + deviceId = A_DEVICE_ID_2, + trustLevel = null + ) + val trustLevel = RoomEncryptionTrustLevel.Trusted + every { getEncryptionTrustLevelForOtherDeviceUseCase.execute(any(), any(), any()) } returns trustLevel + + val result = getEncryptionTrustLevelForDeviceUseCase.execute(currentSessionCrossSigningInfo, cryptoDeviceInfo) + + result shouldBeEqualTo trustLevel + verify { + getEncryptionTrustLevelForOtherDeviceUseCase.execute( + trustMSK = currentSessionCrossSigningInfo.isCrossSigningVerified, + legacyMode = !currentSessionCrossSigningInfo.isCrossSigningInitialized, + deviceTrustLevel = cryptoDeviceInfo.trustLevel + ) + } + } + + private fun givenCurrentSessionCrossSigningInfo( + deviceId: String?, + isCrossSigningInitialized: Boolean, + isCrossSigningVerified: Boolean + ): CurrentSessionCrossSigningInfo { + return CurrentSessionCrossSigningInfo( + deviceId = deviceId, + isCrossSigningInitialized = isCrossSigningInitialized, + isCrossSigningVerified = isCrossSigningVerified + ) + } + + private fun givenCryptoDeviceInfo( + deviceId: String, + trustLevel: DeviceTrustLevel? + ): CryptoDeviceInfo { + return CryptoDeviceInfo( + userId = "", + deviceId = deviceId, + trustLevel = trustLevel + ) + } +} diff --git a/vector/src/test/java/im/vector/app/features/settings/devices/GetEncryptionTrustLevelForOtherDeviceUseCaseTest.kt b/vector/src/test/java/im/vector/app/features/settings/devices/GetEncryptionTrustLevelForOtherDeviceUseCaseTest.kt new file mode 100644 index 0000000000..9dc87c2a16 --- /dev/null +++ b/vector/src/test/java/im/vector/app/features/settings/devices/GetEncryptionTrustLevelForOtherDeviceUseCaseTest.kt @@ -0,0 +1,100 @@ +/* + * Copyright (c) 2022 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.app.features.settings.devices + +import org.amshove.kluent.shouldBeEqualTo +import org.junit.Test +import org.matrix.android.sdk.api.session.crypto.crosssigning.DeviceTrustLevel +import org.matrix.android.sdk.api.session.crypto.model.RoomEncryptionTrustLevel + +class GetEncryptionTrustLevelForOtherDeviceUseCaseTest { + + private val getEncryptionTrustLevelForOtherDeviceUseCase = GetEncryptionTrustLevelForOtherDeviceUseCase() + + @Test + fun `given in legacy mode and device locally verified when computing trust level then device is trusted`() { + val trustMSK = false + val legacyMode = true + val deviceTrustLevel = givenDeviceTrustLevel(locallyVerified = true, crossSigningVerified = false) + + val result = getEncryptionTrustLevelForOtherDeviceUseCase.execute(trustMSK = trustMSK, legacyMode = legacyMode, deviceTrustLevel = deviceTrustLevel) + + result shouldBeEqualTo RoomEncryptionTrustLevel.Trusted + } + + @Test + fun `given in legacy mode and device not locally verified when computing trust level then device is unverified`() { + val trustMSK = false + val legacyMode = true + val deviceTrustLevel = givenDeviceTrustLevel(locallyVerified = false, crossSigningVerified = false) + + val result = getEncryptionTrustLevelForOtherDeviceUseCase.execute(trustMSK = trustMSK, legacyMode = legacyMode, deviceTrustLevel = deviceTrustLevel) + + result shouldBeEqualTo RoomEncryptionTrustLevel.Warning + } + + @Test + fun `given trustMSK is true and not in legacy mode and device cross signing verified when computing trust level then device is trusted`() { + val trustMSK = true + val legacyMode = false + val deviceTrustLevel = givenDeviceTrustLevel(locallyVerified = false, crossSigningVerified = true) + + val result = getEncryptionTrustLevelForOtherDeviceUseCase.execute(trustMSK = trustMSK, legacyMode = legacyMode, deviceTrustLevel = deviceTrustLevel) + + result shouldBeEqualTo RoomEncryptionTrustLevel.Trusted + } + + @Test + fun `given trustMSK is true and not in legacy mode and device locally verified when computing trust level then device has default trust level`() { + val trustMSK = true + val legacyMode = false + val deviceTrustLevel = givenDeviceTrustLevel(locallyVerified = true, crossSigningVerified = false) + + val result = getEncryptionTrustLevelForOtherDeviceUseCase.execute(trustMSK = trustMSK, legacyMode = legacyMode, deviceTrustLevel = deviceTrustLevel) + + result shouldBeEqualTo RoomEncryptionTrustLevel.Default + } + + @Test + fun `given trustMSK is true and not in legacy mode and device not verified when computing trust level then device is unverified`() { + val trustMSK = true + val legacyMode = false + val deviceTrustLevel = givenDeviceTrustLevel(locallyVerified = false, crossSigningVerified = false) + + val result = getEncryptionTrustLevelForOtherDeviceUseCase.execute(trustMSK = trustMSK, legacyMode = legacyMode, deviceTrustLevel = deviceTrustLevel) + + result shouldBeEqualTo RoomEncryptionTrustLevel.Warning + } + + @Test + fun `given trustMSK is false and not in legacy mode when computing trust level then device has default trust level`() { + val trustMSK = false + val legacyMode = false + val deviceTrustLevel = givenDeviceTrustLevel(locallyVerified = false, crossSigningVerified = false) + + val result = getEncryptionTrustLevelForOtherDeviceUseCase.execute(trustMSK = trustMSK, legacyMode = legacyMode, deviceTrustLevel = deviceTrustLevel) + + result shouldBeEqualTo RoomEncryptionTrustLevel.Default + } + + private fun givenDeviceTrustLevel(locallyVerified: Boolean?, crossSigningVerified: Boolean): DeviceTrustLevel { + return DeviceTrustLevel( + crossSigningVerified = crossSigningVerified, + locallyVerified = locallyVerified + ) + } +} diff --git a/vector/src/test/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewModelTest.kt b/vector/src/test/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewModelTest.kt index f15bc0860c..10b1c0fdb1 100644 --- a/vector/src/test/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewModelTest.kt +++ b/vector/src/test/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewModelTest.kt @@ -26,7 +26,6 @@ import io.mockk.mockk import io.mockk.verify import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.test.UnconfinedTestDispatcher -import kotlinx.coroutines.test.runTest import org.junit.Rule import org.junit.Test import org.matrix.android.sdk.api.auth.data.SessionParams @@ -52,7 +51,7 @@ class SessionOverviewViewModelTest { ) @Test - fun `given the viewModel has been initialized then viewState is updated with session info`() = runTest { + fun `given the viewModel has been initialized then viewState is updated with session info`() { val sessionParams = givenIdForSession(A_SESSION_ID) val deviceFullInfo = mockk<DeviceFullInfo>() every { getDeviceFullInfoUseCase.execute(A_SESSION_ID) } returns flowOf(Optional(deviceFullInfo)) From d12bb09273b09f174cff5fd954e3a6b458bf1e26 Mon Sep 17 00:00:00 2001 From: Maxime NATUREL <maxime.naturel@niji.fr> Date: Thu, 1 Sep 2022 17:46:15 +0200 Subject: [PATCH 49/57] Adding learn more link in verification status details --- .../devices/v2/list/SessionInfoView.kt | 35 +++++++++++++++++-- .../devices/v2/list/SessionInfoViewState.kt | 1 + .../v2/overview/SessionOverviewFragment.kt | 26 +++++++++++++- 3 files changed, 59 insertions(+), 3 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/SessionInfoView.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/SessionInfoView.kt index be6cfad1c8..536184faec 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/SessionInfoView.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/SessionInfoView.kt @@ -21,6 +21,7 @@ import android.util.AttributeSet import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.view.isVisible import im.vector.app.R +import im.vector.app.core.extensions.setTextWithColoredPart import im.vector.app.databinding.ViewSessionInfoBinding import im.vector.app.features.themes.ThemeUtils import org.matrix.android.sdk.api.session.crypto.model.RoomEncryptionTrustLevel @@ -33,6 +34,8 @@ class SessionInfoView @JvmOverloads constructor( private val views: ViewSessionInfoBinding + var onLearnMoreClickListener: (() -> Unit)? = null + init { inflate(context, R.layout.view_session_info, this) views = ViewSessionInfoBinding.bind(this) @@ -42,17 +45,45 @@ class SessionInfoView @JvmOverloads constructor( fun render(sessionInfoViewState: SessionInfoViewState) { renderDeviceInfo(sessionInfoViewState.deviceFullInfo.deviceInfo.displayName.orEmpty()) - renderVerificationStatus(sessionInfoViewState.deviceFullInfo.trustLevelForShield, sessionInfoViewState.isCurrentSession) + renderVerificationStatus( + sessionInfoViewState.deviceFullInfo.trustLevelForShield, + sessionInfoViewState.isCurrentSession, + sessionInfoViewState.hasLearnMoreLink + ) renderDetailsButton(sessionInfoViewState.isDetailsButtonVisible) } - private fun renderVerificationStatus(encryptionTrustLevel: RoomEncryptionTrustLevel, isCurrentSession: Boolean) { + private fun renderVerificationStatus( + encryptionTrustLevel: RoomEncryptionTrustLevel, + isCurrentSession: Boolean, + hasLearnMoreLink: Boolean, + ) { views.sessionInfoVerificationStatusImageView.render(encryptionTrustLevel) if (encryptionTrustLevel == RoomEncryptionTrustLevel.Trusted) { renderCrossSigningVerified(isCurrentSession) } else { renderCrossSigningUnverified(isCurrentSession) } + if (hasLearnMoreLink) { + appendLearnMoreToVerificationStatus() + } + } + + private fun appendLearnMoreToVerificationStatus() { + val status = views.sessionInfoVerificationStatusDetailTextView.text + val learnMore = context.getString(R.string.action_learn_more) + val stringBuilder = StringBuilder() + stringBuilder.append(status) + stringBuilder.append(" ") + stringBuilder.append(learnMore) + + views.sessionInfoVerificationStatusDetailTextView.setTextWithColoredPart( + fullText = stringBuilder.toString(), + coloredPart = learnMore, + underline = false + ) { + onLearnMoreClickListener?.invoke() + } } private fun renderCrossSigningVerified(isCurrentSession: Boolean) { diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/SessionInfoViewState.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/SessionInfoViewState.kt index c9a351f568..cf7c6f0ae8 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/SessionInfoViewState.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/SessionInfoViewState.kt @@ -22,4 +22,5 @@ data class SessionInfoViewState( val isCurrentSession: Boolean, val deviceFullInfo: DeviceFullInfo, val isDetailsButtonVisible: Boolean = true, + val hasLearnMoreLink: Boolean = false ) diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewFragment.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewFragment.kt index 60d58c8a8d..eb2a3aa93f 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewFragment.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewFragment.kt @@ -16,8 +16,11 @@ package im.vector.app.features.settings.devices.v2.overview +import android.os.Bundle import android.view.LayoutInflater +import android.view.View import android.view.ViewGroup +import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import androidx.core.view.isGone import androidx.core.view.isVisible @@ -44,6 +47,26 @@ class SessionOverviewFragment : return FragmentSessionOverviewBinding.inflate(inflater, container, false) } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + initSessionInfoView() + } + + private fun initSessionInfoView() { + views.sessionOverviewInfo.onLearnMoreClickListener = { + Toast.makeText(context, "Learn more verification status", Toast.LENGTH_LONG).show() + } + } + + override fun onDestroyView() { + cleanUpSessionInfoView() + super.onDestroyView() + } + + private fun cleanUpSessionInfoView() { + views.sessionOverviewInfo.onLearnMoreClickListener = null + } + override fun invalidate() = withState(viewModel) { state -> updateToolbar(state.isCurrentSession) if (state.deviceInfo is Success) { @@ -65,7 +88,8 @@ class SessionOverviewFragment : val viewState = SessionInfoViewState( isCurrentSession = isCurrentSession, deviceFullInfo = deviceFullInfo, - isDetailsButtonVisible = false + isDetailsButtonVisible = false, + hasLearnMoreLink = true ) views.sessionOverviewInfo.render(viewState) } From 1ad585e1546def6504ce10a9141da18996fddf49 Mon Sep 17 00:00:00 2001 From: Maxime NATUREL <maxime.naturel@niji.fr> Date: Fri, 2 Sep 2022 10:02:54 +0200 Subject: [PATCH 50/57] Adding last seen details + fix observation of wrong deviceId in ViewModel --- .../src/main/res/values/strings.xml | 1 + .../v2/VectorSettingsDevicesFragment.kt | 9 +++-- .../v2/VectorSettingsDevicesViewNavigator.kt | 4 +-- .../devices/v2/list/SessionInfoView.kt | 36 +++++++++++++++++-- .../devices/v2/list/SessionInfoViewState.kt | 3 +- .../v2/overview/SessionOverviewActivity.kt | 4 +-- .../v2/overview/SessionOverviewArgs.kt | 2 +- .../v2/overview/SessionOverviewFragment.kt | 9 +++-- .../v2/overview/SessionOverviewViewModel.kt | 4 +-- .../v2/overview/SessionOverviewViewState.kt | 4 +-- .../src/main/res/layout/view_session_info.xml | 31 +++++++++++++++- .../overview/SessionOverviewViewModelTest.kt | 4 +-- 12 files changed, 91 insertions(+), 20 deletions(-) diff --git a/library/ui-strings/src/main/res/values/strings.xml b/library/ui-strings/src/main/res/values/strings.xml index e1c03da532..4035323332 100644 --- a/library/ui-strings/src/main/res/values/strings.xml +++ b/library/ui-strings/src/main/res/values/strings.xml @@ -3256,6 +3256,7 @@ </plurals> <string name="device_manager_current_session_title">Current Session</string> <string name="device_manager_session_title">Session</string> + <string name="device_manager_session_last_activity">Last activity %1$s</string> <!-- Note to translators: %s will be replaces with selected space name --> <string name="home_empty_space_no_rooms_title">%s\nis looking a little empty.</string> diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/VectorSettingsDevicesFragment.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/VectorSettingsDevicesFragment.kt index f7f6ca6db4..2262f083da 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/VectorSettingsDevicesFragment.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/VectorSettingsDevicesFragment.kt @@ -31,6 +31,7 @@ import com.airbnb.mvrx.fragmentViewModel import com.airbnb.mvrx.withState import dagger.hilt.android.AndroidEntryPoint import im.vector.app.R +import im.vector.app.core.date.VectorDateFormatter import im.vector.app.core.dialogs.ManuallyVerifyDialog import im.vector.app.core.platform.VectorBaseFragment import im.vector.app.databinding.FragmentSettingsDevicesBinding @@ -55,6 +56,8 @@ class VectorSettingsDevicesFragment : @Inject lateinit var viewNavigator: VectorSettingsDevicesViewNavigator + @Inject lateinit var dateFormatter: VectorDateFormatter + private val viewModel: DevicesViewModel by fragmentViewModel() override fun getBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentSettingsDevicesBinding { @@ -214,7 +217,7 @@ class VectorSettingsDevicesFragment : isCurrentSession = true, deviceFullInfo = it ) - views.deviceListCurrentSession.render(viewState) + views.deviceListCurrentSession.render(viewState, dateFormatter) views.deviceListCurrentSession.debouncedClicks { currentDeviceInfo.deviceInfo.deviceId?.let { deviceId -> navigateToSessionOverview(deviceId) } } @@ -226,10 +229,10 @@ class VectorSettingsDevicesFragment : } } - private fun navigateToSessionOverview(sessionId: String) { + private fun navigateToSessionOverview(deviceId: String) { viewNavigator.navigateToSessionOverview( context = requireActivity(), - sessionId = sessionId + deviceId = deviceId ) } diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/VectorSettingsDevicesViewNavigator.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/VectorSettingsDevicesViewNavigator.kt index 25c971aacb..54eed3bc14 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/VectorSettingsDevicesViewNavigator.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/VectorSettingsDevicesViewNavigator.kt @@ -22,7 +22,7 @@ import javax.inject.Inject class VectorSettingsDevicesViewNavigator @Inject constructor() { - fun navigateToSessionOverview(context: Context, sessionId: String) { - context.startActivity(SessionOverviewActivity.newIntent(context, sessionId)) + fun navigateToSessionOverview(context: Context, deviceId: String) { + context.startActivity(SessionOverviewActivity.newIntent(context, deviceId)) } } diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/SessionInfoView.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/SessionInfoView.kt index 536184faec..df50666b3b 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/SessionInfoView.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/SessionInfoView.kt @@ -19,11 +19,15 @@ package im.vector.app.features.settings.devices.v2.list import android.content.Context import android.util.AttributeSet import androidx.constraintlayout.widget.ConstraintLayout +import androidx.core.view.isGone import androidx.core.view.isVisible import im.vector.app.R +import im.vector.app.core.date.DateFormatKind +import im.vector.app.core.date.VectorDateFormatter import im.vector.app.core.extensions.setTextWithColoredPart import im.vector.app.databinding.ViewSessionInfoBinding import im.vector.app.features.themes.ThemeUtils +import org.matrix.android.sdk.api.session.crypto.model.DeviceInfo import org.matrix.android.sdk.api.session.crypto.model.RoomEncryptionTrustLevel class SessionInfoView @JvmOverloads constructor( @@ -43,13 +47,14 @@ class SessionInfoView @JvmOverloads constructor( val viewDetailsButton = views.sessionInfoViewDetailsButton - fun render(sessionInfoViewState: SessionInfoViewState) { + fun render(sessionInfoViewState: SessionInfoViewState, dateFormatter: VectorDateFormatter) { renderDeviceInfo(sessionInfoViewState.deviceFullInfo.deviceInfo.displayName.orEmpty()) renderVerificationStatus( sessionInfoViewState.deviceFullInfo.trustLevelForShield, sessionInfoViewState.isCurrentSession, - sessionInfoViewState.hasLearnMoreLink + sessionInfoViewState.isLearnMoreLinkVisible ) + renderDeviceLastSeenDetails(sessionInfoViewState.deviceFullInfo.deviceInfo, dateFormatter, sessionInfoViewState.isLastSeenDetailsVisible) renderDetailsButton(sessionInfoViewState.isDetailsButtonVisible) } @@ -117,6 +122,33 @@ class SessionInfoView @JvmOverloads constructor( views.sessionInfoNameTextView.text = sessionName } + private fun renderDeviceLastSeenDetails( + deviceInfo: DeviceInfo, + dateFormatter: VectorDateFormatter, + isLastSeenDetailsVisible: Boolean, + ) { + deviceInfo.lastSeenTs + ?.takeIf { isLastSeenDetailsVisible } + ?.let { timestamp -> + views.sessionInfoLastActivityTextView.isVisible = true + val formattedTs = dateFormatter.format(timestamp, DateFormatKind.DEFAULT_DATE_AND_TIME) + views.sessionInfoLastActivityTextView.text = context.getString(R.string.device_manager_session_last_activity, formattedTs) + } + ?: run { + views.sessionInfoLastActivityTextView.isGone = true + } + + deviceInfo.lastSeenIp + ?.takeIf { isLastSeenDetailsVisible } + ?.let { ipAddress -> + views.sessionInfoLastIPAddressTextView.isVisible = true + views.sessionInfoLastIPAddressTextView.text = ipAddress + } + ?: run { + views.sessionInfoLastIPAddressTextView.isGone = true + } + } + private fun renderDetailsButton(isDetailsButtonVisible: Boolean) { views.sessionInfoViewDetailsButton.isVisible = isDetailsButtonVisible } diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/SessionInfoViewState.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/SessionInfoViewState.kt index cf7c6f0ae8..22ad710676 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/SessionInfoViewState.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/SessionInfoViewState.kt @@ -22,5 +22,6 @@ data class SessionInfoViewState( val isCurrentSession: Boolean, val deviceFullInfo: DeviceFullInfo, val isDetailsButtonVisible: Boolean = true, - val hasLearnMoreLink: Boolean = false + val isLearnMoreLinkVisible: Boolean = false, + val isLastSeenDetailsVisible: Boolean = false, ) diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewActivity.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewActivity.kt index a663c0ff2a..015fcccf51 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewActivity.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewActivity.kt @@ -43,9 +43,9 @@ class SessionOverviewActivity : SimpleFragmentActivity() { } companion object { - fun newIntent(context: Context, sessionId: String): Intent { + fun newIntent(context: Context, deviceId: String): Intent { return Intent(context, SessionOverviewActivity::class.java).apply { - putExtra(Mavericks.KEY_ARG, SessionOverviewArgs(sessionId)) + putExtra(Mavericks.KEY_ARG, SessionOverviewArgs(deviceId)) } } } diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewArgs.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewArgs.kt index 87ea883362..27c8d6fb2e 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewArgs.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewArgs.kt @@ -21,5 +21,5 @@ import kotlinx.parcelize.Parcelize @Parcelize data class SessionOverviewArgs( - val sessionId: String + val deviceId: String ) : Parcelable diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewFragment.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewFragment.kt index eb2a3aa93f..dbe75c94cc 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewFragment.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewFragment.kt @@ -29,10 +29,12 @@ import com.airbnb.mvrx.fragmentViewModel import com.airbnb.mvrx.withState import dagger.hilt.android.AndroidEntryPoint import im.vector.app.R +import im.vector.app.core.date.VectorDateFormatter import im.vector.app.core.platform.VectorBaseFragment import im.vector.app.databinding.FragmentSessionOverviewBinding import im.vector.app.features.settings.devices.DeviceFullInfo import im.vector.app.features.settings.devices.v2.list.SessionInfoViewState +import javax.inject.Inject /** * Display the overview info about a Session. @@ -41,6 +43,8 @@ import im.vector.app.features.settings.devices.v2.list.SessionInfoViewState class SessionOverviewFragment : VectorBaseFragment<FragmentSessionOverviewBinding>() { + @Inject lateinit var dateFormatter: VectorDateFormatter + private val viewModel: SessionOverviewViewModel by fragmentViewModel() override fun getBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentSessionOverviewBinding { @@ -89,9 +93,10 @@ class SessionOverviewFragment : isCurrentSession = isCurrentSession, deviceFullInfo = deviceFullInfo, isDetailsButtonVisible = false, - hasLearnMoreLink = true + isLearnMoreLinkVisible = true, + isLastSeenDetailsVisible = true, ) - views.sessionOverviewInfo.render(viewState) + views.sessionOverviewInfo.render(viewState, dateFormatter) } private fun hideSessionInfo() { diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewModel.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewModel.kt index 9c40480270..1a1d3640a2 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewModel.kt @@ -46,10 +46,10 @@ class SessionOverviewViewModel @AssistedInject constructor( init { val currentDeviceId = session.sessionParams.deviceId.orEmpty() setState { - copy(isCurrentSession = sessionId.isNotEmpty() && sessionId == currentDeviceId) + copy(isCurrentSession = deviceId.isNotEmpty() && deviceId == currentDeviceId) } - observeSessionInfo(currentDeviceId) + observeSessionInfo(initialState.deviceId) } private fun observeSessionInfo(deviceId: String) { diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewState.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewState.kt index 8fa19a6eee..c9f5635cbd 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewState.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewState.kt @@ -22,11 +22,11 @@ import com.airbnb.mvrx.Uninitialized import im.vector.app.features.settings.devices.DeviceFullInfo data class SessionOverviewViewState( - val sessionId: String, + val deviceId: String, val isCurrentSession: Boolean = false, val deviceInfo: Async<DeviceFullInfo> = Uninitialized, ) : MavericksState { constructor(args: SessionOverviewArgs) : this( - sessionId = args.sessionId + deviceId = args.deviceId ) } diff --git a/vector/src/main/res/layout/view_session_info.xml b/vector/src/main/res/layout/view_session_info.xml index 02aad7b19d..49e1ebbb77 100644 --- a/vector/src/main/res/layout/view_session_info.xml +++ b/vector/src/main/res/layout/view_session_info.xml @@ -72,6 +72,35 @@ app:layout_constraintTop_toBottomOf="@id/sessionInfoVerificationStatusContainer" tools:text="@string/device_manager_verification_status_detail_current_session_verified" /> + <TextView + android:id="@+id/sessionInfoLastActivityTextView" + style="@style/TextAppearance.Vector.Body.DevicesManagement" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginHorizontal="32dp" + android:layout_marginTop="12dp" + android:gravity="center" + android:visibility="gone" + tools:visibility="visible" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/sessionInfoVerificationStatusDetailTextView" + tools:text="Last activity Fri 14:59" /> + + <TextView + android:id="@+id/sessionInfoLastIPAddressTextView" + style="@style/TextAppearance.Vector.Body.DevicesManagement" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginHorizontal="32dp" + android:gravity="center" + android:visibility="gone" + tools:visibility="visible" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/sessionInfoLastActivityTextView" + tools:text="81.235.41.100 (United Kingdom)" /> + <Button android:id="@+id/sessionInfoVerifySessionButton" android:layout_width="0dp" @@ -81,7 +110,7 @@ android:text="@string/device_manager_verify_session" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/sessionInfoVerificationStatusDetailTextView" /> + app:layout_constraintTop_toBottomOf="@id/sessionInfoLastIPAddressTextView" /> <Button android:id="@+id/sessionInfoViewDetailsButton" diff --git a/vector/src/test/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewModelTest.kt b/vector/src/test/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewModelTest.kt index 10b1c0fdb1..735c553808 100644 --- a/vector/src/test/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewModelTest.kt +++ b/vector/src/test/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewModelTest.kt @@ -39,7 +39,7 @@ class SessionOverviewViewModelTest { val mvRxTestRule = MvRxTestRule(testDispatcher = UnconfinedTestDispatcher()) private val args = SessionOverviewArgs( - sessionId = A_SESSION_ID + deviceId = A_SESSION_ID ) private val fakeSession = FakeSession() private val getDeviceFullInfoUseCase = mockk<GetDeviceFullInfoUseCase>() @@ -56,7 +56,7 @@ class SessionOverviewViewModelTest { val deviceFullInfo = mockk<DeviceFullInfo>() every { getDeviceFullInfoUseCase.execute(A_SESSION_ID) } returns flowOf(Optional(deviceFullInfo)) val expectedState = SessionOverviewViewState( - sessionId = A_SESSION_ID, + deviceId = A_SESSION_ID, isCurrentSession = true, deviceInfo = Success(deviceFullInfo) ) From fb8d4668d810f33fd7b382c6b27fab64d7813cf0 Mon Sep 17 00:00:00 2001 From: Maxime NATUREL <maxime.naturel@niji.fr> Date: Fri, 2 Sep 2022 10:11:54 +0200 Subject: [PATCH 51/57] Fixing wrong copyright title --- .../crypto/store/db/mapper/MyDeviceLastSeenInfoEntityMapper.kt | 2 +- .../store/db/mapper/MyDeviceLastSeenInfoEntityMapperTest.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/mapper/MyDeviceLastSeenInfoEntityMapper.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/mapper/MyDeviceLastSeenInfoEntityMapper.kt index 76e3171f4d..38a7569aab 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/mapper/MyDeviceLastSeenInfoEntityMapper.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/mapper/MyDeviceLastSeenInfoEntityMapper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 New Vector Ltd + * Copyright (c) 2022 The Matrix.org Foundation C.I.C. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/matrix-sdk-android/src/test/java/org/matrix/android/sdk/internal/crypto/store/db/mapper/MyDeviceLastSeenInfoEntityMapperTest.kt b/matrix-sdk-android/src/test/java/org/matrix/android/sdk/internal/crypto/store/db/mapper/MyDeviceLastSeenInfoEntityMapperTest.kt index e706fd6622..a27f430edc 100644 --- a/matrix-sdk-android/src/test/java/org/matrix/android/sdk/internal/crypto/store/db/mapper/MyDeviceLastSeenInfoEntityMapperTest.kt +++ b/matrix-sdk-android/src/test/java/org/matrix/android/sdk/internal/crypto/store/db/mapper/MyDeviceLastSeenInfoEntityMapperTest.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 New Vector Ltd + * Copyright (c) 2022 The Matrix.org Foundation C.I.C. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. From 52d05b373cb2e69fc16ae7401911f36cf298a36a Mon Sep 17 00:00:00 2001 From: Maxime NATUREL <maxime.naturel@niji.fr> Date: Fri, 2 Sep 2022 16:45:00 +0200 Subject: [PATCH 52/57] Fix post rebase --- .../devices/v2/overview/GetDeviceFullInfoUseCase.kt | 7 ++++++- vector/src/main/res/layout/fragment_settings_devices.xml | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/GetDeviceFullInfoUseCase.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/GetDeviceFullInfoUseCase.kt index 3cde519385..07d29fc4e8 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/GetDeviceFullInfoUseCase.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/GetDeviceFullInfoUseCase.kt @@ -21,6 +21,7 @@ import im.vector.app.core.di.ActiveSessionHolder import im.vector.app.features.settings.devices.DeviceFullInfo import im.vector.app.features.settings.devices.GetCurrentSessionCrossSigningInfoUseCase import im.vector.app.features.settings.devices.GetEncryptionTrustLevelForDeviceUseCase +import im.vector.app.features.settings.devices.v2.list.CheckIfSessionIsInactiveUseCase import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.emptyFlow @@ -32,8 +33,10 @@ class GetDeviceFullInfoUseCase @Inject constructor( private val activeSessionHolder: ActiveSessionHolder, private val getCurrentSessionCrossSigningInfoUseCase: GetCurrentSessionCrossSigningInfoUseCase, private val getEncryptionTrustLevelForDeviceUseCase: GetEncryptionTrustLevelForDeviceUseCase, + private val checkIfSessionIsInactiveUseCase: CheckIfSessionIsInactiveUseCase, ) { + // TODO update unit tests fun execute(deviceId: String): Flow<Optional<DeviceFullInfo>> { return activeSessionHolder.getSafeActiveSession()?.let { session -> val currentSessionCrossSigningInfo = getCurrentSessionCrossSigningInfoUseCase.execute() @@ -45,10 +48,12 @@ class GetDeviceFullInfoUseCase @Inject constructor( val cryptoInfo = cryptoDeviceInfo.getOrNull() val fullInfo = if (info != null && cryptoInfo != null) { val roomEncryptionTrustLevel = getEncryptionTrustLevelForDeviceUseCase.execute(currentSessionCrossSigningInfo, cryptoInfo) + val isInactive = checkIfSessionIsInactiveUseCase.execute(info.lastSeenTs ?: 0) DeviceFullInfo( deviceInfo = info, cryptoDeviceInfo = cryptoInfo, - trustLevelForShield = roomEncryptionTrustLevel + trustLevelForShield = roomEncryptionTrustLevel, + isInactive = isInactive ) } else { null diff --git a/vector/src/main/res/layout/fragment_settings_devices.xml b/vector/src/main/res/layout/fragment_settings_devices.xml index b4f47302e1..9cefd6aa24 100644 --- a/vector/src/main/res/layout/fragment_settings_devices.xml +++ b/vector/src/main/res/layout/fragment_settings_devices.xml @@ -8,7 +8,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content"> - <im.vector.app.features.settings.devices.v2.list.DevicesListHeaderView + <im.vector.app.features.settings.devices.v2.list.SessionsListHeaderView android:id="@+id/deviceListHeaderSectionSecurityRecommendations" android:layout_width="0dp" android:layout_height="wrap_content" From 0b105e2a7abe0c9ceb6dadfd024eb3353513177d Mon Sep 17 00:00:00 2001 From: Maxime NATUREL <maxime.naturel@niji.fr> Date: Fri, 2 Sep 2022 16:59:49 +0200 Subject: [PATCH 53/57] Adding comment with examples of some parametrized strings --- library/ui-strings/src/main/res/values/strings.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/library/ui-strings/src/main/res/values/strings.xml b/library/ui-strings/src/main/res/values/strings.xml index 4035323332..0e32171cd8 100644 --- a/library/ui-strings/src/main/res/values/strings.xml +++ b/library/ui-strings/src/main/res/values/strings.xml @@ -3238,7 +3238,9 @@ <string name="device_manager_view_details">View Details</string> <string name="device_manager_header_section_current_session">Current Session</string> <string name="device_manager_other_sessions_view_all">View All (%1$d)</string> + <!-- Examples: Verified · Last activity Yesterday at 6PM, Verified · Last activity Aug 31 at 5:47PM --> <string name="device_manager_other_sessions_description_verified">Verified · Last activity %1$s</string> + <!-- Examples: Unverified · Last activity Yesterday at 6PM, Unverified · Last activity Aug 31 at 5:47PM --> <string name="device_manager_other_sessions_description_unverified">Unverified · Last activity %1$s</string> <!-- Example: Inactive for 90+ days (Dec 25, 2021) --> <plurals name="device_manager_other_sessions_description_inactive"> @@ -3256,6 +3258,7 @@ </plurals> <string name="device_manager_current_session_title">Current Session</string> <string name="device_manager_session_title">Session</string> + <!-- Examples: Last activity Yesterday at 6PM, Last activity Aug 31 at 5:47PM --> <string name="device_manager_session_last_activity">Last activity %1$s</string> <!-- Note to translators: %s will be replaces with selected space name --> From 6e9b2baf6f5b8f052c1bc01cf8c5a6b2d5bc3a36 Mon Sep 17 00:00:00 2001 From: Maxime NATUREL <maxime.naturel@niji.fr> Date: Mon, 5 Sep 2022 09:40:02 +0200 Subject: [PATCH 54/57] Rendering inactive status in SessionInfoView --- .../res/values/styles_devices_management.xml | 1 + .../v2/VectorSettingsDevicesFragment.kt | 10 +++- .../devices/v2/list/SessionInfoView.kt | 46 ++++++++++++++++--- .../v2/overview/SessionOverviewFragment.kt | 8 +++- .../src/main/res/layout/view_session_info.xml | 10 ++-- 5 files changed, 61 insertions(+), 14 deletions(-) diff --git a/library/ui-styles/src/main/res/values/styles_devices_management.xml b/library/ui-styles/src/main/res/values/styles_devices_management.xml index 2a63c2ed36..6fb236d3e6 100644 --- a/library/ui-styles/src/main/res/values/styles_devices_management.xml +++ b/library/ui-styles/src/main/res/values/styles_devices_management.xml @@ -7,6 +7,7 @@ <style name="TextAppearance.Vector.Body.DevicesManagement"> <item name="android:textColor">?vctr_content_secondary</item> + <item name="android:drawablePadding">12dp</item> </style> </resources> diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/VectorSettingsDevicesFragment.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/VectorSettingsDevicesFragment.kt index 2262f083da..10ebf3a42f 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/VectorSettingsDevicesFragment.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/VectorSettingsDevicesFragment.kt @@ -34,6 +34,8 @@ import im.vector.app.R import im.vector.app.core.date.VectorDateFormatter import im.vector.app.core.dialogs.ManuallyVerifyDialog import im.vector.app.core.platform.VectorBaseFragment +import im.vector.app.core.resources.ColorProvider +import im.vector.app.core.resources.DrawableProvider import im.vector.app.databinding.FragmentSettingsDevicesBinding import im.vector.app.features.crypto.recover.SetupMode import im.vector.app.features.crypto.verification.VerificationBottomSheet @@ -41,9 +43,9 @@ import im.vector.app.features.settings.devices.DeviceFullInfo import im.vector.app.features.settings.devices.DevicesAction import im.vector.app.features.settings.devices.DevicesViewEvents import im.vector.app.features.settings.devices.DevicesViewModel +import im.vector.app.features.settings.devices.v2.list.OtherSessionsController import im.vector.app.features.settings.devices.v2.list.SESSION_IS_MARKED_AS_INACTIVE_AFTER_DAYS import im.vector.app.features.settings.devices.v2.list.SecurityRecommendationViewState -import im.vector.app.features.settings.devices.v2.list.OtherSessionsController import im.vector.app.features.settings.devices.v2.list.SessionInfoViewState import javax.inject.Inject @@ -58,6 +60,10 @@ class VectorSettingsDevicesFragment : @Inject lateinit var dateFormatter: VectorDateFormatter + @Inject lateinit var drawableProvider: DrawableProvider + + @Inject lateinit var colorProvider: ColorProvider + private val viewModel: DevicesViewModel by fragmentViewModel() override fun getBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentSettingsDevicesBinding { @@ -217,7 +223,7 @@ class VectorSettingsDevicesFragment : isCurrentSession = true, deviceFullInfo = it ) - views.deviceListCurrentSession.render(viewState, dateFormatter) + views.deviceListCurrentSession.render(viewState, dateFormatter, drawableProvider, colorProvider) views.deviceListCurrentSession.debouncedClicks { currentDeviceInfo.deviceInfo.deviceId?.let { deviceId -> navigateToSessionOverview(deviceId) } } diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/SessionInfoView.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/SessionInfoView.kt index df50666b3b..767f09482b 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/SessionInfoView.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/list/SessionInfoView.kt @@ -25,6 +25,8 @@ import im.vector.app.R import im.vector.app.core.date.DateFormatKind import im.vector.app.core.date.VectorDateFormatter import im.vector.app.core.extensions.setTextWithColoredPart +import im.vector.app.core.resources.ColorProvider +import im.vector.app.core.resources.DrawableProvider import im.vector.app.databinding.ViewSessionInfoBinding import im.vector.app.features.themes.ThemeUtils import org.matrix.android.sdk.api.session.crypto.model.DeviceInfo @@ -47,14 +49,26 @@ class SessionInfoView @JvmOverloads constructor( val viewDetailsButton = views.sessionInfoViewDetailsButton - fun render(sessionInfoViewState: SessionInfoViewState, dateFormatter: VectorDateFormatter) { + fun render( + sessionInfoViewState: SessionInfoViewState, + dateFormatter: VectorDateFormatter, + drawableProvider: DrawableProvider, + colorProvider: ColorProvider, + ) { renderDeviceInfo(sessionInfoViewState.deviceFullInfo.deviceInfo.displayName.orEmpty()) renderVerificationStatus( sessionInfoViewState.deviceFullInfo.trustLevelForShield, sessionInfoViewState.isCurrentSession, - sessionInfoViewState.isLearnMoreLinkVisible + sessionInfoViewState.isLearnMoreLinkVisible, + ) + renderDeviceLastSeenDetails( + sessionInfoViewState.deviceFullInfo.isInactive, + sessionInfoViewState.deviceFullInfo.deviceInfo, + sessionInfoViewState.isLastSeenDetailsVisible, + dateFormatter, + drawableProvider, + colorProvider, ) - renderDeviceLastSeenDetails(sessionInfoViewState.deviceFullInfo.deviceInfo, dateFormatter, sessionInfoViewState.isLastSeenDetailsVisible) renderDetailsButton(sessionInfoViewState.isDetailsButtonVisible) } @@ -123,16 +137,36 @@ class SessionInfoView @JvmOverloads constructor( } private fun renderDeviceLastSeenDetails( + isInactive: Boolean, deviceInfo: DeviceInfo, - dateFormatter: VectorDateFormatter, isLastSeenDetailsVisible: Boolean, + dateFormatter: VectorDateFormatter, + drawableProvider: DrawableProvider, + colorProvider: ColorProvider, ) { deviceInfo.lastSeenTs ?.takeIf { isLastSeenDetailsVisible } ?.let { timestamp -> views.sessionInfoLastActivityTextView.isVisible = true - val formattedTs = dateFormatter.format(timestamp, DateFormatKind.DEFAULT_DATE_AND_TIME) - views.sessionInfoLastActivityTextView.text = context.getString(R.string.device_manager_session_last_activity, formattedTs) + views.sessionInfoLastActivityTextView.text = if (isInactive) { + val formattedTs = dateFormatter.format(timestamp, DateFormatKind.TIMELINE_DAY_DIVIDER) + context.resources.getQuantityString( + R.plurals.device_manager_other_sessions_description_inactive, + SESSION_IS_MARKED_AS_INACTIVE_AFTER_DAYS, + SESSION_IS_MARKED_AS_INACTIVE_AFTER_DAYS, + formattedTs + ) + } else { + val formattedTs = dateFormatter.format(timestamp, DateFormatKind.DEFAULT_DATE_AND_TIME) + context.getString(R.string.device_manager_session_last_activity, formattedTs) + } + val drawable = if (isInactive) { + val drawableColor = colorProvider.getColorFromAttribute(R.attr.vctr_content_secondary) + drawableProvider.getDrawable(R.drawable.ic_inactive_sessions, drawableColor) + } else { + null + } + views.sessionInfoLastActivityTextView.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null) } ?: run { views.sessionInfoLastActivityTextView.isGone = true diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewFragment.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewFragment.kt index dbe75c94cc..a6bac6087b 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewFragment.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewFragment.kt @@ -31,6 +31,8 @@ import dagger.hilt.android.AndroidEntryPoint import im.vector.app.R import im.vector.app.core.date.VectorDateFormatter import im.vector.app.core.platform.VectorBaseFragment +import im.vector.app.core.resources.ColorProvider +import im.vector.app.core.resources.DrawableProvider import im.vector.app.databinding.FragmentSessionOverviewBinding import im.vector.app.features.settings.devices.DeviceFullInfo import im.vector.app.features.settings.devices.v2.list.SessionInfoViewState @@ -45,6 +47,10 @@ class SessionOverviewFragment : @Inject lateinit var dateFormatter: VectorDateFormatter + @Inject lateinit var drawableProvider: DrawableProvider + + @Inject lateinit var colorProvider: ColorProvider + private val viewModel: SessionOverviewViewModel by fragmentViewModel() override fun getBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentSessionOverviewBinding { @@ -96,7 +102,7 @@ class SessionOverviewFragment : isLearnMoreLinkVisible = true, isLastSeenDetailsVisible = true, ) - views.sessionOverviewInfo.render(viewState, dateFormatter) + views.sessionOverviewInfo.render(viewState, dateFormatter, drawableProvider, colorProvider) } private fun hideSessionInfo() { diff --git a/vector/src/main/res/layout/view_session_info.xml b/vector/src/main/res/layout/view_session_info.xml index 49e1ebbb77..18daae825a 100644 --- a/vector/src/main/res/layout/view_session_info.xml +++ b/vector/src/main/res/layout/view_session_info.xml @@ -79,13 +79,13 @@ android:layout_height="wrap_content" android:layout_marginHorizontal="32dp" android:layout_marginTop="12dp" - android:gravity="center" android:visibility="gone" - tools:visibility="visible" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/sessionInfoVerificationStatusDetailTextView" - tools:text="Last activity Fri 14:59" /> + app:layout_constraintWidth="wrap_content_constrained" + tools:text="Last activity Fri 14:59" + tools:visibility="visible" /> <TextView android:id="@+id/sessionInfoLastIPAddressTextView" @@ -95,11 +95,11 @@ android:layout_marginHorizontal="32dp" android:gravity="center" android:visibility="gone" - tools:visibility="visible" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/sessionInfoLastActivityTextView" - tools:text="81.235.41.100 (United Kingdom)" /> + tools:text="81.235.41.100 (United Kingdom)" + tools:visibility="visible" /> <Button android:id="@+id/sessionInfoVerifySessionButton" From 21482707737480f5d12a98a4baf7bb42e3ecb650 Mon Sep 17 00:00:00 2001 From: Maxime NATUREL <maxime.naturel@niji.fr> Date: Mon, 5 Sep 2022 09:50:16 +0200 Subject: [PATCH 55/57] Update unit tests --- .../v2/overview/GetDeviceFullInfoUseCase.kt | 1 - .../overview/GetDeviceFullInfoUseCaseTest.kt | 22 ++++++++++++++----- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/GetDeviceFullInfoUseCase.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/GetDeviceFullInfoUseCase.kt index 07d29fc4e8..c3579b68c3 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/GetDeviceFullInfoUseCase.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/GetDeviceFullInfoUseCase.kt @@ -36,7 +36,6 @@ class GetDeviceFullInfoUseCase @Inject constructor( private val checkIfSessionIsInactiveUseCase: CheckIfSessionIsInactiveUseCase, ) { - // TODO update unit tests fun execute(deviceId: String): Flow<Optional<DeviceFullInfo>> { return activeSessionHolder.getSafeActiveSession()?.let { session -> val currentSessionCrossSigningInfo = getCurrentSessionCrossSigningInfoUseCase.execute() diff --git a/vector/src/test/java/im/vector/app/features/settings/devices/v2/overview/GetDeviceFullInfoUseCaseTest.kt b/vector/src/test/java/im/vector/app/features/settings/devices/v2/overview/GetDeviceFullInfoUseCaseTest.kt index 3d56f4ff11..e3d62961a7 100644 --- a/vector/src/test/java/im/vector/app/features/settings/devices/v2/overview/GetDeviceFullInfoUseCaseTest.kt +++ b/vector/src/test/java/im/vector/app/features/settings/devices/v2/overview/GetDeviceFullInfoUseCaseTest.kt @@ -22,6 +22,7 @@ import im.vector.app.features.settings.devices.CurrentSessionCrossSigningInfo import im.vector.app.features.settings.devices.DeviceFullInfo import im.vector.app.features.settings.devices.GetCurrentSessionCrossSigningInfoUseCase import im.vector.app.features.settings.devices.GetEncryptionTrustLevelForDeviceUseCase +import im.vector.app.features.settings.devices.v2.list.CheckIfSessionIsInactiveUseCase import im.vector.app.test.fakes.FakeActiveSessionHolder import im.vector.app.test.fakes.FakeFlowLiveDataConversions import im.vector.app.test.fakes.givenAsFlow @@ -41,18 +42,21 @@ import org.matrix.android.sdk.api.session.crypto.model.RoomEncryptionTrustLevel import org.matrix.android.sdk.api.util.Optional private const val A_DEVICE_ID = "device-id" +private const val A_TIMESTAMP = 123L class GetDeviceFullInfoUseCaseTest { private val fakeActiveSessionHolder = FakeActiveSessionHolder() private val getCurrentSessionCrossSigningInfoUseCase = mockk<GetCurrentSessionCrossSigningInfoUseCase>() private val getEncryptionTrustLevelForDeviceUseCase = mockk<GetEncryptionTrustLevelForDeviceUseCase>() + private val checkIfSessionIsInactiveUseCase = mockk<CheckIfSessionIsInactiveUseCase>() private val fakeFlowLiveDataConversions = FakeFlowLiveDataConversions() private val getDeviceFullInfoUseCase = GetDeviceFullInfoUseCase( activeSessionHolder = fakeActiveSessionHolder.instance, getCurrentSessionCrossSigningInfoUseCase = getCurrentSessionCrossSigningInfoUseCase, - getEncryptionTrustLevelForDeviceUseCase = getEncryptionTrustLevelForDeviceUseCase + getEncryptionTrustLevelForDeviceUseCase = getEncryptionTrustLevelForDeviceUseCase, + checkIfSessionIsInactiveUseCase = checkIfSessionIsInactiveUseCase, ) @Before @@ -66,15 +70,19 @@ class GetDeviceFullInfoUseCaseTest { } @Test - fun `given an active session and info for device when getting device info then the result is correct`() = runTest { + fun `given current session and info for device when getting device info then the result is correct`() = runTest { val currentSessionCrossSigningInfo = givenCurrentSessionCrossSigningInfo() - val deviceInfo = DeviceInfo() + val deviceInfo = DeviceInfo( + lastSeenTs = A_TIMESTAMP + ) fakeActiveSessionHolder.fakeSession.fakeCryptoService.myDevicesInfoWithIdLiveData = MutableLiveData(Optional(deviceInfo)) fakeActiveSessionHolder.fakeSession.fakeCryptoService.myDevicesInfoWithIdLiveData.givenAsFlow() val cryptoDeviceInfo = CryptoDeviceInfo(deviceId = A_DEVICE_ID, userId = "") fakeActiveSessionHolder.fakeSession.fakeCryptoService.cryptoDeviceInfoWithIdLiveData = MutableLiveData(Optional(cryptoDeviceInfo)) fakeActiveSessionHolder.fakeSession.fakeCryptoService.cryptoDeviceInfoWithIdLiveData.givenAsFlow() val trustLevel = givenTrustLevel(currentSessionCrossSigningInfo, cryptoDeviceInfo) + val isInactive = false + every { checkIfSessionIsInactiveUseCase.execute(any()) } returns isInactive val deviceFullInfo = getDeviceFullInfoUseCase.execute(A_DEVICE_ID).firstOrNull() @@ -82,7 +90,8 @@ class GetDeviceFullInfoUseCaseTest { DeviceFullInfo( deviceInfo = deviceInfo, cryptoDeviceInfo = cryptoDeviceInfo, - trustLevelForShield = trustLevel + trustLevelForShield = trustLevel, + isInactive = isInactive, ) ) verify { fakeActiveSessionHolder.instance.getSafeActiveSession() } @@ -90,10 +99,11 @@ class GetDeviceFullInfoUseCaseTest { verify { getEncryptionTrustLevelForDeviceUseCase.execute(currentSessionCrossSigningInfo, cryptoDeviceInfo) } verify { fakeActiveSessionHolder.fakeSession.fakeCryptoService.getMyDevicesInfoLive(A_DEVICE_ID).asFlow() } verify { fakeActiveSessionHolder.fakeSession.fakeCryptoService.getLiveCryptoDeviceInfoWithId(A_DEVICE_ID).asFlow() } + verify { checkIfSessionIsInactiveUseCase.execute(A_TIMESTAMP) } } @Test - fun `given an active session and no info for device when getting device info then the result is null`() = runTest { + fun `given current session and no info for device when getting device info then the result is null`() = runTest { givenCurrentSessionCrossSigningInfo() fakeActiveSessionHolder.fakeSession.fakeCryptoService.myDevicesInfoWithIdLiveData = MutableLiveData(Optional(null)) fakeActiveSessionHolder.fakeSession.fakeCryptoService.myDevicesInfoWithIdLiveData.givenAsFlow() @@ -109,7 +119,7 @@ class GetDeviceFullInfoUseCaseTest { } @Test - fun `given no active session when getting device info then the result is empty`() = runTest { + fun `given no current session when getting device info then the result is empty`() = runTest { fakeActiveSessionHolder.givenGetSafeActiveSessionReturns(null) val deviceFullInfo = getDeviceFullInfoUseCase.execute(A_DEVICE_ID).firstOrNull() From 682905df258146d88267297ed144ac683770954f Mon Sep 17 00:00:00 2001 From: Maxime NATUREL <maxime.naturel@niji.fr> Date: Mon, 5 Sep 2022 10:54:38 +0200 Subject: [PATCH 56/57] Fix unused string warning --- library/ui-strings/src/main/res/values/strings.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/library/ui-strings/src/main/res/values/strings.xml b/library/ui-strings/src/main/res/values/strings.xml index 0e32171cd8..0d05780407 100644 --- a/library/ui-strings/src/main/res/values/strings.xml +++ b/library/ui-strings/src/main/res/values/strings.xml @@ -3236,7 +3236,8 @@ <string name="device_manager_verification_status_detail_other_session_unverified">Verify or sign out from this session for best security and reliability.</string> <string name="device_manager_verify_session">Verify Session</string> <string name="device_manager_view_details">View Details</string> - <string name="device_manager_header_section_current_session">Current Session</string> + <!-- TODO TO BE REMOVED: replaced by device_manager_current_session_title --> + <string name="device_manager_header_section_current_session" tools:ignore="UnusedResources">Current Session</string> <string name="device_manager_other_sessions_view_all">View All (%1$d)</string> <!-- Examples: Verified · Last activity Yesterday at 6PM, Verified · Last activity Aug 31 at 5:47PM --> <string name="device_manager_other_sessions_description_verified">Verified · Last activity %1$s</string> From 669beb11569b5c0dbcb1c4aa402de127efed439e Mon Sep 17 00:00:00 2001 From: Maxime NATUREL <maxime.naturel@niji.fr> Date: Wed, 7 Sep 2022 10:27:19 +0200 Subject: [PATCH 57/57] Fix missing mapper in CryptoStoreHelper for tests --- .../org/matrix/android/sdk/internal/crypto/CryptoStoreHelper.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/internal/crypto/CryptoStoreHelper.kt b/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/internal/crypto/CryptoStoreHelper.kt index ba1afd4758..48cfbebe5b 100644 --- a/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/internal/crypto/CryptoStoreHelper.kt +++ b/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/internal/crypto/CryptoStoreHelper.kt @@ -21,6 +21,7 @@ import org.matrix.android.sdk.internal.crypto.store.IMXCryptoStore import org.matrix.android.sdk.internal.crypto.store.db.RealmCryptoStore import org.matrix.android.sdk.internal.crypto.store.db.RealmCryptoStoreModule import org.matrix.android.sdk.internal.crypto.store.db.mapper.CrossSigningKeysMapper +import org.matrix.android.sdk.internal.crypto.store.db.mapper.MyDeviceLastSeenInfoEntityMapper import org.matrix.android.sdk.internal.di.MoshiProvider import org.matrix.android.sdk.internal.util.time.DefaultClock import kotlin.random.Random @@ -37,6 +38,7 @@ internal class CryptoStoreHelper { userId = "userId_" + Random.nextInt(), deviceId = "deviceId_sample", clock = DefaultClock(), + myDeviceLastSeenInfoEntityMapper = MyDeviceLastSeenInfoEntityMapper() ) } }