From 0d8a190314f7c09d973268ca5b1886fc9462c0d8 Mon Sep 17 00:00:00 2001 From: Valere Date: Tue, 14 Sep 2021 09:54:08 +0200 Subject: [PATCH 01/17] =?UTF-8?q?Navigation=20|=C2=A0New=20Home=20tab=20to?= =?UTF-8?q?=20priorize=20all=20unread?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sdk/api/query/RoomCategoryFilter.kt | 4 + .../sdk/api/session/room/RoomSortOrder.kt | 1 + .../internal/query/QueryRoomOrderProcessor.kt | 7 + .../room/summary/RoomSummaryDataSource.kt | 22 +- .../app/features/home/HomeDetailFragment.kt | 9 +- .../app/features/home/HomeDetailViewModel.kt | 21 +- .../app/features/home/HomeDetailViewState.kt | 4 +- .../app/features/home/RoomListDisplayMode.kt | 2 +- .../list/CollapsableTypedEpoxyController.kt | 14 +- ...ension.kt => EpoxyControllerExtensions.kt} | 12 + .../room/list/RoomListDisplayModeFilter.kt | 38 --- .../home/room/list/RoomListFragment.kt | 44 +-- .../room/list/RoomListSectionBuilderGroup.kt | 28 +- .../room/list/RoomListSectionBuilderSpace.kt | 285 ++++++++++++------ .../home/room/list/RoomSummaryCompactItem.kt | 128 ++++++++ .../list/RoomSummaryItemCompactPlaceHolder.kt | 27 ++ .../home/room/list/RoomSummaryItemFactory.kt | 80 +++-- .../room/list/RoomSummaryListController.kt | 2 +- .../room/list/RoomSummaryPagedController.kt | 18 +- .../list/RoomSummaryPagedControllerFactory.kt | 12 + .../features/home/room/list/RoomsSection.kt | 3 +- .../features/settings/VectorPreferences.kt | 5 - .../features/share/IncomingShareController.kt | 2 +- .../ui/SharedPreferencesUiStateRepository.kt | 6 +- .../src/main/res/layout/item_room_compact.xml | 243 +++++++++++++++ .../layout/item_room_compact_placeholder.xml | 79 +++++ .../main/res/menu/home_bottom_navigation.xml | 14 +- vector/src/main/res/values/strings.xml | 2 + .../src/main/res/xml/vector_settings_labs.xml | 6 - 29 files changed, 901 insertions(+), 217 deletions(-) rename vector/src/main/java/im/vector/app/features/home/room/list/{CollapsableControllerExtension.kt => EpoxyControllerExtensions.kt} (74%) delete mode 100644 vector/src/main/java/im/vector/app/features/home/room/list/RoomListDisplayModeFilter.kt create mode 100644 vector/src/main/java/im/vector/app/features/home/room/list/RoomSummaryCompactItem.kt create mode 100644 vector/src/main/java/im/vector/app/features/home/room/list/RoomSummaryItemCompactPlaceHolder.kt create mode 100644 vector/src/main/res/layout/item_room_compact.xml create mode 100644 vector/src/main/res/layout/item_room_compact_placeholder.xml diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/query/RoomCategoryFilter.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/query/RoomCategoryFilter.kt index c8ccc4c8a3e..48b852e57dd 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/query/RoomCategoryFilter.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/query/RoomCategoryFilter.kt @@ -20,5 +20,9 @@ enum class RoomCategoryFilter { ONLY_DM, ONLY_ROOMS, ONLY_WITH_NOTIFICATIONS, + UNREAD_NOTIFICATION_DMS, + UNREAD_NOTIFICATION_ROOMS, + ROOMS_WITH_NO_NOTIFICATION, + DMS_WITH_NO_NOTIFICATION, ALL } diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/RoomSortOrder.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/RoomSortOrder.kt index e721abd6a05..bc161cbc033 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/RoomSortOrder.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/RoomSortOrder.kt @@ -20,5 +20,6 @@ enum class RoomSortOrder { NAME, ACTIVITY, PRIORITY_AND_ACTIVITY, + UNREAD, NONE } diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/query/QueryRoomOrderProcessor.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/query/QueryRoomOrderProcessor.kt index 7294ce4abf0..c69375a919b 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/query/QueryRoomOrderProcessor.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/query/QueryRoomOrderProcessor.kt @@ -30,6 +30,13 @@ internal fun RealmQuery.process(sortOrder: RoomSortOrder): Re RoomSortOrder.ACTIVITY -> { sort(RoomSummaryEntityFields.LAST_ACTIVITY_TIME, Sort.DESCENDING) } + RoomSortOrder.UNREAD -> { + sort( + arrayOf( + RoomSummaryEntityFields.HAS_UNREAD_MESSAGES, + RoomSummaryEntityFields.LAST_ACTIVITY_TIME), + arrayOf(Sort.DESCENDING, Sort.DESCENDING)) + } RoomSortOrder.PRIORITY_AND_ACTIVITY -> { sort( arrayOf( diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/summary/RoomSummaryDataSource.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/summary/RoomSummaryDataSource.kt index 0b8c6df8066..0de27634b97 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/summary/RoomSummaryDataSource.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/summary/RoomSummaryDataSource.kt @@ -250,6 +250,22 @@ internal class RoomSummaryDataSource @Inject constructor(@SessionDatabase privat RoomCategoryFilter.ONLY_DM -> query.equalTo(RoomSummaryEntityFields.IS_DIRECT, true) RoomCategoryFilter.ONLY_ROOMS -> query.equalTo(RoomSummaryEntityFields.IS_DIRECT, false) RoomCategoryFilter.ONLY_WITH_NOTIFICATIONS -> query.greaterThan(RoomSummaryEntityFields.NOTIFICATION_COUNT, 0) + RoomCategoryFilter.UNREAD_NOTIFICATION_DMS -> { + query.equalTo(RoomSummaryEntityFields.IS_DIRECT, true) + query.greaterThan(RoomSummaryEntityFields.NOTIFICATION_COUNT, 0) + } + RoomCategoryFilter.UNREAD_NOTIFICATION_ROOMS -> { + query.equalTo(RoomSummaryEntityFields.IS_DIRECT, false) + query.greaterThan(RoomSummaryEntityFields.NOTIFICATION_COUNT, 0) + } + RoomCategoryFilter.ROOMS_WITH_NO_NOTIFICATION -> { + query.equalTo(RoomSummaryEntityFields.IS_DIRECT, false) + query.equalTo(RoomSummaryEntityFields.NOTIFICATION_COUNT, 0.toInt()) + } + RoomCategoryFilter.DMS_WITH_NO_NOTIFICATION -> { + query.equalTo(RoomSummaryEntityFields.IS_DIRECT, true) + query.equalTo(RoomSummaryEntityFields.NOTIFICATION_COUNT, 0.toInt()) + } RoomCategoryFilter.ALL -> { // nop } @@ -273,12 +289,6 @@ internal class RoomSummaryDataSource @Inject constructor(@SessionDatabase privat queryParams.includeType?.forEach { query.equalTo(RoomSummaryEntityFields.ROOM_TYPE, it) } - when (queryParams.roomCategoryFilter) { - RoomCategoryFilter.ONLY_DM -> query.equalTo(RoomSummaryEntityFields.IS_DIRECT, true) - RoomCategoryFilter.ONLY_ROOMS -> query.equalTo(RoomSummaryEntityFields.IS_DIRECT, false) - RoomCategoryFilter.ONLY_WITH_NOTIFICATIONS -> query.greaterThan(RoomSummaryEntityFields.NOTIFICATION_COUNT, 0) - RoomCategoryFilter.ALL -> Unit // nop - } // Timber.w("VAL: activeSpaceId : ${queryParams.activeSpaceId}") when (queryParams.activeSpaceFilter) { diff --git a/vector/src/main/java/im/vector/app/features/home/HomeDetailFragment.kt b/vector/src/main/java/im/vector/app/features/home/HomeDetailFragment.kt index c8fff5605b8..b960394ba2d 100644 --- a/vector/src/main/java/im/vector/app/features/home/HomeDetailFragment.kt +++ b/vector/src/main/java/im/vector/app/features/home/HomeDetailFragment.kt @@ -210,7 +210,7 @@ class HomeDetailFragment @Inject constructor( override fun onResume() { super.onResume() // update notification tab if needed - updateTabVisibilitySafely(R.id.bottom_action_notification, vectorPreferences.labAddNotificationTab()) +// updateTabVisibilitySafely(R.id.bottom_action_notification, vectorPreferences.labAddNotificationTab()) callManager.checkForProtocolsSupportIfNeeded() // Current space/group is not live so at least refresh toolbar on resume @@ -345,12 +345,11 @@ class HomeDetailFragment @Inject constructor( } private fun setupBottomNavigationView() { - views.bottomNavigationView.menu.findItem(R.id.bottom_action_notification).isVisible = vectorPreferences.labAddNotificationTab() views.bottomNavigationView.setOnItemSelectedListener { val tab = when (it.itemId) { R.id.bottom_action_people -> HomeTab.RoomList(RoomListDisplayMode.PEOPLE) R.id.bottom_action_rooms -> HomeTab.RoomList(RoomListDisplayMode.ROOMS) - R.id.bottom_action_notification -> HomeTab.RoomList(RoomListDisplayMode.NOTIFICATIONS) + R.id.bottom_action_home -> HomeTab.RoomList(RoomListDisplayMode.HOME) else -> HomeTab.DialPad } viewModel.handle(HomeDetailAction.SwitchTab(tab)) @@ -447,7 +446,7 @@ class HomeDetailFragment @Inject constructor( // Timber.v(it.toString()) views.bottomNavigationView.getOrCreateBadge(R.id.bottom_action_people).render(it.notificationCountPeople, it.notificationHighlightPeople) views.bottomNavigationView.getOrCreateBadge(R.id.bottom_action_rooms).render(it.notificationCountRooms, it.notificationHighlightRooms) - views.bottomNavigationView.getOrCreateBadge(R.id.bottom_action_notification).render(it.notificationCountCatchup, it.notificationHighlightCatchup) + views.bottomNavigationView.getOrCreateBadge(R.id.bottom_action_home).render(it.notificationCountHome, it.notificationHighlightHome) views.syncStateView.render( it.syncState, it.incrementalSyncStatus, @@ -474,7 +473,7 @@ class HomeDetailFragment @Inject constructor( is HomeTab.RoomList -> when (displayMode) { RoomListDisplayMode.PEOPLE -> R.id.bottom_action_people RoomListDisplayMode.ROOMS -> R.id.bottom_action_rooms - else -> R.id.bottom_action_notification + else -> R.id.bottom_action_home } } diff --git a/vector/src/main/java/im/vector/app/features/home/HomeDetailViewModel.kt b/vector/src/main/java/im/vector/app/features/home/HomeDetailViewModel.kt index d981a29fecb..ee75c774242 100644 --- a/vector/src/main/java/im/vector/app/features/home/HomeDetailViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/home/HomeDetailViewModel.kt @@ -42,6 +42,7 @@ import kotlinx.coroutines.flow.filterIsInstance import kotlinx.coroutines.launch import org.matrix.android.sdk.api.query.ActiveSpaceFilter import org.matrix.android.sdk.api.query.RoomCategoryFilter +import org.matrix.android.sdk.api.query.RoomTagQueryFilter import org.matrix.android.sdk.api.session.Session import org.matrix.android.sdk.api.session.initsync.SyncStatusService import org.matrix.android.sdk.api.session.room.RoomSortOrder @@ -253,6 +254,7 @@ class HomeDetailViewModel @AssistedInject constructor(@Assisted initialState: Ho roomSummaryQueryParams { memberships = listOf(Membership.JOIN) roomCategoryFilter = RoomCategoryFilter.ONLY_DM + roomTagQueryFilter = RoomTagQueryFilter(false, null, null) activeSpaceFilter = activeSpaceRoomId?.let { ActiveSpaceFilter.ActiveSpace(it) } ?: ActiveSpaceFilter.None } ) @@ -261,18 +263,27 @@ class HomeDetailViewModel @AssistedInject constructor(@Assisted initialState: Ho roomSummaryQueryParams { memberships = listOf(Membership.JOIN) roomCategoryFilter = RoomCategoryFilter.ONLY_ROOMS + roomTagQueryFilter = RoomTagQueryFilter(false, null, null) + activeSpaceFilter = ActiveSpaceFilter.ActiveSpace(groupingMethod.spaceSummary?.roomId) + } + ) + + val favRooms = session.getNotificationCountForRooms( + roomSummaryQueryParams { + memberships = listOf(Membership.JOIN) + roomTagQueryFilter = RoomTagQueryFilter(true, null, null) activeSpaceFilter = ActiveSpaceFilter.ActiveSpace(groupingMethod.spaceSummary?.roomId) } ) setState { copy( - notificationCountCatchup = dmRooms.totalCount + otherRooms.totalCount + roomsInvite + dmInvites, - notificationHighlightCatchup = dmRooms.isHighlight || otherRooms.isHighlight || (dmInvites + roomsInvite) > 0, - notificationCountPeople = dmRooms.totalCount + dmInvites, - notificationHighlightPeople = dmRooms.isHighlight || dmInvites > 0, + notificationCountHome = roomsInvite + dmInvites + favRooms.totalCount, + notificationHighlightHome = dmInvites + roomsInvite > 0 || favRooms.totalCount > 0, + notificationCountPeople = dmRooms.totalCount, + notificationHighlightPeople = dmRooms.isHighlight, notificationCountRooms = otherRooms.totalCount + roomsInvite, - notificationHighlightRooms = otherRooms.isHighlight || roomsInvite > 0, + notificationHighlightRooms = otherRooms.isHighlight, hasUnreadMessages = dmRooms.totalCount + otherRooms.totalCount > 0 ) } diff --git a/vector/src/main/java/im/vector/app/features/home/HomeDetailViewState.kt b/vector/src/main/java/im/vector/app/features/home/HomeDetailViewState.kt index 7665dd41e56..9a54aa40cc9 100644 --- a/vector/src/main/java/im/vector/app/features/home/HomeDetailViewState.kt +++ b/vector/src/main/java/im/vector/app/features/home/HomeDetailViewState.kt @@ -32,8 +32,8 @@ data class HomeDetailViewState( val myMatrixItem: MatrixItem? = null, val asyncRooms: Async> = Uninitialized, val currentTab: HomeTab = HomeTab.RoomList(RoomListDisplayMode.PEOPLE), - val notificationCountCatchup: Int = 0, - val notificationHighlightCatchup: Boolean = false, + val notificationCountHome: Int = 0, + val notificationHighlightHome: Boolean = false, val notificationCountPeople: Int = 0, val notificationHighlightPeople: Boolean = false, val notificationCountRooms: Int = 0, diff --git a/vector/src/main/java/im/vector/app/features/home/RoomListDisplayMode.kt b/vector/src/main/java/im/vector/app/features/home/RoomListDisplayMode.kt index f0c707135fa..e366d00658e 100644 --- a/vector/src/main/java/im/vector/app/features/home/RoomListDisplayMode.kt +++ b/vector/src/main/java/im/vector/app/features/home/RoomListDisplayMode.kt @@ -20,7 +20,7 @@ import androidx.annotation.StringRes import im.vector.app.R enum class RoomListDisplayMode(@StringRes val titleRes: Int) { - NOTIFICATIONS(R.string.bottom_action_notification), + HOME(R.string.bottom_action_home), PEOPLE(R.string.bottom_action_people_x), ROOMS(R.string.bottom_action_rooms), FILTERED(/* Not used */ 0) diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/CollapsableTypedEpoxyController.kt b/vector/src/main/java/im/vector/app/features/home/room/list/CollapsableTypedEpoxyController.kt index 15b3602766e..66e70fc60e3 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/CollapsableTypedEpoxyController.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/CollapsableTypedEpoxyController.kt @@ -18,8 +18,8 @@ package im.vector.app.features.home.room.list import com.airbnb.epoxy.EpoxyController -abstract class CollapsableTypedEpoxyController : - EpoxyController(), CollapsableControllerExtension { +abstract class CollapsableTypedEpoxyController + : EpoxyController(), CollapsableControllerExtension, CompactModeControllerExtension { private var currentData: T? = null private var allowModelBuildRequests = false @@ -34,6 +34,16 @@ abstract class CollapsableTypedEpoxyController : } } + override var compactModeOn: Boolean = false + set(value) { + if (field != value) { + field = value + allowModelBuildRequests = true + requestModelBuild() + allowModelBuildRequests = false + } + } + fun setData(data: T?) { currentData = data allowModelBuildRequests = true diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/CollapsableControllerExtension.kt b/vector/src/main/java/im/vector/app/features/home/room/list/EpoxyControllerExtensions.kt similarity index 74% rename from vector/src/main/java/im/vector/app/features/home/room/list/CollapsableControllerExtension.kt rename to vector/src/main/java/im/vector/app/features/home/room/list/EpoxyControllerExtensions.kt index bd622faae13..85830570a32 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/CollapsableControllerExtension.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/EpoxyControllerExtensions.kt @@ -30,3 +30,15 @@ fun EpoxyController.setCollapsed(collapsed: Boolean) { interface CollapsableControllerExtension { var collapsed: Boolean } + +fun EpoxyController.setCompactMode(compactModeOn: Boolean) { + if (this is CompactModeControllerExtension) { + this.compactModeOn = compactModeOn + } else { + Timber.w("Try to set compact mode on a controller that do not support compact mode") + } +} + +interface CompactModeControllerExtension { + var compactModeOn: Boolean +} diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/RoomListDisplayModeFilter.kt b/vector/src/main/java/im/vector/app/features/home/room/list/RoomListDisplayModeFilter.kt deleted file mode 100644 index b8cdac19cff..00000000000 --- a/vector/src/main/java/im/vector/app/features/home/room/list/RoomListDisplayModeFilter.kt +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2019 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 - -import im.vector.app.features.home.RoomListDisplayMode -import io.reactivex.functions.Predicate -import org.matrix.android.sdk.api.session.room.model.Membership -import org.matrix.android.sdk.api.session.room.model.RoomSummary - -class RoomListDisplayModeFilter(private val displayMode: RoomListDisplayMode) : Predicate { - - override fun test(roomSummary: RoomSummary): Boolean { - if (roomSummary.membership.isLeft()) { - return false - } - return when (displayMode) { - RoomListDisplayMode.NOTIFICATIONS -> - roomSummary.notificationCount > 0 || roomSummary.membership == Membership.INVITE || roomSummary.userDrafts.isNotEmpty() - RoomListDisplayMode.PEOPLE -> roomSummary.isDirect && roomSummary.membership.isActive() - RoomListDisplayMode.ROOMS -> !roomSummary.isDirect && roomSummary.membership.isActive() - RoomListDisplayMode.FILTERED -> roomSummary.membership == Membership.JOIN - } - } -} diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/RoomListFragment.kt b/vector/src/main/java/im/vector/app/features/home/room/list/RoomListFragment.kt index c36836c87f2..39b37a31099 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/RoomListFragment.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/RoomListFragment.kt @@ -179,10 +179,10 @@ class RoomListFragment @Inject constructor( private fun setupCreateRoomButton() { when (roomListParams.displayMode) { - RoomListDisplayMode.NOTIFICATIONS -> views.createChatFabMenu.isVisible = true - RoomListDisplayMode.PEOPLE -> views.createChatRoomButton.isVisible = true - RoomListDisplayMode.ROOMS -> views.createGroupRoomButton.isVisible = true - else -> Unit // No button in this mode + RoomListDisplayMode.HOME -> views.createChatFabMenu.isVisible = true + RoomListDisplayMode.PEOPLE -> views.createChatRoomButton.isVisible = true + RoomListDisplayMode.ROOMS -> views.createGroupRoomButton.isVisible = true + else -> Unit // No button in this mode } views.createChatRoomButton.debouncedClicks { @@ -205,10 +205,10 @@ class RoomListFragment @Inject constructor( RecyclerView.SCROLL_STATE_DRAGGING, RecyclerView.SCROLL_STATE_SETTLING -> { when (roomListParams.displayMode) { - RoomListDisplayMode.NOTIFICATIONS -> views.createChatFabMenu.hide() - RoomListDisplayMode.PEOPLE -> views.createChatRoomButton.hide() - RoomListDisplayMode.ROOMS -> views.createGroupRoomButton.hide() - else -> Unit + RoomListDisplayMode.HOME -> views.createChatFabMenu.hide() + RoomListDisplayMode.PEOPLE -> views.createChatRoomButton.hide() + RoomListDisplayMode.ROOMS -> views.createGroupRoomButton.hide() + else -> Unit } } } @@ -266,7 +266,11 @@ class RoomListFragment @Inject constructor( val contentAdapter = when { section.livePages != null -> { - pagedControllerFactory.createRoomSummaryPagedController() + if (section.isCompact) { + pagedControllerFactory.createCompactRoomSummaryPagedController() + } else { + pagedControllerFactory.createRoomSummaryPagedController() + } .also { controller -> section.livePages.observe(viewLifecycleOwner) { pl -> controller.submitList(pl) @@ -306,7 +310,11 @@ class RoomListFragment @Inject constructor( } } else -> { - pagedControllerFactory.createRoomSummaryListController() + if (section.isCompact) { + pagedControllerFactory.createCompactRoomSummaryListController() + } else { + pagedControllerFactory.createRoomSummaryListController() + } .also { controller -> section.liveList?.observe(viewLifecycleOwner) { list -> controller.setData(list) @@ -354,10 +362,10 @@ class RoomListFragment @Inject constructor( private val showFabRunnable = Runnable { if (isAdded) { when (roomListParams.displayMode) { - RoomListDisplayMode.NOTIFICATIONS -> views.createChatFabMenu.show() - RoomListDisplayMode.PEOPLE -> views.createChatRoomButton.show() - RoomListDisplayMode.ROOMS -> views.createGroupRoomButton.show() - else -> Unit + RoomListDisplayMode.HOME -> views.createChatFabMenu.show() + RoomListDisplayMode.PEOPLE -> views.createChatRoomButton.show() + RoomListDisplayMode.ROOMS -> views.createGroupRoomButton.show() + else -> Unit } } } @@ -419,27 +427,27 @@ class RoomListFragment @Inject constructor( !adapterInfosList.any { it.sectionHeaderAdapter.roomsSectionData.isLoading } if (shouldShowEmpty) { val emptyState = when (roomListParams.displayMode) { - RoomListDisplayMode.NOTIFICATIONS -> { + RoomListDisplayMode.HOME -> { StateView.State.Empty( title = getString(R.string.room_list_catchup_empty_title), image = ContextCompat.getDrawable(requireContext(), R.drawable.ic_noun_party_popper), message = getString(R.string.room_list_catchup_empty_body)) } - RoomListDisplayMode.PEOPLE -> + RoomListDisplayMode.PEOPLE -> StateView.State.Empty( title = getString(R.string.room_list_people_empty_title), image = ContextCompat.getDrawable(requireContext(), R.drawable.empty_state_dm), isBigImage = true, message = getString(R.string.room_list_people_empty_body) ) - RoomListDisplayMode.ROOMS -> + RoomListDisplayMode.ROOMS -> StateView.State.Empty( title = getString(R.string.room_list_rooms_empty_title), image = ContextCompat.getDrawable(requireContext(), R.drawable.empty_state_room), isBigImage = true, message = getString(R.string.room_list_rooms_empty_body) ) - else -> + else -> // Always display the content in this mode, because if the footer StateView.State.Content } diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/RoomListSectionBuilderGroup.kt b/vector/src/main/java/im/vector/app/features/home/room/list/RoomListSectionBuilderGroup.kt index f101669af3e..e230fe94540 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/RoomListSectionBuilderGroup.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/RoomListSectionBuilderGroup.kt @@ -58,7 +58,7 @@ class RoomListSectionBuilderGroup( // 5 sections invites / Fav / Rooms / Low Priority / Server notice buildRoomsSections(sections, activeGroupAwareQueries, actualGroupId) } - RoomListDisplayMode.FILTERED -> { + RoomListDisplayMode.FILTERED -> { // Used when searching for rooms withQueryParams( { @@ -74,7 +74,7 @@ class RoomListSectionBuilderGroup( } ) } - RoomListDisplayMode.NOTIFICATIONS -> { + RoomListDisplayMode.HOME -> { if (autoAcceptInvites.showInvites()) { addSection( sections, @@ -88,6 +88,28 @@ class RoomListSectionBuilderGroup( } } + addSection( + sections, + activeGroupAwareQueries, + R.string.room_list_section_unread_dm, + false + ) { + it.memberships = listOf(Membership.JOIN) + it.roomCategoryFilter = RoomCategoryFilter.UNREAD_NOTIFICATION_DMS + it.activeGroupId = actualGroupId + } + + addSection( + sections, + activeGroupAwareQueries, + R.string.room_list_section_unread_rooms, + false + ) { + it.memberships = listOf(Membership.JOIN) + it.roomCategoryFilter = RoomCategoryFilter.UNREAD_NOTIFICATION_ROOMS + it.activeGroupId = actualGroupId + } + addSection( sections, activeGroupAwareQueries, @@ -95,7 +117,7 @@ class RoomListSectionBuilderGroup( false ) { it.memberships = listOf(Membership.JOIN) - it.roomCategoryFilter = RoomCategoryFilter.ONLY_WITH_NOTIFICATIONS + it.roomCategoryFilter = RoomCategoryFilter.ONLY_ROOMS it.activeGroupId = actualGroupId } } diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/RoomListSectionBuilderSpace.kt b/vector/src/main/java/im/vector/app/features/home/room/list/RoomListSectionBuilderSpace.kt index 70632818535..10f461be9e2 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/RoomListSectionBuilderSpace.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/RoomListSectionBuilderSpace.kt @@ -40,6 +40,7 @@ import org.matrix.android.sdk.api.query.ActiveSpaceFilter import org.matrix.android.sdk.api.query.RoomCategoryFilter import org.matrix.android.sdk.api.query.RoomTagQueryFilter import org.matrix.android.sdk.api.session.Session +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 @@ -71,14 +72,14 @@ class RoomListSectionBuilderSpace( val activeSpaceAwareQueries = mutableListOf() when (mode) { RoomListDisplayMode.PEOPLE -> { - // 4 sections Invites / Fav / Dms / Low Priority + // 2 sections Dms / Low Priority buildDmSections(sections, activeSpaceAwareQueries) } RoomListDisplayMode.ROOMS -> { - // 6 sections invites / Fav / Rooms / Low Priority / Server notice / Suggested rooms + // 4 sections Rooms / Low Priority / Server notice / Suggested rooms buildRoomsSections(sections, activeSpaceAwareQueries) } - RoomListDisplayMode.FILTERED -> { + RoomListDisplayMode.FILTERED -> { // Used when searching for rooms withQueryParams( { @@ -94,39 +95,8 @@ class RoomListSectionBuilderSpace( } ) } - RoomListDisplayMode.NOTIFICATIONS -> { - if (autoAcceptInvites.showInvites()) { - addSection( - sections = sections, - activeSpaceUpdaters = activeSpaceAwareQueries, - nameRes = R.string.invitations_header, - notifyOfLocalEcho = true, - spaceFilterStrategy = if (onlyOrphansInHome) { - RoomListViewModel.SpaceFilterStrategy.ORPHANS_IF_SPACE_NULL - } else { - RoomListViewModel.SpaceFilterStrategy.ALL_IF_SPACE_NULL - }, - countRoomAsNotif = true - ) { - it.memberships = listOf(Membership.INVITE) - it.roomCategoryFilter = RoomCategoryFilter.ALL - } - } - - addSection( - sections = sections, - activeSpaceUpdaters = activeSpaceAwareQueries, - nameRes = R.string.bottom_action_rooms, - notifyOfLocalEcho = false, - spaceFilterStrategy = if (onlyOrphansInHome) { - RoomListViewModel.SpaceFilterStrategy.ORPHANS_IF_SPACE_NULL - } else { - RoomListViewModel.SpaceFilterStrategy.ALL_IF_SPACE_NULL - } - ) { - it.memberships = listOf(Membership.JOIN) - it.roomCategoryFilter = RoomCategoryFilter.ONLY_WITH_NOTIFICATIONS - } + RoomListDisplayMode.HOME -> { + buildHomeSections(sections, activeSpaceAwareQueries) } } @@ -144,34 +114,175 @@ class RoomListSectionBuilderSpace( return sections } - private fun buildRoomsSections(sections: MutableList, - activeSpaceAwareQueries: MutableList) { + private fun buildHomeSections(sections: MutableList, activeSpaceAwareQueries: MutableList) { if (autoAcceptInvites.showInvites()) { addSection( sections = sections, activeSpaceUpdaters = activeSpaceAwareQueries, nameRes = R.string.invitations_header, notifyOfLocalEcho = true, - spaceFilterStrategy = RoomListViewModel.SpaceFilterStrategy.ALL_IF_SPACE_NULL, + spaceFilterStrategy = if (onlyOrphansInHome) { + RoomListViewModel.SpaceFilterStrategy.ORPHANS_IF_SPACE_NULL + } else { + RoomListViewModel.SpaceFilterStrategy.ALL_IF_SPACE_NULL + }, countRoomAsNotif = true ) { it.memberships = listOf(Membership.INVITE) - it.roomCategoryFilter = RoomCategoryFilter.ONLY_ROOMS + it.roomCategoryFilter = RoomCategoryFilter.ALL } } addSection( - sections, - activeSpaceAwareQueries, - R.string.bottom_action_favourites, - false, - RoomListViewModel.SpaceFilterStrategy.ALL_IF_SPACE_NULL + sections = sections, + activeSpaceUpdaters = activeSpaceAwareQueries, + nameRes = R.string.bottom_action_favourites, + notifyOfLocalEcho = false, + isCompact = true, + spaceFilterStrategy = RoomListViewModel.SpaceFilterStrategy.ALL_IF_SPACE_NULL ) { it.memberships = listOf(Membership.JOIN) - it.roomCategoryFilter = RoomCategoryFilter.ONLY_ROOMS it.roomTagQueryFilter = RoomTagQueryFilter(true, null, null) } + addSection( + sections = sections, + activeSpaceUpdaters = activeSpaceAwareQueries, + nameRes = R.string.room_list_section_unread_dm, + notifyOfLocalEcho = false, + isCompact = true, + spaceFilterStrategy = if (onlyOrphansInHome) { + RoomListViewModel.SpaceFilterStrategy.ORPHANS_IF_SPACE_NULL + } else { + RoomListViewModel.SpaceFilterStrategy.ALL_IF_SPACE_NULL + } + ) { + it.memberships = listOf(Membership.JOIN) + it.roomCategoryFilter = RoomCategoryFilter.UNREAD_NOTIFICATION_DMS + it.roomTagQueryFilter = RoomTagQueryFilter(false, null, null) + } + + addSection( + sections = sections, + activeSpaceUpdaters = activeSpaceAwareQueries, + nameRes = R.string.room_list_section_unread_rooms, + notifyOfLocalEcho = false, + isCompact = true, + spaceFilterStrategy = if (onlyOrphansInHome) { + RoomListViewModel.SpaceFilterStrategy.ORPHANS_IF_SPACE_NULL + } else { + RoomListViewModel.SpaceFilterStrategy.ALL_IF_SPACE_NULL + } + ) { + it.memberships = listOf(Membership.JOIN) + it.roomCategoryFilter = RoomCategoryFilter.UNREAD_NOTIFICATION_ROOMS + it.roomTagQueryFilter = RoomTagQueryFilter(false, null, null) + } + + addSection( + sections = sections, + activeSpaceUpdaters = activeSpaceAwareQueries, + nameRes = R.string.bottom_action_rooms, + notifyOfLocalEcho = false, + isCompact = true, + spaceFilterStrategy = if (onlyOrphansInHome) { + RoomListViewModel.SpaceFilterStrategy.ORPHANS_IF_SPACE_NULL + } else { + RoomListViewModel.SpaceFilterStrategy.ALL_IF_SPACE_NULL + }, + sortOrder = RoomSortOrder.UNREAD + ) { + it.memberships = listOf(Membership.JOIN) + it.roomCategoryFilter = RoomCategoryFilter.ROOMS_WITH_NO_NOTIFICATION + it.roomTagQueryFilter = RoomTagQueryFilter(false, null, null) + } + + addSection( + sections = sections, + activeSpaceUpdaters = activeSpaceAwareQueries, + nameRes = R.string.bottom_action_people_x, + notifyOfLocalEcho = false, + isCompact = true, + spaceFilterStrategy = RoomListViewModel.SpaceFilterStrategy.ALL_IF_SPACE_NULL + ) { + it.memberships = listOf(Membership.JOIN) + it.roomCategoryFilter = RoomCategoryFilter.DMS_WITH_NO_NOTIFICATION + } + + val suggestedRoomsObservable = // MutableLiveData>() + appStateHandler.selectedRoomGroupingObservable + .distinctUntilChanged() + .switchMap { groupingMethod -> + val selectedSpace = groupingMethod.orNull()?.space() + if (selectedSpace == null) { + Observable.just(emptyList()) + } else { + liveData(context = viewModelScope.coroutineContext + Dispatchers.IO) { + val spaceSum = tryOrNull { + session.spaceService() + .querySpaceChildren(selectedSpace.roomId, suggestedOnly = true, null, null) + } + val value = spaceSum?.children.orEmpty().distinctBy { it.childRoomId } + // i need to check if it's already joined. + val filtered = value.filter { + session.getRoomSummary(it.childRoomId)?.membership?.isActive() != true + } + emit(filtered) + }.asObservable() + } + } + + val liveSuggestedRooms = MutableLiveData() + Observables.combineLatest( + suggestedRoomsObservable, + suggestedRoomJoiningState.asObservable() + ) { rooms, joinStates -> + SuggestedRoomInfo( + rooms, + joinStates + ) + }.subscribe { + liveSuggestedRooms.postValue(it) + }.also { + disposables.add(it) + } + sections.add( + RoomsSection( + sectionName = stringProvider.getString(R.string.suggested_header), + liveSuggested = liveSuggestedRooms, + notifyOfLocalEcho = false + ) + ) + } + + private fun buildRoomsSections(sections: MutableList, + activeSpaceAwareQueries: MutableList) { +// if (autoAcceptInvites.showInvites()) { +// addSection( +// sections = sections, +// activeSpaceUpdaters = activeSpaceAwareQueries, +// nameRes = R.string.invitations_header, +// notifyOfLocalEcho = true, +// spaceFilterStrategy = RoomListViewModel.SpaceFilterStrategy.ALL_IF_SPACE_NULL, +// countRoomAsNotif = true +// ) { +// it.memberships = listOf(Membership.INVITE) +// it.roomCategoryFilter = RoomCategoryFilter.ONLY_ROOMS +// } +// } + +// addSection( +// sections, +// activeSpaceAwareQueries, +// R.string.bottom_action_favourites, +// false, +// RoomListViewModel.SpaceFilterStrategy.ALL_IF_SPACE_NULL +// ) { +// it.memberships = listOf(Membership.JOIN) +// it.roomCategoryFilter = RoomCategoryFilter.ONLY_ROOMS +// it.roomTagQueryFilter = RoomTagQueryFilter(true, null, null) +// } + addSection( sections = sections, activeSpaceUpdaters = activeSpaceAwareQueries, @@ -185,7 +296,7 @@ class RoomListSectionBuilderSpace( ) { it.memberships = listOf(Membership.JOIN) it.roomCategoryFilter = RoomCategoryFilter.ONLY_ROOMS - it.roomTagQueryFilter = RoomTagQueryFilter(false, false, false) + it.roomTagQueryFilter = RoomTagQueryFilter(null, false, false) } addSection( @@ -269,54 +380,56 @@ class RoomListSectionBuilderSpace( private fun buildDmSections(sections: MutableList, activeSpaceAwareQueries: MutableList) { - if (autoAcceptInvites.showInvites()) { - addSection( - sections = sections, - activeSpaceUpdaters = activeSpaceAwareQueries, - nameRes = R.string.invitations_header, - notifyOfLocalEcho = true, - spaceFilterStrategy = RoomListViewModel.SpaceFilterStrategy.ALL_IF_SPACE_NULL, - countRoomAsNotif = true - ) { - it.memberships = listOf(Membership.INVITE) - it.roomCategoryFilter = RoomCategoryFilter.ONLY_DM - } - } +// if (autoAcceptInvites.showInvites()) { +// addSection( +// sections = sections, +// activeSpaceUpdaters = activeSpaceAwareQueries, +// nameRes = R.string.invitations_header, +// notifyOfLocalEcho = true, +// spaceFilterStrategy = RoomListViewModel.SpaceFilterStrategy.ALL_IF_SPACE_NULL, +// countRoomAsNotif = true +// ) { +// it.memberships = listOf(Membership.INVITE) +// it.roomCategoryFilter = RoomCategoryFilter.ONLY_DM +// } +// } - addSection( - sections, - activeSpaceAwareQueries, - R.string.bottom_action_favourites, - false, - RoomListViewModel.SpaceFilterStrategy.ALL_IF_SPACE_NULL - ) { - it.memberships = listOf(Membership.JOIN) - it.roomCategoryFilter = RoomCategoryFilter.ONLY_DM - it.roomTagQueryFilter = RoomTagQueryFilter(true, null, null) - } +// addSection( +// sections, +// activeSpaceAwareQueries, +// R.string.bottom_action_favourites, +// false, +// RoomListViewModel.SpaceFilterStrategy.ALL_IF_SPACE_NULL +// ) { +// it.memberships = listOf(Membership.JOIN) +// it.roomCategoryFilter = RoomCategoryFilter.ONLY_DM +// it.roomTagQueryFilter = RoomTagQueryFilter(true, null, null) +// } addSection( - sections, - activeSpaceAwareQueries, - R.string.bottom_action_people_x, - false, - RoomListViewModel.SpaceFilterStrategy.ALL_IF_SPACE_NULL + sections = sections, + activeSpaceUpdaters = activeSpaceAwareQueries, + nameRes = R.string.bottom_action_people_x, + notifyOfLocalEcho = false, + isCompact = false, + spaceFilterStrategy = RoomListViewModel.SpaceFilterStrategy.ALL_IF_SPACE_NULL ) { it.memberships = listOf(Membership.JOIN) it.roomCategoryFilter = RoomCategoryFilter.ONLY_DM - it.roomTagQueryFilter = RoomTagQueryFilter(false, false, null) + it.roomTagQueryFilter = RoomTagQueryFilter(null, false, null) } addSection( - sections, - activeSpaceAwareQueries, - R.string.low_priority_header, - false, - RoomListViewModel.SpaceFilterStrategy.ALL_IF_SPACE_NULL + sections = sections, + activeSpaceUpdaters = activeSpaceAwareQueries, + nameRes = R.string.low_priority_header, + notifyOfLocalEcho = false, + isCompact = false, + spaceFilterStrategy = RoomListViewModel.SpaceFilterStrategy.ALL_IF_SPACE_NULL ) { it.memberships = listOf(Membership.JOIN) it.roomCategoryFilter = RoomCategoryFilter.ONLY_DM - it.roomTagQueryFilter = RoomTagQueryFilter(false, true, null) + it.roomTagQueryFilter = RoomTagQueryFilter(null, true, null) } } @@ -324,7 +437,9 @@ class RoomListSectionBuilderSpace( activeSpaceUpdaters: MutableList, @StringRes nameRes: Int, notifyOfLocalEcho: Boolean = false, + isCompact: Boolean = false, spaceFilterStrategy: RoomListViewModel.SpaceFilterStrategy = RoomListViewModel.SpaceFilterStrategy.NONE, + sortOrder: RoomSortOrder = RoomSortOrder.ACTIVITY, countRoomAsNotif: Boolean = false, query: (RoomSummaryQueryParams.Builder) -> Unit) { withQueryParams( @@ -333,7 +448,8 @@ class RoomListSectionBuilderSpace( val name = stringProvider.getString(nameRes) session.getFilteredPagedRoomSummariesLive( roomQueryParams.process(spaceFilterStrategy, appStateHandler.safeActiveSpaceId()), - pagedListConfig + pagedListConfig, + sortOrder ).also { when (spaceFilterStrategy) { RoomListViewModel.SpaceFilterStrategy.ORPHANS_IF_SPACE_NULL -> { @@ -395,6 +511,7 @@ class RoomListSectionBuilderSpace( RoomsSection( sectionName = name, livePages = livePagedList, + isCompact = isCompact, notifyOfLocalEcho = notifyOfLocalEcho ) ) diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/RoomSummaryCompactItem.kt b/vector/src/main/java/im/vector/app/features/home/room/list/RoomSummaryCompactItem.kt new file mode 100644 index 00000000000..b734e053656 --- /dev/null +++ b/vector/src/main/java/im/vector/app/features/home/room/list/RoomSummaryCompactItem.kt @@ -0,0 +1,128 @@ +/* + * Copyright 2019 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 + +import android.view.HapticFeedbackConstants +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.core.view.isVisible +import com.airbnb.epoxy.EpoxyAttribute +import com.airbnb.epoxy.EpoxyModelClass +import com.amulyakhare.textdrawable.TextDrawable +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.ui.views.PresenceStateImageView +import im.vector.app.core.ui.views.ShieldImageView +import im.vector.app.features.displayname.getBestName +import im.vector.app.features.home.AvatarRenderer +import im.vector.app.features.themes.ThemeUtils +import org.matrix.android.sdk.api.crypto.RoomEncryptionTrustLevel +import org.matrix.android.sdk.api.session.presence.model.UserPresence +import org.matrix.android.sdk.api.util.MatrixItem + +@EpoxyModelClass(layout = R.layout.item_room_compact) +abstract class RoomSummaryCompactItem : VectorEpoxyModel() { + + // @EpoxyAttribute lateinit var typingMessage: CharSequence + @EpoxyAttribute lateinit var avatarRenderer: AvatarRenderer + @EpoxyAttribute lateinit var matrixItem: MatrixItem + + + // Used only for diff calculation +// @EpoxyAttribute lateinit var lastEvent: String + + // We use DoNotHash here as Spans are not implementing equals/hashcode + @EpoxyAttribute(EpoxyAttribute.Option.DoNotHash) lateinit var lastFormattedEvent: CharSequence + @EpoxyAttribute lateinit var lastEventTime: CharSequence + @EpoxyAttribute var encryptionTrustLevel: RoomEncryptionTrustLevel? = null + @EpoxyAttribute var userPresence: UserPresence? = null + @EpoxyAttribute var showPresence: Boolean = false + @EpoxyAttribute var izPublic: Boolean = false + @EpoxyAttribute var unreadNotificationCount: Int = 0 + @EpoxyAttribute var hasUnreadMessage: Boolean = false + @EpoxyAttribute var hasDraft: Boolean = false + @EpoxyAttribute var showHighlighted: Boolean = false + @EpoxyAttribute var hasFailedSending: Boolean = false + @EpoxyAttribute(EpoxyAttribute.Option.DoNotHash) var itemLongClickListener: View.OnLongClickListener? = null + @EpoxyAttribute(EpoxyAttribute.Option.DoNotHash) var itemClickListener: ClickListener? = null + @EpoxyAttribute var showSelected: Boolean = false + + override fun bind(holder: Holder) { + super.bind(holder) + holder.rootView.onClick(itemClickListener) + holder.rootView.setOnLongClickListener { + it.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS) + itemLongClickListener?.onLongClick(it) ?: false + } + holder.titleView.text = matrixItem.getBestName() + holder.lastEventTimeView.text = lastEventTime +// holder.lastEventView.text = lastFormattedEvent + holder.unreadCounterBadgeView.render(UnreadCounterBadgeView.State(unreadNotificationCount, showHighlighted)) + holder.unreadIndentIndicator.isVisible = hasUnreadMessage + holder.draftView.isVisible = hasDraft + avatarRenderer.render(matrixItem, holder.avatarImageView) + holder.roomAvatarDecorationImageView.render(encryptionTrustLevel) + holder.roomAvatarPublicDecorationImageView.isVisible = izPublic + holder.roomAvatarFailSendingImageView.isVisible = hasFailedSending + renderSelection(holder, showSelected) +// holder.typingView.setTextOrHide(typingMessage) +// holder.lastEventView.isInvisible = holder.typingView.isVisible + holder.roomAvatarPresenceImageView.render(showPresence, userPresence) + } + + override fun unbind(holder: Holder) { + holder.rootView.setOnClickListener(null) + holder.rootView.setOnLongClickListener(null) + avatarRenderer.clear(holder.avatarImageView) + super.unbind(holder) + } + + private fun renderSelection(holder: Holder, isSelected: Boolean) { + if (isSelected) { + holder.avatarCheckedImageView.visibility = View.VISIBLE + val backgroundColor = ThemeUtils.getColor(holder.view.context, R.attr.colorPrimary) + val backgroundDrawable = TextDrawable.builder().buildRound("", backgroundColor) + holder.avatarImageView.setImageDrawable(backgroundDrawable) + } else { + holder.avatarCheckedImageView.visibility = View.GONE + avatarRenderer.render(matrixItem, holder.avatarImageView) + } + } + + class Holder : VectorEpoxyHolder() { + val titleView by bind(R.id.roomNameView) + val unreadCounterBadgeView by bind(R.id.roomUnreadCounterBadgeView) + val unreadIndentIndicator by bind(R.id.roomUnreadIndicator) + + // val lastEventView by bind(R.id.roomLastEventView) +// val typingView by bind(R.id.roomTypingView) + val draftView by bind(R.id.roomDraftBadge) + val lastEventTimeView by bind(R.id.roomLastEventTimeView) + val avatarCheckedImageView by bind(R.id.roomAvatarCheckedImageView) + val avatarImageView by bind(R.id.roomAvatarImageView) + val roomAvatarDecorationImageView by bind(R.id.roomAvatarDecorationImageView) + val roomAvatarPublicDecorationImageView by bind(R.id.roomAvatarPublicDecorationImageView) + val roomAvatarFailSendingImageView by bind(R.id.roomAvatarFailSendingImageView) + val roomAvatarPresenceImageView by bind(R.id.roomAvatarPresenceImageView) + val rootView by bind(R.id.itemRoomLayout) + } +} diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/RoomSummaryItemCompactPlaceHolder.kt b/vector/src/main/java/im/vector/app/features/home/room/list/RoomSummaryItemCompactPlaceHolder.kt new file mode 100644 index 00000000000..daf44ee7909 --- /dev/null +++ b/vector/src/main/java/im/vector/app/features/home/room/list/RoomSummaryItemCompactPlaceHolder.kt @@ -0,0 +1,27 @@ +/* + * Copyright 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 + +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(layout = R.layout.item_room_compact_placeholder) +abstract class RoomSummaryItemCompactPlaceHolder : VectorEpoxyModel() { + class Holder : VectorEpoxyHolder() +} diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/RoomSummaryItemFactory.kt b/vector/src/main/java/im/vector/app/features/home/room/list/RoomSummaryItemFactory.kt index fdb7d3a3234..99459f62a5e 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/RoomSummaryItemFactory.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/RoomSummaryItemFactory.kt @@ -45,13 +45,20 @@ class RoomSummaryItemFactory @Inject constructor(private val displayableEventFor fun create(roomSummary: RoomSummary, roomChangeMembershipStates: Map, selectedRoomIds: Set, + compact: Boolean = false, listener: RoomListListener?): VectorEpoxyModel<*> { return when (roomSummary.membership) { Membership.INVITE -> { val changeMembershipState = roomChangeMembershipStates[roomSummary.roomId] ?: ChangeMembershipState.Unknown createInvitationItem(roomSummary, changeMembershipState, listener) } - else -> createRoomItem(roomSummary, selectedRoomIds, listener?.let { it::onRoomClicked }, listener?.let { it::onRoomLongClicked }) + else -> createRoomItem( + roomSummary, + selectedRoomIds, + compact, + listener?.let { it::onRoomClicked }, + listener?.let { it::onRoomLongClicked } + ) } } @@ -104,6 +111,7 @@ class RoomSummaryItemFactory @Inject constructor(private val displayableEventFor fun createRoomItem( roomSummary: RoomSummary, selectedRoomIds: Set, + compact: Boolean, onClick: ((RoomSummary) -> Unit)?, onLongClick: ((RoomSummary) -> Boolean)? ): VectorEpoxyModel<*> { @@ -118,28 +126,52 @@ class RoomSummaryItemFactory @Inject constructor(private val displayableEventFor latestEventTime = dateFormatter.format(latestEvent.root.originServerTs, DateFormatKind.ROOM_LIST) } val typingMessage = typingHelper.getTypingMessage(roomSummary.typingUsers) - return RoomSummaryItem_() - .id(roomSummary.roomId) - .avatarRenderer(avatarRenderer) - // We do not display shield in the room list anymore - // .encryptionTrustLevel(roomSummary.roomEncryptionTrustLevel) - .izPublic(roomSummary.isPublic) - .showPresence(roomSummary.isDirect) - .userPresence(roomSummary.directUserPresence) - .matrixItem(roomSummary.toMatrixItem()) - .lastEventTime(latestEventTime) - .typingMessage(typingMessage) - .lastEvent(latestFormattedEvent.toString()) - .lastFormattedEvent(latestFormattedEvent) - .showHighlighted(showHighlighted) - .showSelected(showSelected) - .hasFailedSending(roomSummary.hasFailedSending) - .unreadNotificationCount(unreadCount) - .hasUnreadMessage(roomSummary.hasUnreadMessages) - .hasDraft(roomSummary.userDrafts.isNotEmpty()) - .itemLongClickListener { _ -> - onLongClick?.invoke(roomSummary) ?: false - } - .itemClickListener { onClick?.invoke(roomSummary) } + return if (compact) { + RoomSummaryCompactItem_() + .id(roomSummary.roomId) + .avatarRenderer(avatarRenderer) + // We do not display shield in the room list anymore + // .encryptionTrustLevel(roomSummary.roomEncryptionTrustLevel) + .izPublic(roomSummary.isPublic) + .showPresence(roomSummary.isDirect) + .userPresence(roomSummary.directUserPresence) + .matrixItem(roomSummary.toMatrixItem()) + .lastEventTime(latestEventTime) + .lastFormattedEvent(latestFormattedEvent) + .showHighlighted(showHighlighted) + .showSelected(showSelected) + .hasFailedSending(roomSummary.hasFailedSending) + .unreadNotificationCount(unreadCount) + .hasUnreadMessage(roomSummary.hasUnreadMessages) + .hasDraft(roomSummary.userDrafts.isNotEmpty()) + .itemLongClickListener { _ -> + onLongClick?.invoke(roomSummary) ?: false + } + .itemClickListener { onClick?.invoke(roomSummary) } + } else { + RoomSummaryItem_() + .id(roomSummary.roomId) + .avatarRenderer(avatarRenderer) + // We do not display shield in the room list anymore + // .encryptionTrustLevel(roomSummary.roomEncryptionTrustLevel) + .showPresence(roomSummary.isDirect) + .userPresence(roomSummary.directUserPresence) + .izPublic(roomSummary.isPublic) + .matrixItem(roomSummary.toMatrixItem()) + .lastEventTime(latestEventTime) + .typingMessage(typingMessage) + .lastEvent(latestFormattedEvent.toString()) + .lastFormattedEvent(latestFormattedEvent) + .showHighlighted(showHighlighted) + .showSelected(showSelected) + .hasFailedSending(roomSummary.hasFailedSending) + .unreadNotificationCount(unreadCount) + .hasUnreadMessage(roomSummary.hasUnreadMessages) + .hasDraft(roomSummary.userDrafts.isNotEmpty()) + .itemLongClickListener { _ -> + onLongClick?.invoke(roomSummary) ?: false + } + .itemClickListener { onClick?.invoke(roomSummary) } + } } } diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/RoomSummaryListController.kt b/vector/src/main/java/im/vector/app/features/home/room/list/RoomSummaryListController.kt index 75aaee45cbc..c49c4f2821e 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/RoomSummaryListController.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/RoomSummaryListController.kt @@ -26,7 +26,7 @@ class RoomSummaryListController( override fun buildModels(data: List?) { data?.forEach { - add(roomSummaryItemFactory.create(it, emptyMap(), emptySet(), listener)) + add(roomSummaryItemFactory.create(it, emptyMap(), emptySet(), compactModeOn, listener)) } } } diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/RoomSummaryPagedController.kt b/vector/src/main/java/im/vector/app/features/home/room/list/RoomSummaryPagedController.kt index e9cbc692156..1f4a3c8ef95 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/RoomSummaryPagedController.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/RoomSummaryPagedController.kt @@ -27,7 +27,7 @@ class RoomSummaryPagedController( ) : PagedListEpoxyController( // Important it must match the PageList builder notify Looper modelBuildingHandler = createUIHandler() -), CollapsableControllerExtension { +), CollapsableControllerExtension, CompactModeControllerExtension { var listener: RoomListListener? = null @@ -46,6 +46,14 @@ class RoomSummaryPagedController( } } + override var compactModeOn: Boolean = false + set(value) { + if (field != value) { + field = value + requestForcedModelBuild() + } + } + override fun addModels(models: List>) { if (collapsed) { super.addModels(emptyList()) @@ -56,7 +64,11 @@ class RoomSummaryPagedController( override fun buildItemModel(currentPosition: Int, item: RoomSummary?): EpoxyModel<*> { // for place holder if enabled - item ?: return RoomSummaryItemPlaceHolder_().apply { id(currentPosition) } - return roomSummaryItemFactory.create(item, roomChangeMembershipStates.orEmpty(), emptySet(), listener) + item ?: return if (compactModeOn) { + RoomSummaryItemCompactPlaceHolder_().apply { id(currentPosition) } + } else { + RoomSummaryItemPlaceHolder_().apply { id(currentPosition) } + } + return roomSummaryItemFactory.create(item, roomChangeMembershipStates.orEmpty(), emptySet(), compactModeOn, listener) } } diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/RoomSummaryPagedControllerFactory.kt b/vector/src/main/java/im/vector/app/features/home/room/list/RoomSummaryPagedControllerFactory.kt index c86d8ab2439..58bda24f5a8 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/RoomSummaryPagedControllerFactory.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/RoomSummaryPagedControllerFactory.kt @@ -26,10 +26,22 @@ class RoomSummaryPagedControllerFactory @Inject constructor( return RoomSummaryPagedController(roomSummaryItemFactory) } + fun createCompactRoomSummaryPagedController(): RoomSummaryPagedController { + return RoomSummaryPagedController(roomSummaryItemFactory).apply { + setCompactMode(true) + } + } + fun createRoomSummaryListController(): RoomSummaryListController { return RoomSummaryListController(roomSummaryItemFactory) } + fun createCompactRoomSummaryListController(): RoomSummaryListController { + return RoomSummaryListController(roomSummaryItemFactory).apply { + setCompactMode(true) + } + } + fun createSuggestedRoomListController(): SuggestedRoomListController { return SuggestedRoomListController(roomSummaryItemFactory) } diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/RoomsSection.kt b/vector/src/main/java/im/vector/app/features/home/room/list/RoomsSection.kt index 5eaae262a61..e4349fac412 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/RoomsSection.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/RoomsSection.kt @@ -30,5 +30,6 @@ data class RoomsSection( val liveSuggested: LiveData? = null, val isExpanded: MutableLiveData = MutableLiveData(true), val notificationCount: MutableLiveData = MutableLiveData(RoomAggregateNotificationCount(0, 0)), - val notifyOfLocalEcho: Boolean = false + val notifyOfLocalEcho: Boolean = false, + val isCompact: Boolean = false ) 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 07cd9d6dac4..e34e8b48a04 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,7 +165,6 @@ class VectorPreferences @Inject constructor(private val context: Context) { // SETTINGS_LABS_HIDE_TECHNICAL_E2E_ERRORS private const val SETTINGS_LABS_SHOW_COMPLETE_HISTORY_IN_ENCRYPTED_ROOM = "SETTINGS_LABS_SHOW_COMPLETE_HISTORY_IN_ENCRYPTED_ROOM" - const val SETTINGS_LABS_UNREAD_NOTIFICATIONS_AS_TAB = "SETTINGS_LABS_UNREAD_NOTIFICATIONS_AS_TAB" // analytics const val SETTINGS_USE_ANALYTICS_KEY = "SETTINGS_USE_ANALYTICS_KEY" @@ -335,10 +334,6 @@ class VectorPreferences @Inject constructor(private val context: Context) { return developerMode() && defaultPrefs.getBoolean(SETTINGS_LABS_ALLOW_EXTENDED_LOGS, false) } - fun labAddNotificationTab(): Boolean { - return defaultPrefs.getBoolean(SETTINGS_LABS_UNREAD_NOTIFICATIONS_AS_TAB, false) - } - fun failFast(): Boolean { return BuildConfig.DEBUG || (developerMode() && defaultPrefs.getBoolean(SETTINGS_DEVELOPER_MODE_FAIL_FAST_PREFERENCE_KEY, false)) } diff --git a/vector/src/main/java/im/vector/app/features/share/IncomingShareController.kt b/vector/src/main/java/im/vector/app/features/share/IncomingShareController.kt index fd35bf11a42..7421f891871 100644 --- a/vector/src/main/java/im/vector/app/features/share/IncomingShareController.kt +++ b/vector/src/main/java/im/vector/app/features/share/IncomingShareController.kt @@ -53,7 +53,7 @@ class IncomingShareController @Inject constructor(private val roomSummaryItemFac } else { roomSummaries.forEach { roomSummary -> roomSummaryItemFactory - .createRoomItem(roomSummary, data.selectedRoomIds, callback?.let { it::onRoomClicked }, callback?.let { it::onRoomLongClicked }) + .createRoomItem(roomSummary, data.selectedRoomIds, false, callback?.let { it::onRoomClicked }, callback?.let { it::onRoomLongClicked }) .addTo(this) } } diff --git a/vector/src/main/java/im/vector/app/features/ui/SharedPreferencesUiStateRepository.kt b/vector/src/main/java/im/vector/app/features/ui/SharedPreferencesUiStateRepository.kt index e46c3516ca3..ecb7542bb51 100644 --- a/vector/src/main/java/im/vector/app/features/ui/SharedPreferencesUiStateRepository.kt +++ b/vector/src/main/java/im/vector/app/features/ui/SharedPreferencesUiStateRepository.kt @@ -40,11 +40,7 @@ class SharedPreferencesUiStateRepository @Inject constructor( return when (sharedPreferences.getInt(KEY_DISPLAY_MODE, VALUE_DISPLAY_MODE_CATCHUP)) { VALUE_DISPLAY_MODE_PEOPLE -> RoomListDisplayMode.PEOPLE VALUE_DISPLAY_MODE_ROOMS -> RoomListDisplayMode.ROOMS - else -> if (vectorPreferences.labAddNotificationTab()) { - RoomListDisplayMode.NOTIFICATIONS - } else { - RoomListDisplayMode.PEOPLE - } + else -> RoomListDisplayMode.HOME } } diff --git a/vector/src/main/res/layout/item_room_compact.xml b/vector/src/main/res/layout/item_room_compact.xml new file mode 100644 index 00000000000..7b99ee76cb1 --- /dev/null +++ b/vector/src/main/res/layout/item_room_compact.xml @@ -0,0 +1,243 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/vector/src/main/res/layout/item_room_compact_placeholder.xml b/vector/src/main/res/layout/item_room_compact_placeholder.xml new file mode 100644 index 00000000000..2f0fadedf8e --- /dev/null +++ b/vector/src/main/res/layout/item_room_compact_placeholder.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/vector/src/main/res/menu/home_bottom_navigation.xml b/vector/src/main/res/menu/home_bottom_navigation.xml index f9f966003aa..449877d04e7 100644 --- a/vector/src/main/res/menu/home_bottom_navigation.xml +++ b/vector/src/main/res/menu/home_bottom_navigation.xml @@ -1,6 +1,13 @@ + + - - People Rooms Communities + Unread Messages + Unread Rooms Filter room names diff --git a/vector/src/main/res/xml/vector_settings_labs.xml b/vector/src/main/res/xml/vector_settings_labs.xml index 6260f65fd95..3304b994748 100644 --- a/vector/src/main/res/xml/vector_settings_labs.xml +++ b/vector/src/main/res/xml/vector_settings_labs.xml @@ -39,12 +39,6 @@ android:key="SETTINGS_LABS_ENABLE_SWIPE_TO_REPLY" android:title="@string/labs_swipe_to_reply_in_timeline" /> - - - Date: Thu, 16 Sep 2021 14:53:29 +0200 Subject: [PATCH 02/17] Add support for simple vs pro layout --- .../room/summary/RoomSummaryDataSource.kt | 22 ++- .../app/core/preference/LayoutPreference.kt | 86 +++++++++ .../app/features/home/HomeDetailAction.kt | 3 +- .../app/features/home/HomeDetailFragment.kt | 106 +++++++---- .../app/features/home/HomeDetailViewModel.kt | 20 ++- .../app/features/home/HomeDetailViewState.kt | 6 +- .../app/features/home/RoomListDisplayMode.kt | 1 + .../room/list/RoomListSectionBuilderSpace.kt | 124 +++++++++++++ .../app/features/settings/LayoutMode.kt | 22 +++ .../features/settings/VectorPreferences.kt | 18 ++ .../VectorSettingsPreferencesFragment.kt | 13 ++ .../src/main/res/drawable/ic_pro_layout.xml | 168 ++++++++++++++++++ .../main/res/drawable/ic_simple_layout.xml | 156 ++++++++++++++++ .../layout/preference_app_choose_layout.xml | 121 +++++++++++++ .../main/res/menu/home_bottom_navigation.xml | 6 + vector/src/main/res/values/strings.xml | 8 + .../res/xml/vector_settings_preferences.xml | 9 +- 17 files changed, 840 insertions(+), 49 deletions(-) create mode 100644 vector/src/main/java/im/vector/app/core/preference/LayoutPreference.kt create mode 100644 vector/src/main/java/im/vector/app/features/settings/LayoutMode.kt create mode 100644 vector/src/main/res/drawable/ic_pro_layout.xml create mode 100644 vector/src/main/res/drawable/ic_simple_layout.xml create mode 100644 vector/src/main/res/layout/preference_app_choose_layout.xml diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/summary/RoomSummaryDataSource.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/summary/RoomSummaryDataSource.kt index 0de27634b97..16283683542 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/summary/RoomSummaryDataSource.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/summary/RoomSummaryDataSource.kt @@ -247,14 +247,14 @@ internal class RoomSummaryDataSource @Inject constructor(@SessionDatabase privat queryParams.roomCategoryFilter?.let { when (it) { - RoomCategoryFilter.ONLY_DM -> query.equalTo(RoomSummaryEntityFields.IS_DIRECT, true) - RoomCategoryFilter.ONLY_ROOMS -> query.equalTo(RoomSummaryEntityFields.IS_DIRECT, false) - RoomCategoryFilter.ONLY_WITH_NOTIFICATIONS -> query.greaterThan(RoomSummaryEntityFields.NOTIFICATION_COUNT, 0) - RoomCategoryFilter.UNREAD_NOTIFICATION_DMS -> { + RoomCategoryFilter.ONLY_DM -> query.equalTo(RoomSummaryEntityFields.IS_DIRECT, true) + RoomCategoryFilter.ONLY_ROOMS -> query.equalTo(RoomSummaryEntityFields.IS_DIRECT, false) + RoomCategoryFilter.ONLY_WITH_NOTIFICATIONS -> query.greaterThan(RoomSummaryEntityFields.NOTIFICATION_COUNT, 0) + RoomCategoryFilter.UNREAD_NOTIFICATION_DMS -> { query.equalTo(RoomSummaryEntityFields.IS_DIRECT, true) query.greaterThan(RoomSummaryEntityFields.NOTIFICATION_COUNT, 0) } - RoomCategoryFilter.UNREAD_NOTIFICATION_ROOMS -> { + RoomCategoryFilter.UNREAD_NOTIFICATION_ROOMS -> { query.equalTo(RoomSummaryEntityFields.IS_DIRECT, false) query.greaterThan(RoomSummaryEntityFields.NOTIFICATION_COUNT, 0) } @@ -262,11 +262,11 @@ internal class RoomSummaryDataSource @Inject constructor(@SessionDatabase privat query.equalTo(RoomSummaryEntityFields.IS_DIRECT, false) query.equalTo(RoomSummaryEntityFields.NOTIFICATION_COUNT, 0.toInt()) } - RoomCategoryFilter.DMS_WITH_NO_NOTIFICATION -> { + RoomCategoryFilter.DMS_WITH_NO_NOTIFICATION -> { query.equalTo(RoomSummaryEntityFields.IS_DIRECT, true) query.equalTo(RoomSummaryEntityFields.NOTIFICATION_COUNT, 0.toInt()) } - RoomCategoryFilter.ALL -> { + RoomCategoryFilter.ALL -> { // nop } } @@ -296,8 +296,12 @@ internal class RoomSummaryDataSource @Inject constructor(@SessionDatabase privat // It's annoying but for now realm java does not support querying in primitive list :/ // https://github.com/realm/realm-java/issues/5361 if (queryParams.activeSpaceFilter.currentSpaceId == null) { - // orphan rooms - query.isNull(RoomSummaryEntityFields.FLATTEN_PARENT_IDS) + // orphan rooms -keep all dms, no concept of orphan DMs- + query.beginGroup() + .isNull(RoomSummaryEntityFields.FLATTEN_PARENT_IDS) + .or() + .equalTo(RoomSummaryEntityFields.IS_DIRECT, true) + .endGroup() } else { query.contains(RoomSummaryEntityFields.FLATTEN_PARENT_IDS, queryParams.activeSpaceFilter.currentSpaceId) } diff --git a/vector/src/main/java/im/vector/app/core/preference/LayoutPreference.kt b/vector/src/main/java/im/vector/app/core/preference/LayoutPreference.kt new file mode 100644 index 00000000000..63447f972f8 --- /dev/null +++ b/vector/src/main/java/im/vector/app/core/preference/LayoutPreference.kt @@ -0,0 +1,86 @@ +/* + * 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.core.preference + +import android.content.Context +import android.util.AttributeSet +import android.widget.RadioGroup +import androidx.preference.Preference +import androidx.preference.PreferenceViewHolder +import im.vector.app.R +import im.vector.app.features.settings.LayoutMode + +class LayoutPreference : Preference { + + interface LayoutModeChangeListener { + fun onLayoutModeChange(mode: LayoutMode) + } + + var listener: LayoutModeChangeListener? = null + + constructor(context: Context) : super(context) + + constructor(context: Context, attrs: AttributeSet) : super(context, attrs) + + constructor(context: Context, attrs: AttributeSet, defStyle: Int) : super(context, attrs, defStyle) + + private var radioGroup: RadioGroup? = null + + init { + layoutResource = R.layout.preference_app_choose_layout + isIconSpaceReserved = true + } + + var selectedLayoutMode: LayoutMode = LayoutMode.PRODUCTIVITY + set(value) { + when (value) { + LayoutMode.SIMPLE -> { + radioGroup?.check(R.id.simpleLayoutRadioButton) + } + LayoutMode.PRODUCTIVITY -> { + radioGroup?.check(R.id.proLayoutRadioButton) + } + } + field = value + } + + override fun onBindViewHolder(holder: PreferenceViewHolder?) { + super.onBindViewHolder(holder) + holder?.itemView?.setOnClickListener(null) + + radioGroup = holder?.findViewById(R.id.chooseLayoutRadioGroup) as? RadioGroup + // set initial + when (selectedLayoutMode) { + LayoutMode.SIMPLE -> { + radioGroup?.check(R.id.simpleLayoutRadioButton) + } + LayoutMode.PRODUCTIVITY -> { + radioGroup?.check(R.id.proLayoutRadioButton) + } + } + + radioGroup?.setOnCheckedChangeListener { _, checkedId -> + when (checkedId) { + R.id.simpleLayoutRadioButton -> listener?.onLayoutModeChange(LayoutMode.SIMPLE) + R.id.proLayoutRadioButton -> listener?.onLayoutModeChange(LayoutMode.PRODUCTIVITY) + else -> { + // nop + } + } + } + } +} diff --git a/vector/src/main/java/im/vector/app/features/home/HomeDetailAction.kt b/vector/src/main/java/im/vector/app/features/home/HomeDetailAction.kt index 26f0e56f234..74e834d72b4 100644 --- a/vector/src/main/java/im/vector/app/features/home/HomeDetailAction.kt +++ b/vector/src/main/java/im/vector/app/features/home/HomeDetailAction.kt @@ -21,5 +21,6 @@ import im.vector.app.core.platform.VectorViewModelAction sealed class HomeDetailAction : VectorViewModelAction { data class SwitchTab(val tab: HomeTab) : HomeDetailAction() object MarkAllRoomsRead : HomeDetailAction() - data class StartCallWithPhoneNumber(val phoneNumber: String) : HomeDetailAction() + data class StartCallWithPhoneNumber(val phoneNumber: String): HomeDetailAction() + object ViewResumed : HomeDetailAction() } diff --git a/vector/src/main/java/im/vector/app/features/home/HomeDetailFragment.kt b/vector/src/main/java/im/vector/app/features/home/HomeDetailFragment.kt index b960394ba2d..910ece54897 100644 --- a/vector/src/main/java/im/vector/app/features/home/HomeDetailFragment.kt +++ b/vector/src/main/java/im/vector/app/features/home/HomeDetailFragment.kt @@ -51,6 +51,7 @@ import im.vector.app.features.home.room.list.RoomListParams import im.vector.app.features.home.room.list.UnreadCounterBadgeView import im.vector.app.features.popup.PopupAlertManager import im.vector.app.features.popup.VerificationVectorAlert +import im.vector.app.features.settings.LayoutMode import im.vector.app.features.settings.VectorLocale import im.vector.app.features.settings.VectorPreferences import im.vector.app.features.settings.VectorSettingsActivity.Companion.EXTRA_DIRECT_ACCESS_SECURITY_PRIVACY_MANAGE_SESSIONS @@ -149,8 +150,8 @@ class HomeDetailFragment @Inject constructor( updateUIForTab(currentTab) } - viewModel.onEach(HomeDetailViewState::showDialPadTab) { showDialPadTab -> - updateTabVisibilitySafely(R.id.bottom_action_dial_pad, showDialPadTab) + viewModel.selectSubscribe(this, HomeDetailViewState::showDialPadTab, HomeDetailViewState::layoutMode) { showDialPadTab, layoutMode -> + updateTabNavigationSafely(layoutMode, showDialPadTab) } viewModel.observeViewEvents { viewEvent -> @@ -209,9 +210,8 @@ class HomeDetailFragment @Inject constructor( override fun onResume() { super.onResume() - // update notification tab if needed -// updateTabVisibilitySafely(R.id.bottom_action_notification, vectorPreferences.labAddNotificationTab()) callManager.checkForProtocolsSupportIfNeeded() + viewModel.handle(HomeDetailAction.ViewResumed) // Current space/group is not live so at least refresh toolbar on resume appStateHandler.getCurrentRoomGroupingMethod()?.let { roomGroupingMethod -> @@ -347,25 +347,15 @@ class HomeDetailFragment @Inject constructor( private fun setupBottomNavigationView() { views.bottomNavigationView.setOnItemSelectedListener { val tab = when (it.itemId) { - R.id.bottom_action_people -> HomeTab.RoomList(RoomListDisplayMode.PEOPLE) - R.id.bottom_action_rooms -> HomeTab.RoomList(RoomListDisplayMode.ROOMS) - R.id.bottom_action_home -> HomeTab.RoomList(RoomListDisplayMode.HOME) - else -> HomeTab.DialPad + R.id.bottom_action_people -> HomeTab.RoomList(RoomListDisplayMode.PEOPLE) + R.id.bottom_action_rooms -> HomeTab.RoomList(RoomListDisplayMode.ROOMS) + R.id.bottom_action_home -> HomeTab.RoomList(RoomListDisplayMode.HOME) + R.id.bottom_action_all_in_one -> HomeTab.RoomList(RoomListDisplayMode.ALL_IN_ONE) + else -> HomeTab.DialPad } viewModel.handle(HomeDetailAction.SwitchTab(tab)) true } - -// val menuView = bottomNavigationView.getChildAt(0) as BottomNavigationMenuView - -// bottomNavigationView.getOrCreateBadge() -// menuView.forEachIndexed { index, view -> -// val itemView = view as BottomNavigationItemView -// val badgeLayout = LayoutInflater.from(requireContext()).inflate(R.layout.vector_home_badge_unread_layout, menuView, false) -// val unreadCounterBadgeView: UnreadCounterBadgeView = badgeLayout.findViewById(R.id.actionUnreadCounterBadgeView) -// itemView.addView(badgeLayout) -// unreadCounterBadgeViews.add(index, unreadCounterBadgeView) -// } } private fun updateUIForTab(tab: HomeTab) { @@ -417,14 +407,54 @@ class HomeDetailFragment @Inject constructor( } } - private fun updateTabVisibilitySafely(tabId: Int, isVisible: Boolean) { - val wasVisible = views.bottomNavigationView.menu.findItem(tabId).isVisible - views.bottomNavigationView.menu.findItem(tabId).isVisible = isVisible - if (wasVisible && !isVisible) { - // As we hide it check if it's not the current item! - withState(viewModel) { - if (it.currentTab.toMenuId() == tabId) { - viewModel.handle(HomeDetailAction.SwitchTab(HomeTab.RoomList(RoomListDisplayMode.PEOPLE))) + private fun updateTabNavigationSafely(layoutMode: LayoutMode, dialPadVisible: Boolean) = withState(viewModel) { state -> + + when (layoutMode) { + LayoutMode.SIMPLE -> { + views.bottomNavigationView.menu.findItem(R.id.bottom_action_home).isVisible = false + views.bottomNavigationView.menu.findItem(R.id.bottom_action_people).isVisible = false + views.bottomNavigationView.menu.findItem(R.id.bottom_action_rooms).isVisible = false + views.bottomNavigationView.menu.findItem(R.id.bottom_action_all_in_one).isVisible = true + } + LayoutMode.PRODUCTIVITY -> { + views.bottomNavigationView.menu.findItem(R.id.bottom_action_home).isVisible = true + views.bottomNavigationView.menu.findItem(R.id.bottom_action_people).isVisible = true + views.bottomNavigationView.menu.findItem(R.id.bottom_action_rooms).isVisible = true + views.bottomNavigationView.menu.findItem(R.id.bottom_action_all_in_one).isVisible = false + } + } + + views.bottomNavigationView.menu.findItem(R.id.bottom_action_dial_pad).isVisible = dialPadVisible + + val tabs = listOf( + R.id.bottom_action_home, + R.id.bottom_action_people, + R.id.bottom_action_rooms, + R.id.bottom_action_all_in_one, + R.id.bottom_action_dial_pad + ) + val numberOfVisibleTabs = tabs.fold(0) { acc, id -> + val increment = if (views.bottomNavigationView.menu.findItem(id).isVisible) 1 else 0 + acc + increment + } + + views.bottomNavigationView.isVisible = numberOfVisibleTabs > 1 + + // We should ensure that the current selected display mode is active, and if not switch! + if (!views.bottomNavigationView.menu.findItem(state.currentTab.toMenuId()).isVisible) { + // switch to the first visible one? + tabs.firstOrNull() { + views.bottomNavigationView.menu.findItem(it).isVisible + }?.let { tabId -> + when (tabId) { + R.id.bottom_action_home -> HomeTab.RoomList(RoomListDisplayMode.HOME) + R.id.bottom_action_people -> HomeTab.RoomList(RoomListDisplayMode.PEOPLE) + R.id.bottom_action_rooms -> HomeTab.RoomList(RoomListDisplayMode.ROOMS) + R.id.bottom_action_all_in_one -> HomeTab.RoomList(RoomListDisplayMode.ALL_IN_ONE) + R.id.bottom_action_dial_pad -> HomeTab.DialPad + else -> null + }?.let { tab -> + viewModel.handle(HomeDetailAction.SwitchTab(tab)) } } } @@ -444,9 +474,18 @@ class HomeDetailFragment @Inject constructor( override fun invalidate() = withState(viewModel) { // Timber.v(it.toString()) - views.bottomNavigationView.getOrCreateBadge(R.id.bottom_action_people).render(it.notificationCountPeople, it.notificationHighlightPeople) - views.bottomNavigationView.getOrCreateBadge(R.id.bottom_action_rooms).render(it.notificationCountRooms, it.notificationHighlightRooms) - views.bottomNavigationView.getOrCreateBadge(R.id.bottom_action_home).render(it.notificationCountHome, it.notificationHighlightHome) + views.bottomNavigationView + .getOrCreateBadge(R.id.bottom_action_people) + .render(it.notificationCountPeople, it.notificationHighlightPeople) + views.bottomNavigationView + .getOrCreateBadge(R.id.bottom_action_rooms) + .render(it.notificationCountRooms, it.notificationHighlightRooms) + views.bottomNavigationView + .getOrCreateBadge(R.id.bottom_action_home) + .render(it.notificationCountHome, it.notificationHighlightHome) + views.bottomNavigationView + .getOrCreateBadge(R.id.bottom_action_all_in_one) + .render(it.notificationCountAllInOne, it.notificationHighlightAllInOne) views.syncStateView.render( it.syncState, it.incrementalSyncStatus, @@ -471,9 +510,10 @@ class HomeDetailFragment @Inject constructor( private fun HomeTab.toMenuId() = when (this) { is HomeTab.DialPad -> R.id.bottom_action_dial_pad is HomeTab.RoomList -> when (displayMode) { - RoomListDisplayMode.PEOPLE -> R.id.bottom_action_people - RoomListDisplayMode.ROOMS -> R.id.bottom_action_rooms - else -> R.id.bottom_action_home + RoomListDisplayMode.PEOPLE -> R.id.bottom_action_people + RoomListDisplayMode.ROOMS -> R.id.bottom_action_rooms + RoomListDisplayMode.ALL_IN_ONE -> R.id.bottom_action_all_in_one + else -> R.id.bottom_action_home } } diff --git a/vector/src/main/java/im/vector/app/features/home/HomeDetailViewModel.kt b/vector/src/main/java/im/vector/app/features/home/HomeDetailViewModel.kt index ee75c774242..2665a7f3e66 100644 --- a/vector/src/main/java/im/vector/app/features/home/HomeDetailViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/home/HomeDetailViewModel.kt @@ -33,6 +33,7 @@ import im.vector.app.features.call.webrtc.WebRtcCallManager import im.vector.app.features.createdirect.DirectRoomHelper import im.vector.app.features.invite.AutoAcceptInvites import im.vector.app.features.invite.showInvites +import im.vector.app.features.settings.VectorPreferences import im.vector.app.features.settings.VectorDataStore import im.vector.app.features.ui.UiStateRepository import io.reactivex.schedulers.Schedulers @@ -65,8 +66,9 @@ class HomeDetailViewModel @AssistedInject constructor(@Assisted initialState: Ho private val callManager: WebRtcCallManager, private val directRoomHelper: DirectRoomHelper, private val appStateHandler: AppStateHandler, - private val autoAcceptInvites: AutoAcceptInvites) : - VectorViewModel(initialState), + private val vectorPreferences: VectorPreferences, + private val autoAcceptInvites: AutoAcceptInvites) + : VectorViewModel(initialState), CallProtocolsChecker.Listener { @AssistedFactory @@ -121,6 +123,14 @@ class HomeDetailViewModel @AssistedInject constructor(@Assisted initialState: Ho is HomeDetailAction.SwitchTab -> handleSwitchTab(action) HomeDetailAction.MarkAllRoomsRead -> handleMarkAllRoomsRead() is HomeDetailAction.StartCallWithPhoneNumber -> handleStartCallWithPhoneNumber(action) + HomeDetailAction.ViewResumed -> handleViewResumed() + } + } + + private fun handleViewResumed() { + // Good place to check for layout mode + setState { + copy(layoutMode = vectorPreferences.getLayoutMode()) } } @@ -278,13 +288,17 @@ class HomeDetailViewModel @AssistedInject constructor(@Assisted initialState: Ho setState { copy( + // On home we don't count DMs or Other rooms as it will be already highlighted in + // their respected tabs notificationCountHome = roomsInvite + dmInvites + favRooms.totalCount, notificationHighlightHome = dmInvites + roomsInvite > 0 || favRooms.totalCount > 0, notificationCountPeople = dmRooms.totalCount, notificationHighlightPeople = dmRooms.isHighlight, notificationCountRooms = otherRooms.totalCount + roomsInvite, notificationHighlightRooms = otherRooms.isHighlight, - hasUnreadMessages = dmRooms.totalCount + otherRooms.totalCount > 0 + hasUnreadMessages = dmRooms.totalCount + otherRooms.totalCount > 0, + notificationCountAllInOne = roomsInvite + dmInvites + favRooms.totalCount + otherRooms.totalCount, + notificationHighlightAllInOne = dmInvites + roomsInvite > 0 || favRooms.totalCount > 0 || otherRooms.totalCount > 0 ) } } diff --git a/vector/src/main/java/im/vector/app/features/home/HomeDetailViewState.kt b/vector/src/main/java/im/vector/app/features/home/HomeDetailViewState.kt index 9a54aa40cc9..156f7a14d66 100644 --- a/vector/src/main/java/im/vector/app/features/home/HomeDetailViewState.kt +++ b/vector/src/main/java/im/vector/app/features/home/HomeDetailViewState.kt @@ -22,6 +22,7 @@ import com.airbnb.mvrx.MavericksState import com.airbnb.mvrx.Uninitialized import im.vector.app.R import im.vector.app.RoomGroupingMethod +import im.vector.app.features.settings.LayoutMode import org.matrix.android.sdk.api.session.initsync.SyncStatusService import org.matrix.android.sdk.api.session.room.model.RoomSummary import org.matrix.android.sdk.api.session.sync.SyncState @@ -38,11 +39,14 @@ data class HomeDetailViewState( val notificationHighlightPeople: Boolean = false, val notificationCountRooms: Int = 0, val notificationHighlightRooms: Boolean = false, + val notificationCountAllInOne: Int = 0, + val notificationHighlightAllInOne: Boolean = false, val hasUnreadMessages: Boolean = false, val syncState: SyncState = SyncState.Idle, val incrementalSyncStatus: SyncStatusService.Status.IncrementalSyncStatus = SyncStatusService.Status.IncrementalSyncIdle, val pushCounter: Int = 0, - val showDialPadTab: Boolean = false + val showDialPadTab: Boolean = false, + val layoutMode: LayoutMode = LayoutMode.PRODUCTIVITY ) : MavericksState sealed class HomeTab(@StringRes val titleRes: Int) { diff --git a/vector/src/main/java/im/vector/app/features/home/RoomListDisplayMode.kt b/vector/src/main/java/im/vector/app/features/home/RoomListDisplayMode.kt index e366d00658e..048cd6d2f24 100644 --- a/vector/src/main/java/im/vector/app/features/home/RoomListDisplayMode.kt +++ b/vector/src/main/java/im/vector/app/features/home/RoomListDisplayMode.kt @@ -23,5 +23,6 @@ enum class RoomListDisplayMode(@StringRes val titleRes: Int) { HOME(R.string.bottom_action_home), PEOPLE(R.string.bottom_action_people_x), ROOMS(R.string.bottom_action_rooms), + ALL_IN_ONE(R.string.bottom_action_discussions), FILTERED(/* Not used */ 0) } diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/RoomListSectionBuilderSpace.kt b/vector/src/main/java/im/vector/app/features/home/room/list/RoomListSectionBuilderSpace.kt index 10f461be9e2..01bde806439 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/RoomListSectionBuilderSpace.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/RoomListSectionBuilderSpace.kt @@ -98,6 +98,9 @@ class RoomListSectionBuilderSpace( RoomListDisplayMode.HOME -> { buildHomeSections(sections, activeSpaceAwareQueries) } + RoomListDisplayMode.ALL_IN_ONE -> { + buildAllInOneSections(sections, activeSpaceAwareQueries) + } } appStateHandler.selectedRoomGroupingObservable @@ -255,6 +258,127 @@ class RoomListSectionBuilderSpace( ) } + private fun buildAllInOneSections(sections: MutableList, activeSpaceAwareQueries: MutableList) { + if (autoAcceptInvites.showInvites()) { + addSection( + sections = sections, + activeSpaceUpdaters = activeSpaceAwareQueries, + nameRes = R.string.invitations_header, + notifyOfLocalEcho = true, + spaceFilterStrategy = if (onlyOrphansInHome) { + RoomListViewModel.SpaceFilterStrategy.ORPHANS_IF_SPACE_NULL + } else { + RoomListViewModel.SpaceFilterStrategy.ALL_IF_SPACE_NULL + }, + countRoomAsNotif = true + ) { + it.memberships = listOf(Membership.INVITE) + it.roomCategoryFilter = RoomCategoryFilter.ALL + } + } + + addSection( + sections = sections, + activeSpaceUpdaters = activeSpaceAwareQueries, + nameRes = R.string.bottom_action_favourites, + notifyOfLocalEcho = false, + isCompact = false, + spaceFilterStrategy = RoomListViewModel.SpaceFilterStrategy.ALL_IF_SPACE_NULL + ) { + it.memberships = listOf(Membership.JOIN) + it.roomCategoryFilter = RoomCategoryFilter.ALL + it.roomTagQueryFilter = RoomTagQueryFilter(true, null, null) + } + + val filterStrat = if (onlyOrphansInHome) { + RoomListViewModel.SpaceFilterStrategy.ORPHANS_IF_SPACE_NULL + } else { + RoomListViewModel.SpaceFilterStrategy.ALL_IF_SPACE_NULL + } + addSection( + sections = sections, + activeSpaceUpdaters = activeSpaceAwareQueries, + nameRes = R.string.bottom_action_rooms, + notifyOfLocalEcho = false, + spaceFilterStrategy = filterStrat + ) { + it.memberships = listOf(Membership.JOIN) + it.roomTagQueryFilter = RoomTagQueryFilter(null, false, false) + } + + addSection( + sections = sections, + activeSpaceUpdaters = activeSpaceAwareQueries, + nameRes = R.string.low_priority_header, + notifyOfLocalEcho = false, + isCompact = false, + spaceFilterStrategy = filterStrat + + ) { + it.memberships = listOf(Membership.JOIN) + it.roomCategoryFilter = RoomCategoryFilter.ROOMS_WITH_NO_NOTIFICATION + it.roomTagQueryFilter = RoomTagQueryFilter(null, true, null) + } + + addSection( + sections = sections, + activeSpaceUpdaters = activeSpaceAwareQueries, + nameRes = R.string.system_alerts_header, + notifyOfLocalEcho = false, + isCompact = false, + spaceFilterStrategy = filterStrat + ) { + it.memberships = listOf(Membership.JOIN) + it.roomCategoryFilter = RoomCategoryFilter.ALL + it.roomTagQueryFilter = RoomTagQueryFilter(null, null, true) + } + + val suggestedRoomsObservable = // MutableLiveData>() + appStateHandler.selectedRoomGroupingObservable + .distinctUntilChanged() + .switchMap { groupingMethod -> + val selectedSpace = groupingMethod.orNull()?.space() + if (selectedSpace == null) { + Observable.just(emptyList()) + } else { + liveData(context = viewModelScope.coroutineContext + Dispatchers.IO) { + val spaceSum = tryOrNull { + session.spaceService() + .querySpaceChildren(selectedSpace.roomId, suggestedOnly = true, null, null) + } + val value = spaceSum?.children.orEmpty().distinctBy { it.childRoomId } + // i need to check if it's already joined. + val filtered = value.filter { + session.getRoomSummary(it.childRoomId)?.membership?.isActive() != true + } + emit(filtered) + }.asObservable() + } + } + + val liveSuggestedRooms = MutableLiveData() + Observables.combineLatest( + suggestedRoomsObservable, + suggestedRoomJoiningState.asObservable() + ) { rooms, joinStates -> + SuggestedRoomInfo( + rooms, + joinStates + ) + }.subscribe { + liveSuggestedRooms.postValue(it) + }.also { + disposables.add(it) + } + sections.add( + RoomsSection( + sectionName = stringProvider.getString(R.string.suggested_header), + liveSuggested = liveSuggestedRooms, + notifyOfLocalEcho = false + ) + ) + } + private fun buildRoomsSections(sections: MutableList, activeSpaceAwareQueries: MutableList) { // if (autoAcceptInvites.showInvites()) { diff --git a/vector/src/main/java/im/vector/app/features/settings/LayoutMode.kt b/vector/src/main/java/im/vector/app/features/settings/LayoutMode.kt new file mode 100644 index 00000000000..da05bdac34f --- /dev/null +++ b/vector/src/main/java/im/vector/app/features/settings/LayoutMode.kt @@ -0,0 +1,22 @@ +/* + * 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.settings + +enum class LayoutMode { + SIMPLE, + PRODUCTIVITY +} 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 e34e8b48a04..cf72ed3a5de 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 @@ -101,6 +101,7 @@ class VectorPreferences @Inject constructor(private val context: Context) { private const val SETTINGS_SEND_MESSAGE_WITH_ENTER = "SETTINGS_SEND_MESSAGE_WITH_ENTER" private const val SETTINGS_ENABLE_CHAT_EFFECTS = "SETTINGS_ENABLE_CHAT_EFFECTS" private const val SETTINGS_SHOW_EMOJI_KEYBOARD = "SETTINGS_SHOW_EMOJI_KEYBOARD" + const val SETTINGS_LAYOUT_MODE = "SETTINGS_LAYOUT_MODE" // Room directory private const val SETTINGS_ROOM_DIRECTORY_SHOW_ALL_PUBLIC_ROOMS = "SETTINGS_ROOM_DIRECTORY_SHOW_ALL_PUBLIC_ROOMS" @@ -1007,4 +1008,21 @@ class VectorPreferences @Inject constructor(private val context: Context) { putInt(TAKE_PHOTO_VIDEO_MODE, mode) } } + + // Layout + + fun getLayoutMode(): LayoutMode { + return defaultPrefs.getString(SETTINGS_LAYOUT_MODE, LayoutMode.PRODUCTIVITY.name).let { + when (it) { + LayoutMode.SIMPLE.name -> LayoutMode.SIMPLE + else -> LayoutMode.PRODUCTIVITY + } + } + } + + fun setLayoutMode(mode: LayoutMode) { + return defaultPrefs.edit { + putString(SETTINGS_LAYOUT_MODE, mode.name) + } + } } 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 2a3ea799a58..5bfd541b0d3 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 @@ -25,6 +25,7 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder import im.vector.app.R import im.vector.app.core.dialogs.PhotoOrVideoDialog import im.vector.app.core.extensions.restart +import im.vector.app.core.preference.LayoutPreference import im.vector.app.core.preference.VectorListPreference import im.vector.app.core.preference.VectorPreference import im.vector.app.core.preference.VectorSwitchPreference @@ -53,6 +54,10 @@ class VectorSettingsPreferencesFragment @Inject constructor( findPreference("SETTINGS_INTERFACE_TAKE_PHOTO_VIDEO")!! } + private val mainLayoutPreference by lazy { + findPreference(VectorPreferences.SETTINGS_LAYOUT_MODE)!! + } + override fun bindPref() { // user interface preferences setUserInterfacePreferences() @@ -78,6 +83,14 @@ class VectorSettingsPreferencesFragment @Inject constructor( } } + mainLayoutPreference.selectedLayoutMode = vectorPreferences.getLayoutMode() + + mainLayoutPreference.listener = object : LayoutPreference.LayoutModeChangeListener { + override fun onLayoutModeChange(mode: LayoutMode) { + vectorPreferences.setLayoutMode(mode) + } + } + // Url preview /* TODO Note: we keep the setting client side for now diff --git a/vector/src/main/res/drawable/ic_pro_layout.xml b/vector/src/main/res/drawable/ic_pro_layout.xml new file mode 100644 index 00000000000..56ca1aa4863 --- /dev/null +++ b/vector/src/main/res/drawable/ic_pro_layout.xml @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/vector/src/main/res/drawable/ic_simple_layout.xml b/vector/src/main/res/drawable/ic_simple_layout.xml new file mode 100644 index 00000000000..780b7f397c5 --- /dev/null +++ b/vector/src/main/res/drawable/ic_simple_layout.xml @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/vector/src/main/res/layout/preference_app_choose_layout.xml b/vector/src/main/res/layout/preference_app_choose_layout.xml new file mode 100644 index 00000000000..c2f06a39f76 --- /dev/null +++ b/vector/src/main/res/layout/preference_app_choose_layout.xml @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/vector/src/main/res/menu/home_bottom_navigation.xml b/vector/src/main/res/menu/home_bottom_navigation.xml index 449877d04e7..7d079fba277 100644 --- a/vector/src/main/res/menu/home_bottom_navigation.xml +++ b/vector/src/main/res/menu/home_bottom_navigation.xml @@ -20,6 +20,12 @@ android:icon="@drawable/ic_home_bottom_group" android:title="@string/bottom_action_rooms" /> + + Favourites People Rooms + Discussions Communities Unread Messages Unread Rooms @@ -1111,6 +1112,13 @@ Remove %s? Ensure that you have clicked on the link in the email we have sent to you. + + Simple + Pro + Main Layout + + + Advanced Notification Settings Notification importance by event diff --git a/vector/src/main/res/xml/vector_settings_preferences.xml b/vector/src/main/res/xml/vector_settings_preferences.xml index 1f7c347ddd4..5b4fdbad1fb 100644 --- a/vector/src/main/res/xml/vector_settings_preferences.xml +++ b/vector/src/main/res/xml/vector_settings_preferences.xml @@ -28,6 +28,11 @@ android:persistent="false" android:title="@string/font_size" /> + + + @@ -35,8 +40,8 @@ + android:summary="@string/all_rooms_youre_in_will_be_shown_in_home" + android:title="@string/preference_show_all_rooms_in_home" /> From a0c35416922859eb781f07789f60b9c089b60c70 Mon Sep 17 00:00:00 2001 From: Valere Date: Thu, 16 Sep 2021 15:49:51 +0200 Subject: [PATCH 03/17] Quick legacy community layout support --- .../room/list/RoomListSectionBuilderGroup.kt | 176 ++++++++++++------ .../room/list/RoomListSectionBuilderSpace.kt | 2 +- 2 files changed, 122 insertions(+), 56 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/RoomListSectionBuilderGroup.kt b/vector/src/main/java/im/vector/app/features/home/room/list/RoomListSectionBuilderGroup.kt index e230fe94540..360a653be6f 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/RoomListSectionBuilderGroup.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/RoomListSectionBuilderGroup.kt @@ -50,11 +50,11 @@ class RoomListSectionBuilderGroup( val actualGroupId = appStateHandler.safeActiveGroupId() when (mode) { - RoomListDisplayMode.PEOPLE -> { + RoomListDisplayMode.PEOPLE -> { // 4 sections Invites / Fav / Dms / Low Priority buildPeopleSections(sections, activeGroupAwareQueries, actualGroupId) } - RoomListDisplayMode.ROOMS -> { + RoomListDisplayMode.ROOMS -> { // 5 sections invites / Fav / Rooms / Low Priority / Server notice buildRoomsSections(sections, activeGroupAwareQueries, actualGroupId) } @@ -75,51 +75,11 @@ class RoomListSectionBuilderGroup( ) } RoomListDisplayMode.HOME -> { - if (autoAcceptInvites.showInvites()) { - addSection( - sections, - activeGroupAwareQueries, - R.string.invitations_header, - true - ) { - it.memberships = listOf(Membership.INVITE) - it.roomCategoryFilter = RoomCategoryFilter.ALL - it.activeGroupId = actualGroupId - } - } - - addSection( - sections, - activeGroupAwareQueries, - R.string.room_list_section_unread_dm, - false - ) { - it.memberships = listOf(Membership.JOIN) - it.roomCategoryFilter = RoomCategoryFilter.UNREAD_NOTIFICATION_DMS - it.activeGroupId = actualGroupId - } - - addSection( - sections, - activeGroupAwareQueries, - R.string.room_list_section_unread_rooms, - false - ) { - it.memberships = listOf(Membership.JOIN) - it.roomCategoryFilter = RoomCategoryFilter.UNREAD_NOTIFICATION_ROOMS - it.activeGroupId = actualGroupId - } + buildHomeSection(sections, activeGroupAwareQueries, actualGroupId) + } - addSection( - sections, - activeGroupAwareQueries, - R.string.bottom_action_rooms, - false - ) { - it.memberships = listOf(Membership.JOIN) - it.roomCategoryFilter = RoomCategoryFilter.ONLY_ROOMS - it.activeGroupId = actualGroupId - } + RoomListDisplayMode.ALL_IN_ONE -> { + buildAllInOneSection(sections, activeGroupAwareQueries, actualGroupId) } } @@ -139,34 +99,138 @@ class RoomListSectionBuilderGroup( return sections } - private fun buildRoomsSections(sections: MutableList, - activeSpaceAwareQueries: MutableList, - actualGroupId: String?) { + private fun buildHomeSection(sections: MutableList, activeGroupAwareQueries: MutableList, actualGroupId: String?) { + if (autoAcceptInvites.showInvites()) { + addSection( + sections = sections, + activeSpaceUpdaters = activeGroupAwareQueries, + nameRes = R.string.invitations_header, + notifyOfLocalEcho = true, + compactMode = true + ) { + it.memberships = listOf(Membership.INVITE) + it.roomCategoryFilter = RoomCategoryFilter.ALL + it.activeGroupId = actualGroupId + } + } + + addSection( + sections = sections, + activeSpaceUpdaters = activeGroupAwareQueries, + nameRes = R.string.bottom_action_favourites, + notifyOfLocalEcho = false, + compactMode = true + ) { + it.memberships = listOf(Membership.JOIN) + it.roomCategoryFilter = RoomCategoryFilter.ALL + it.roomTagQueryFilter = RoomTagQueryFilter(true, null, null) + it.activeGroupId = actualGroupId + } + + addSection( + sections = sections, + activeSpaceUpdaters = activeGroupAwareQueries, + nameRes = R.string.room_list_section_unread_dm, + notifyOfLocalEcho = false, + compactMode = true + ) { + it.memberships = listOf(Membership.JOIN) + it.roomCategoryFilter = RoomCategoryFilter.UNREAD_NOTIFICATION_DMS + it.activeGroupId = actualGroupId + } + + addSection( + sections = sections, + activeSpaceUpdaters = activeGroupAwareQueries, + nameRes = R.string.room_list_section_unread_rooms, + notifyOfLocalEcho = false, + compactMode = true + ) { + it.memberships = listOf(Membership.JOIN) + it.roomCategoryFilter = RoomCategoryFilter.UNREAD_NOTIFICATION_ROOMS + it.activeGroupId = actualGroupId + } + + addSection( + sections = sections, + activeSpaceUpdaters = activeGroupAwareQueries, + nameRes = R.string.bottom_action_rooms, + notifyOfLocalEcho = false, + compactMode = true + ) { + it.memberships = listOf(Membership.JOIN) + it.roomCategoryFilter = RoomCategoryFilter.ONLY_ROOMS + it.activeGroupId = actualGroupId + } + } + + private fun buildAllInOneSection(sections: MutableList, activeGroupAwareQueries: MutableList, actualGroupId: String?) { if (autoAcceptInvites.showInvites()) { addSection( sections, - activeSpaceAwareQueries, + activeGroupAwareQueries, R.string.invitations_header, - true + true, ) { it.memberships = listOf(Membership.INVITE) - it.roomCategoryFilter = RoomCategoryFilter.ONLY_ROOMS + it.roomCategoryFilter = RoomCategoryFilter.ALL it.activeGroupId = actualGroupId } } addSection( sections, - activeSpaceAwareQueries, + activeGroupAwareQueries, R.string.bottom_action_favourites, false ) { it.memberships = listOf(Membership.JOIN) - it.roomCategoryFilter = RoomCategoryFilter.ONLY_ROOMS + it.roomCategoryFilter = RoomCategoryFilter.ALL it.roomTagQueryFilter = RoomTagQueryFilter(true, null, null) it.activeGroupId = actualGroupId } + addSection( + sections, + activeGroupAwareQueries, + R.string.bottom_action_rooms, + false + ) { + it.memberships = listOf(Membership.JOIN) + it.roomCategoryFilter = RoomCategoryFilter.ALL + it.roomTagQueryFilter = RoomTagQueryFilter(false, null, null) + it.activeGroupId = actualGroupId + } + } + + private fun buildRoomsSections(sections: MutableList, + activeSpaceAwareQueries: MutableList, + actualGroupId: String?) { +// if (autoAcceptInvites.showInvites()) { +// addSection( +// sections, +// activeSpaceAwareQueries, +// R.string.invitations_header, +// true +// ) { +// it.memberships = listOf(Membership.INVITE) +// it.roomCategoryFilter = RoomCategoryFilter.ONLY_ROOMS +// it.activeGroupId = actualGroupId +// } +// } + +// addSection( +// sections, +// activeSpaceAwareQueries, +// R.string.bottom_action_favourites, +// false +// ) { +// it.memberships = listOf(Membership.JOIN) +// it.roomCategoryFilter = RoomCategoryFilter.ONLY_ROOMS +// it.roomTagQueryFilter = RoomTagQueryFilter(true, null, null) +// it.activeGroupId = actualGroupId +// } + addSection( sections, activeSpaceAwareQueries, @@ -262,6 +326,7 @@ class RoomListSectionBuilderGroup( activeSpaceUpdaters: MutableList, @StringRes nameRes: Int, notifyOfLocalEcho: Boolean = false, + compactMode: Boolean = false, query: (RoomSummaryQueryParams.Builder) -> Unit) { withQueryParams( { query.invoke(it) }, @@ -287,7 +352,8 @@ class RoomListSectionBuilderGroup( RoomsSection( sectionName = name, livePages = livePagedList, - notifyOfLocalEcho = notifyOfLocalEcho + notifyOfLocalEcho = notifyOfLocalEcho, + isCompact = compactMode ) ) } diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/RoomListSectionBuilderSpace.kt b/vector/src/main/java/im/vector/app/features/home/room/list/RoomListSectionBuilderSpace.kt index 01bde806439..c7678a13af4 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/RoomListSectionBuilderSpace.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/RoomListSectionBuilderSpace.kt @@ -298,7 +298,7 @@ class RoomListSectionBuilderSpace( addSection( sections = sections, activeSpaceUpdaters = activeSpaceAwareQueries, - nameRes = R.string.bottom_action_rooms, + nameRes = R.string.bottom_action_discussions, notifyOfLocalEcho = false, spaceFilterStrategy = filterStrat ) { From c6931d71b3de6959a8a84565bc860c6bf72e8764 Mon Sep 17 00:00:00 2001 From: Valere Date: Thu, 16 Sep 2021 17:18:52 +0200 Subject: [PATCH 04/17] Show Fab in all in one mode --- .../im/vector/app/features/home/room/list/RoomListFragment.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/RoomListFragment.kt b/vector/src/main/java/im/vector/app/features/home/room/list/RoomListFragment.kt index 39b37a31099..45104c11b18 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/RoomListFragment.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/RoomListFragment.kt @@ -179,6 +179,7 @@ class RoomListFragment @Inject constructor( private fun setupCreateRoomButton() { when (roomListParams.displayMode) { + RoomListDisplayMode.ALL_IN_ONE, RoomListDisplayMode.HOME -> views.createChatFabMenu.isVisible = true RoomListDisplayMode.PEOPLE -> views.createChatRoomButton.isVisible = true RoomListDisplayMode.ROOMS -> views.createGroupRoomButton.isVisible = true @@ -205,6 +206,7 @@ class RoomListFragment @Inject constructor( RecyclerView.SCROLL_STATE_DRAGGING, RecyclerView.SCROLL_STATE_SETTLING -> { when (roomListParams.displayMode) { + RoomListDisplayMode.ALL_IN_ONE, RoomListDisplayMode.HOME -> views.createChatFabMenu.hide() RoomListDisplayMode.PEOPLE -> views.createChatRoomButton.hide() RoomListDisplayMode.ROOMS -> views.createGroupRoomButton.hide() @@ -362,6 +364,7 @@ class RoomListFragment @Inject constructor( private val showFabRunnable = Runnable { if (isAdded) { when (roomListParams.displayMode) { + RoomListDisplayMode.ALL_IN_ONE, RoomListDisplayMode.HOME -> views.createChatFabMenu.show() RoomListDisplayMode.PEOPLE -> views.createChatRoomButton.show() RoomListDisplayMode.ROOMS -> views.createGroupRoomButton.show() From 80cf90430247052817a0a5b6c297019eedbb2d10 Mon Sep 17 00:00:00 2001 From: Valere Date: Fri, 17 Sep 2021 14:03:59 +0200 Subject: [PATCH 05/17] Fix wrong highlight --- .../java/im/vector/app/features/home/HomeDetailViewModel.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vector/src/main/java/im/vector/app/features/home/HomeDetailViewModel.kt b/vector/src/main/java/im/vector/app/features/home/HomeDetailViewModel.kt index 2665a7f3e66..a2c7e623038 100644 --- a/vector/src/main/java/im/vector/app/features/home/HomeDetailViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/home/HomeDetailViewModel.kt @@ -298,7 +298,7 @@ class HomeDetailViewModel @AssistedInject constructor(@Assisted initialState: Ho notificationHighlightRooms = otherRooms.isHighlight, hasUnreadMessages = dmRooms.totalCount + otherRooms.totalCount > 0, notificationCountAllInOne = roomsInvite + dmInvites + favRooms.totalCount + otherRooms.totalCount, - notificationHighlightAllInOne = dmInvites + roomsInvite > 0 || favRooms.totalCount > 0 || otherRooms.totalCount > 0 + notificationHighlightAllInOne = dmInvites + roomsInvite > 0 || favRooms.isHighlight || otherRooms.isHighlight ) } } From bf410852cb6c917aaf32dcd97d01c78cb012f6ed Mon Sep 17 00:00:00 2001 From: Valere Date: Fri, 17 Sep 2021 15:38:12 +0200 Subject: [PATCH 06/17] Fix low priority section in home and bad notification highlight --- .../app/features/home/HomeDetailViewModel.kt | 2 +- .../room/list/RoomListSectionBuilderSpace.kt | 45 +++++++++++++++++-- 2 files changed, 42 insertions(+), 5 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/home/HomeDetailViewModel.kt b/vector/src/main/java/im/vector/app/features/home/HomeDetailViewModel.kt index a2c7e623038..668c14c4059 100644 --- a/vector/src/main/java/im/vector/app/features/home/HomeDetailViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/home/HomeDetailViewModel.kt @@ -291,7 +291,7 @@ class HomeDetailViewModel @AssistedInject constructor(@Assisted initialState: Ho // On home we don't count DMs or Other rooms as it will be already highlighted in // their respected tabs notificationCountHome = roomsInvite + dmInvites + favRooms.totalCount, - notificationHighlightHome = dmInvites + roomsInvite > 0 || favRooms.totalCount > 0, + notificationHighlightHome = dmInvites + roomsInvite > 0 || favRooms.isHighlight, notificationCountPeople = dmRooms.totalCount, notificationHighlightPeople = dmRooms.isHighlight, notificationCountRooms = otherRooms.totalCount + roomsInvite, diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/RoomListSectionBuilderSpace.kt b/vector/src/main/java/im/vector/app/features/home/room/list/RoomListSectionBuilderSpace.kt index c7678a13af4..54f5e95c44f 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/RoomListSectionBuilderSpace.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/RoomListSectionBuilderSpace.kt @@ -162,7 +162,7 @@ class RoomListSectionBuilderSpace( ) { it.memberships = listOf(Membership.JOIN) it.roomCategoryFilter = RoomCategoryFilter.UNREAD_NOTIFICATION_DMS - it.roomTagQueryFilter = RoomTagQueryFilter(false, null, null) + it.roomTagQueryFilter = RoomTagQueryFilter(false, false, false) } addSection( @@ -179,7 +179,7 @@ class RoomListSectionBuilderSpace( ) { it.memberships = listOf(Membership.JOIN) it.roomCategoryFilter = RoomCategoryFilter.UNREAD_NOTIFICATION_ROOMS - it.roomTagQueryFilter = RoomTagQueryFilter(false, null, null) + it.roomTagQueryFilter = RoomTagQueryFilter(false, false, false) } addSection( @@ -197,7 +197,7 @@ class RoomListSectionBuilderSpace( ) { it.memberships = listOf(Membership.JOIN) it.roomCategoryFilter = RoomCategoryFilter.ROOMS_WITH_NO_NOTIFICATION - it.roomTagQueryFilter = RoomTagQueryFilter(false, null, null) + it.roomTagQueryFilter = RoomTagQueryFilter(false, false, false) } addSection( @@ -212,6 +212,43 @@ class RoomListSectionBuilderSpace( it.roomCategoryFilter = RoomCategoryFilter.DMS_WITH_NO_NOTIFICATION } + addSection( + sections = sections, + activeSpaceUpdaters = activeSpaceAwareQueries, + nameRes = R.string.low_priority_header, + notifyOfLocalEcho = false, + isCompact = true, + spaceFilterStrategy = if (onlyOrphansInHome) { + RoomListViewModel.SpaceFilterStrategy.ORPHANS_IF_SPACE_NULL + } else { + RoomListViewModel.SpaceFilterStrategy.ALL_IF_SPACE_NULL + } + + ) { + it.memberships = listOf(Membership.JOIN) + it.roomCategoryFilter = RoomCategoryFilter.ALL + it.roomTagQueryFilter = RoomTagQueryFilter(null, true, null) + } + + addSection( + sections = sections, + activeSpaceUpdaters = activeSpaceAwareQueries, + nameRes = R.string.system_alerts_header, + notifyOfLocalEcho = false, + isCompact = true, + spaceFilterStrategy = if (onlyOrphansInHome) { + RoomListViewModel.SpaceFilterStrategy.ORPHANS_IF_SPACE_NULL + } else { + RoomListViewModel.SpaceFilterStrategy.ALL_IF_SPACE_NULL + } + + ) { + it.memberships = listOf(Membership.JOIN) + it.roomCategoryFilter = RoomCategoryFilter.ALL + it.roomTagQueryFilter = RoomTagQueryFilter(null, null, true) + } + + val suggestedRoomsObservable = // MutableLiveData>() appStateHandler.selectedRoomGroupingObservable .distinctUntilChanged() @@ -303,7 +340,7 @@ class RoomListSectionBuilderSpace( spaceFilterStrategy = filterStrat ) { it.memberships = listOf(Membership.JOIN) - it.roomTagQueryFilter = RoomTagQueryFilter(null, false, false) + it.roomTagQueryFilter = RoomTagQueryFilter(false, false, false) } addSection( From 250c7dfeead44823de4e35762b5646f0bea9979b Mon Sep 17 00:00:00 2001 From: Valere Date: Wed, 22 Sep 2021 09:01:33 +0200 Subject: [PATCH 07/17] Quick design update --- .../room/list/RoomListSectionBuilderGroup.kt | 2 +- .../room/list/RoomListSectionBuilderSpace.kt | 1 - .../home/room/list/RoomSummaryCompactItem.kt | 6 +- .../src/main/res/drawable/ic_pro_layout.xml | 240 ++++++------------ .../main/res/drawable/ic_simple_layout.xml | 140 ++-------- vector/src/main/res/layout/item_room.xml | 2 + .../src/main/res/layout/item_room_compact.xml | 143 ++++++----- 7 files changed, 186 insertions(+), 348 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/RoomListSectionBuilderGroup.kt b/vector/src/main/java/im/vector/app/features/home/room/list/RoomListSectionBuilderGroup.kt index 360a653be6f..dbcfefef274 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/RoomListSectionBuilderGroup.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/RoomListSectionBuilderGroup.kt @@ -170,7 +170,7 @@ class RoomListSectionBuilderGroup( sections, activeGroupAwareQueries, R.string.invitations_header, - true, + true ) { it.memberships = listOf(Membership.INVITE) it.roomCategoryFilter = RoomCategoryFilter.ALL diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/RoomListSectionBuilderSpace.kt b/vector/src/main/java/im/vector/app/features/home/room/list/RoomListSectionBuilderSpace.kt index 54f5e95c44f..41181b706ba 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/RoomListSectionBuilderSpace.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/RoomListSectionBuilderSpace.kt @@ -248,7 +248,6 @@ class RoomListSectionBuilderSpace( it.roomTagQueryFilter = RoomTagQueryFilter(null, null, true) } - val suggestedRoomsObservable = // MutableLiveData>() appStateHandler.selectedRoomGroupingObservable .distinctUntilChanged() diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/RoomSummaryCompactItem.kt b/vector/src/main/java/im/vector/app/features/home/room/list/RoomSummaryCompactItem.kt index b734e053656..f1e2b519c3a 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/RoomSummaryCompactItem.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/RoomSummaryCompactItem.kt @@ -74,10 +74,10 @@ abstract class RoomSummaryCompactItem : VectorEpoxyModel(R.id.roomLastEventView) // val typingView by bind(R.id.roomTypingView) val draftView by bind(R.id.roomDraftBadge) - val lastEventTimeView by bind(R.id.roomLastEventTimeView) +// val lastEventTimeView by bind(R.id.roomLastEventTimeView) val avatarCheckedImageView by bind(R.id.roomAvatarCheckedImageView) val avatarImageView by bind(R.id.roomAvatarImageView) val roomAvatarDecorationImageView by bind(R.id.roomAvatarDecorationImageView) diff --git a/vector/src/main/res/drawable/ic_pro_layout.xml b/vector/src/main/res/drawable/ic_pro_layout.xml index 56ca1aa4863..4b523b3b59c 100644 --- a/vector/src/main/res/drawable/ic_pro_layout.xml +++ b/vector/src/main/res/drawable/ic_pro_layout.xml @@ -1,168 +1,84 @@ + android:width="121dp" + android:height="121dp" + android:viewportWidth="121" + android:viewportHeight="121"> + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vector/src/main/res/drawable/ic_simple_layout.xml b/vector/src/main/res/drawable/ic_simple_layout.xml index 780b7f397c5..d5bb4a8b8df 100644 --- a/vector/src/main/res/drawable/ic_simple_layout.xml +++ b/vector/src/main/res/drawable/ic_simple_layout.xml @@ -1,156 +1,72 @@ + android:width="121dp" + android:height="121dp" + android:viewportWidth="121" + android:viewportHeight="121"> - - - - - - - - - - - - - - + android:fillColor="#00000000" + android:strokeColor="#E3E8F0" + android:fillType="evenOdd"/> diff --git a/vector/src/main/res/layout/item_room.xml b/vector/src/main/res/layout/item_room.xml index e690dd122c0..97aead63cb0 100644 --- a/vector/src/main/res/layout/item_room.xml +++ b/vector/src/main/res/layout/item_room.xml @@ -237,6 +237,8 @@ android:background="?vctr_list_separator_system" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" + android:layout_marginStart="80dp" + android:layout_marginEnd="16dp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/roomBottomBarrier" /> diff --git a/vector/src/main/res/layout/item_room_compact.xml b/vector/src/main/res/layout/item_room_compact.xml index 7b99ee76cb1..830a0b89a6f 100644 --- a/vector/src/main/res/layout/item_room_compact.xml +++ b/vector/src/main/res/layout/item_room_compact.xml @@ -12,13 +12,17 @@ @@ -114,21 +118,20 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + From 64234595d02229189b2772c98fa9dc7a1fa7b096 Mon Sep 17 00:00:00 2001 From: Valere Date: Thu, 23 Sep 2021 10:16:05 +0200 Subject: [PATCH 08/17] Update layout mode names --- vector/src/main/res/values/strings.xml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/vector/src/main/res/values/strings.xml b/vector/src/main/res/values/strings.xml index 292d14a92ce..bd9ebcc1f06 100644 --- a/vector/src/main/res/values/strings.xml +++ b/vector/src/main/res/values/strings.xml @@ -1112,13 +1112,10 @@ Remove %s? Ensure that you have clicked on the link in the email we have sent to you. - - Simple - Pro + Basic + Tabbed Main Layout - - Advanced Notification Settings Notification importance by event From 37486b395badd9e903dcad341da57fa2a18a357c Mon Sep 17 00:00:00 2001 From: Valere Date: Mon, 4 Oct 2021 17:50:27 +0200 Subject: [PATCH 09/17] Add layout mode test --- .../vector/app/ui/UiAllScreensSanityTest.kt | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/vector/src/androidTest/java/im/vector/app/ui/UiAllScreensSanityTest.kt b/vector/src/androidTest/java/im/vector/app/ui/UiAllScreensSanityTest.kt index a9cb5274ed3..6980530ca22 100644 --- a/vector/src/androidTest/java/im/vector/app/ui/UiAllScreensSanityTest.kt +++ b/vector/src/androidTest/java/im/vector/app/ui/UiAllScreensSanityTest.kt @@ -16,7 +16,9 @@ package im.vector.app.ui +import android.view.MenuItem import android.view.View +import androidx.core.view.forEach import androidx.recyclerview.widget.RecyclerView import androidx.test.espresso.Espresso.onView import androidx.test.espresso.Espresso.pressBack @@ -32,6 +34,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.LargeTest import com.adevinta.android.barista.assertion.BaristaListAssertions.assertListItemCount import com.adevinta.android.barista.assertion.BaristaVisibilityAssertions.assertDisplayed +import com.adevinta.android.barista.assertion.BaristaVisibilityAssertions.assertNotDisplayed import com.adevinta.android.barista.interaction.BaristaClickInteractions.clickBack import com.adevinta.android.barista.interaction.BaristaClickInteractions.clickOn import com.adevinta.android.barista.interaction.BaristaClickInteractions.longClickOn @@ -43,6 +46,7 @@ import com.adevinta.android.barista.interaction.BaristaListInteractions.clickLis import com.adevinta.android.barista.interaction.BaristaListInteractions.clickListItemChild import com.adevinta.android.barista.interaction.BaristaMenuClickInteractions.clickMenu import com.adevinta.android.barista.interaction.BaristaMenuClickInteractions.openMenu +import com.google.android.material.bottomnavigation.BottomNavigationView import im.vector.app.BuildConfig import im.vector.app.EspressoHelper import im.vector.app.R @@ -59,6 +63,8 @@ import im.vector.app.features.roomdirectory.RoomDirectoryActivity import im.vector.app.initialSyncIdlingResource import im.vector.app.waitForView import im.vector.app.withIdlingResource +import org.junit.Assert.assertEquals +import org.junit.Assert.assertNotNull import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith @@ -140,12 +146,58 @@ class UiAllScreensSanityTest { uiTestBase.login(userId) ignoreVerification() + testLayoutMode() + uiTestBase.signout() clickDialogPositiveButton() // TODO Deactivate account instead of logout? } + private fun testLayoutMode() { + withIdlingResource(activityIdlingResource(HomeActivity::class.java)) { + assertDisplayed(R.id.roomListContainer) + closeSoftKeyboard() + } + + val activity = EspressoHelper.getCurrentActivity()!! + val uiSession = (activity as HomeActivity).activeSessionHolder.getActiveSession() + + withIdlingResource(initialSyncIdlingResource(uiSession)) { + assertDisplayed(R.id.roomListContainer) + } + + assertDisplayed(R.id.bottomNavigationView) + + val expectedMenuItems = listOf(R.id.bottom_action_home, R.id.bottom_action_people, R.id.bottom_action_rooms) + val bottomNavigation = activity.findViewById(R.id.bottomNavigationView) + val menu = mutableListOf().apply { + bottomNavigation.menu.forEach { + if (it.isVisible) add(it) + } + } + assertNotNull("Menu should not be null", menu) + assertEquals("Should have matching number of items", expectedMenuItems.size, menu.size) + for (i in expectedMenuItems.indices) { + val currItem: MenuItem = menu[i] + assertEquals("ID for Item #$i", expectedMenuItems[i], currItem.itemId) + } + + openDrawer() + clickOn(R.id.homeDrawerHeaderSettingsView) + + clickOn(R.string.settings_preferences) + + clickOn(R.string.settings_home_layout_simple) + + pressBack() + pressBack() + + assertNotDisplayed(R.id.bottomNavigationView) + + sleep(2000) + } + private fun ignoreVerification() { sleep(6000) val activity = EspressoHelper.getCurrentActivity()!! From 7498c22404b3da6327bd031865bdbb5f23fd2022 Mon Sep 17 00:00:00 2001 From: Valere Date: Wed, 13 Oct 2021 09:45:40 +0200 Subject: [PATCH 10/17] cleanup --- ..._pro_layout.xml => setting_layout_pro.xml} | 0 ...e_layout.xml => setting_layout_simple.xml} | 0 .../layout/preference_app_choose_layout.xml | 57 +------------------ 3 files changed, 2 insertions(+), 55 deletions(-) rename vector/src/main/res/drawable/{ic_pro_layout.xml => setting_layout_pro.xml} (100%) rename vector/src/main/res/drawable/{ic_simple_layout.xml => setting_layout_simple.xml} (100%) diff --git a/vector/src/main/res/drawable/ic_pro_layout.xml b/vector/src/main/res/drawable/setting_layout_pro.xml similarity index 100% rename from vector/src/main/res/drawable/ic_pro_layout.xml rename to vector/src/main/res/drawable/setting_layout_pro.xml diff --git a/vector/src/main/res/drawable/ic_simple_layout.xml b/vector/src/main/res/drawable/setting_layout_simple.xml similarity index 100% rename from vector/src/main/res/drawable/ic_simple_layout.xml rename to vector/src/main/res/drawable/setting_layout_simple.xml diff --git a/vector/src/main/res/layout/preference_app_choose_layout.xml b/vector/src/main/res/layout/preference_app_choose_layout.xml index c2f06a39f76..4c0b820ebaa 100644 --- a/vector/src/main/res/layout/preference_app_choose_layout.xml +++ b/vector/src/main/res/layout/preference_app_choose_layout.xml @@ -47,7 +47,7 @@ android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_margin="4dp" - android:drawableEnd="@drawable/ic_simple_layout" + android:drawableEnd="@drawable/setting_layout_simple" android:text="@string/settings_home_layout_simple" tools:checked="true" /> @@ -58,64 +58,11 @@ android:layout_gravity="center_vertical" android:layout_margin="4dp" android:checked="false" - android:drawableEnd="@drawable/ic_pro_layout" + android:drawableEnd="@drawable/setting_layout_pro" android:text="@string/settings_home_layout_pro" /> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file From 83229fabbf6fd8b3fac2824f4791db2008208540 Mon Sep 17 00:00:00 2001 From: Valere Date: Wed, 13 Oct 2021 10:39:15 +0200 Subject: [PATCH 11/17] Fix rebase --- .../main/java/im/vector/app/features/home/HomeDetailFragment.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vector/src/main/java/im/vector/app/features/home/HomeDetailFragment.kt b/vector/src/main/java/im/vector/app/features/home/HomeDetailFragment.kt index 910ece54897..305cb8c70fc 100644 --- a/vector/src/main/java/im/vector/app/features/home/HomeDetailFragment.kt +++ b/vector/src/main/java/im/vector/app/features/home/HomeDetailFragment.kt @@ -150,7 +150,7 @@ class HomeDetailFragment @Inject constructor( updateUIForTab(currentTab) } - viewModel.selectSubscribe(this, HomeDetailViewState::showDialPadTab, HomeDetailViewState::layoutMode) { showDialPadTab, layoutMode -> + viewModel.onEach(HomeDetailViewState::showDialPadTab, HomeDetailViewState::layoutMode) { showDialPadTab, layoutMode -> updateTabNavigationSafely(layoutMode, showDialPadTab) } From fe9b4effd1d20717c3b828cd8179d0a26026d982 Mon Sep 17 00:00:00 2001 From: Valere Date: Wed, 13 Oct 2021 10:40:53 +0200 Subject: [PATCH 12/17] ktlint --- .../java/im/vector/app/features/home/HomeDetailAction.kt | 2 +- .../java/im/vector/app/features/home/HomeDetailViewModel.kt | 6 +++--- .../home/room/list/CollapsableTypedEpoxyController.kt | 4 ++-- .../app/features/home/room/list/RoomSummaryCompactItem.kt | 1 + 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/home/HomeDetailAction.kt b/vector/src/main/java/im/vector/app/features/home/HomeDetailAction.kt index 74e834d72b4..91fa04b23d5 100644 --- a/vector/src/main/java/im/vector/app/features/home/HomeDetailAction.kt +++ b/vector/src/main/java/im/vector/app/features/home/HomeDetailAction.kt @@ -21,6 +21,6 @@ import im.vector.app.core.platform.VectorViewModelAction sealed class HomeDetailAction : VectorViewModelAction { data class SwitchTab(val tab: HomeTab) : HomeDetailAction() object MarkAllRoomsRead : HomeDetailAction() - data class StartCallWithPhoneNumber(val phoneNumber: String): HomeDetailAction() + data class StartCallWithPhoneNumber(val phoneNumber: String) : HomeDetailAction() object ViewResumed : HomeDetailAction() } diff --git a/vector/src/main/java/im/vector/app/features/home/HomeDetailViewModel.kt b/vector/src/main/java/im/vector/app/features/home/HomeDetailViewModel.kt index 668c14c4059..46b57b735ee 100644 --- a/vector/src/main/java/im/vector/app/features/home/HomeDetailViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/home/HomeDetailViewModel.kt @@ -33,8 +33,8 @@ import im.vector.app.features.call.webrtc.WebRtcCallManager import im.vector.app.features.createdirect.DirectRoomHelper import im.vector.app.features.invite.AutoAcceptInvites import im.vector.app.features.invite.showInvites -import im.vector.app.features.settings.VectorPreferences import im.vector.app.features.settings.VectorDataStore +import im.vector.app.features.settings.VectorPreferences import im.vector.app.features.ui.UiStateRepository import io.reactivex.schedulers.Schedulers import kotlinx.coroutines.Dispatchers @@ -67,8 +67,8 @@ class HomeDetailViewModel @AssistedInject constructor(@Assisted initialState: Ho private val directRoomHelper: DirectRoomHelper, private val appStateHandler: AppStateHandler, private val vectorPreferences: VectorPreferences, - private val autoAcceptInvites: AutoAcceptInvites) - : VectorViewModel(initialState), + private val autoAcceptInvites: AutoAcceptInvites) : + VectorViewModel(initialState), CallProtocolsChecker.Listener { @AssistedFactory diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/CollapsableTypedEpoxyController.kt b/vector/src/main/java/im/vector/app/features/home/room/list/CollapsableTypedEpoxyController.kt index 66e70fc60e3..a916c7ac485 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/CollapsableTypedEpoxyController.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/CollapsableTypedEpoxyController.kt @@ -18,8 +18,8 @@ package im.vector.app.features.home.room.list import com.airbnb.epoxy.EpoxyController -abstract class CollapsableTypedEpoxyController - : EpoxyController(), CollapsableControllerExtension, CompactModeControllerExtension { +abstract class CollapsableTypedEpoxyController : + EpoxyController(), CollapsableControllerExtension, CompactModeControllerExtension { private var currentData: T? = null private var allowModelBuildRequests = false diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/RoomSummaryCompactItem.kt b/vector/src/main/java/im/vector/app/features/home/room/list/RoomSummaryCompactItem.kt index f1e2b519c3a..5f844d8e82b 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/RoomSummaryCompactItem.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/RoomSummaryCompactItem.kt @@ -116,6 +116,7 @@ abstract class RoomSummaryCompactItem : VectorEpoxyModel(R.id.roomLastEventView) // val typingView by bind(R.id.roomTypingView) val draftView by bind(R.id.roomDraftBadge) + // val lastEventTimeView by bind(R.id.roomLastEventTimeView) val avatarCheckedImageView by bind(R.id.roomAvatarCheckedImageView) val avatarImageView by bind(R.id.roomAvatarImageView) From 8b61c286c3249b995d5ffb99dd26ae6f5923d743 Mon Sep 17 00:00:00 2001 From: Valere Date: Wed, 13 Oct 2021 11:28:22 +0200 Subject: [PATCH 13/17] Use old labNotif tab to decide on best default layout mode --- .../app/features/settings/VectorPreferences.kt | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) 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 cf72ed3a5de..d0afdf090fe 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 @@ -166,6 +166,7 @@ class VectorPreferences @Inject constructor(private val context: Context) { // SETTINGS_LABS_HIDE_TECHNICAL_E2E_ERRORS private const val SETTINGS_LABS_SHOW_COMPLETE_HISTORY_IN_ENCRYPTED_ROOM = "SETTINGS_LABS_SHOW_COMPLETE_HISTORY_IN_ENCRYPTED_ROOM" + const val SETTINGS_LABS_UNREAD_NOTIFICATIONS_AS_TAB = "SETTINGS_LABS_UNREAD_NOTIFICATIONS_AS_TAB" // analytics const val SETTINGS_USE_ANALYTICS_KEY = "SETTINGS_USE_ANALYTICS_KEY" @@ -335,6 +336,11 @@ class VectorPreferences @Inject constructor(private val context: Context) { return developerMode() && defaultPrefs.getBoolean(SETTINGS_LABS_ALLOW_EXTENDED_LOGS, false) } + // Legacy lab option kept for migration to layout mode settings + fun labAddNotificationTab(): Boolean { + return defaultPrefs.getBoolean(SETTINGS_LABS_UNREAD_NOTIFICATIONS_AS_TAB, false) + } + fun failFast(): Boolean { return BuildConfig.DEBUG || (developerMode() && defaultPrefs.getBoolean(SETTINGS_DEVELOPER_MODE_FAIL_FAST_PREFERENCE_KEY, false)) } @@ -1012,7 +1018,12 @@ class VectorPreferences @Inject constructor(private val context: Context) { // Layout fun getLayoutMode(): LayoutMode { - return defaultPrefs.getString(SETTINGS_LAYOUT_MODE, LayoutMode.PRODUCTIVITY.name).let { + val defaultLayoutMode = if (labAddNotificationTab()) { + LayoutMode.PRODUCTIVITY.name + } else { + LayoutMode.SIMPLE.name + } + return defaultPrefs.getString(SETTINGS_LAYOUT_MODE, defaultLayoutMode).let { when (it) { LayoutMode.SIMPLE.name -> LayoutMode.SIMPLE else -> LayoutMode.PRODUCTIVITY From defd42374f7f697bc5e388f801667b7ddd04522f Mon Sep 17 00:00:00 2001 From: Valere Date: Wed, 13 Oct 2021 12:21:26 +0200 Subject: [PATCH 14/17] Change visibility of legacy pref --- .../im/vector/app/features/settings/VectorPreferences.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 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 d0afdf090fe..6771349d109 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 @@ -166,7 +166,8 @@ class VectorPreferences @Inject constructor(private val context: Context) { // SETTINGS_LABS_HIDE_TECHNICAL_E2E_ERRORS private const val SETTINGS_LABS_SHOW_COMPLETE_HISTORY_IN_ENCRYPTED_ROOM = "SETTINGS_LABS_SHOW_COMPLETE_HISTORY_IN_ENCRYPTED_ROOM" - const val SETTINGS_LABS_UNREAD_NOTIFICATIONS_AS_TAB = "SETTINGS_LABS_UNREAD_NOTIFICATIONS_AS_TAB" + // Legacy preference, used for migration + private const val SETTINGS_LABS_UNREAD_NOTIFICATIONS_AS_TAB = "SETTINGS_LABS_UNREAD_NOTIFICATIONS_AS_TAB" // analytics const val SETTINGS_USE_ANALYTICS_KEY = "SETTINGS_USE_ANALYTICS_KEY" @@ -337,7 +338,7 @@ class VectorPreferences @Inject constructor(private val context: Context) { } // Legacy lab option kept for migration to layout mode settings - fun labAddNotificationTab(): Boolean { + private fun labAddNotificationTab(): Boolean { return defaultPrefs.getBoolean(SETTINGS_LABS_UNREAD_NOTIFICATIONS_AS_TAB, false) } From f7003308ce6475a3f1f9fb7c287b699f2bd2fd38 Mon Sep 17 00:00:00 2001 From: Valere Date: Wed, 13 Oct 2021 15:23:06 +0200 Subject: [PATCH 15/17] FIx empty state + proper dark mode --- .../res/drawable-nodpi/empty_state_dm.png | Bin .../drawable-nodpi/empty_state_dm_dark.png | Bin 0 -> 163736 bytes .../res/drawable-nodpi/empty_state_room.png | Bin .../drawable-nodpi/empty_state_room_dark.png | Bin 0 -> 181909 bytes .../src/main/res/values/attrs_drawables.xml | 8 ++++ .../src/main/res/values/theme_dark.xml | 4 ++ .../src/main/res/values/theme_light.xml | 4 ++ .../home/room/list/RoomListFragment.kt | 40 +++++++++++++----- vector/src/main/res/values/strings.xml | 1 + 9 files changed, 46 insertions(+), 11 deletions(-) rename {vector => library/ui-styles}/src/main/res/drawable-nodpi/empty_state_dm.png (100%) create mode 100644 library/ui-styles/src/main/res/drawable-nodpi/empty_state_dm_dark.png rename {vector => library/ui-styles}/src/main/res/drawable-nodpi/empty_state_room.png (100%) create mode 100644 library/ui-styles/src/main/res/drawable-nodpi/empty_state_room_dark.png create mode 100644 library/ui-styles/src/main/res/values/attrs_drawables.xml diff --git a/vector/src/main/res/drawable-nodpi/empty_state_dm.png b/library/ui-styles/src/main/res/drawable-nodpi/empty_state_dm.png similarity index 100% rename from vector/src/main/res/drawable-nodpi/empty_state_dm.png rename to library/ui-styles/src/main/res/drawable-nodpi/empty_state_dm.png diff --git a/library/ui-styles/src/main/res/drawable-nodpi/empty_state_dm_dark.png b/library/ui-styles/src/main/res/drawable-nodpi/empty_state_dm_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..cb6f0dadd9529c908bb4158089efdd17995bb80b GIT binary patch literal 163736 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

|ZY{ zh*ST*Lw+;&6CYVz1j8sTCe$z@h5PMKouxD5?j-9Rrn~D1Cdpv$XL*s4%!U35Ad$!& z%*y70d0FZ1)I024b~vEoC6zgZEzCJSK{cOCEB$avo5{v%O5muWGmxaZoI-|+X3<-$ zQb%{^MlBM?OKHV>M3SG94Y~+nAu3>9WpA$Yxmyzufey8m3S0Y z;2@QI*n9yjZZR{dpan**cW96zLG_}f8+p|EB!K8b!2*%oLl%qjJcX*bgj6&~x+N6V z)e_M-X0)V`8zD;+PQ4^psbAr%JdkwYF73DUgA$gU7o>vE;y1p5r5=O-l07D5!UI%x z+zvt%_klmwk8dwMcP(TLBm{SIi>OrUmE*feLmg`dP3D*|nxoP%7!-ln*`mbG5(cNWr_1_xc2` z<;#i;Zx_-pY!Q9RbnZAY6(MdwJ!bVsi&ggG-o(UD@~b3>$9|1&J*~b7RDjXC9xrpN z%EUQIdn#49Ol8|$)i&3W5Chw2rC&8t$V$s8AjUe~ngZqJIwdI@chKA~-m7bnikkhP@gtxLmWY^+EW=Pj@d+Xks@7#=^qk-kdf&cbm5isH(cEaa)ap2iXj>)18DU8Yp*4%LYo_z4B%oR7 zlkw3QUw010e)2nXOqTpVNJi)Q_hKo&Oy3H4BE#MZmud7E8-CH@+BVHHbOdKC;X!{3 zW#{XMl8TVKzx4?FdGYHysP+Cm$fSgw*$mcR$HY$*b=~9rr^Q%BQ+j-k)KXvnfESPb zeNY;NP75|UEZ+;q+Bbx+Cs1VNTq;9)6js;@zUx#ib74eqZM-#n#65LJSF#~8e4@pm z5W^H9r7jamyX?WH=*BIk8YyTl8e}Z!x_lAeEsLHZArKh1r z7i?KVR?9_(*J>OWNvp%cuEUDiDVw58&7q;vUfJ(z>=8>NEZ6((&JDjpRcr@!_1+=Z6H~_@ z|KRoTe+`p?kfA@-GvNxN&=`i_vPTPYQpcJc>!wS3konFtK%#b+hgR)BTpP#t*|Z;$ z3=;lb`9+5Uhs_{WPK20IZS8UfFbpD_v_WMnKW;K`w-sQQCObZcaFHR0m*JyN_e{Jb z$DwZ;54)^N)i;N5lat3@BnYVJaB`}UP#BTq)@Yds*)k~=AR!l5R`z2`BpiQ4tN^+n zEoMRf3fb4DwHsmO(lK9YvyNbxeD;jWJ`@H)O$Cea_}71$?|jxj!xZFibsHcPHl-iT zIrvdX@}2umtB9BZme7+@e)x|3G62ggfOcT2|M`pTZ@j9(sD8dfSIiTwKOkvK9E9$N zDm%B7qi@wMw)1%Gs!`>9v11oiTFOd%Qz##tD{HdECToo=aW3Ev+zb$;#uBc1l${mC zf4PmzwHSvSJ)m@3%we?uN5K7e5vt#c0O({j(2xmY4YskZnD8y}#)x;BrIdzZ03nay z=8zs__Mc)O_SOH|U{@chuw5_|;9{)D6VBxFpo(gxq=#@ymG`MB)JBesz?%E4>bK#O z*~QCcjKj2M56)SB#3aJ@kDiHRo>7%7AC=7HO_Jjy23v!jq|VhD&YF1f_J{j*6*j2U zg=Ct_?ASucbP?@Di@NYxqW~359ejxT6Mc=|3vjZp8n=U54kch2=)PSivvHX*^CbT< z(%c+Pc>ITxs{&Aqi>DqV3UH3x z)ZgwzZ;;`Iy#g?h0=zBN5xu{9#wn>c?KYJE(L8#IXg3iZ&EPPi2^gh2ndO2i>+ZRO zI;a!v6p7Rq*c0l5#;GIHxI+*wCu@)-qZ$qmK#FFP18LZOt-l}VA}xmmjI zd9#D#fhvl>!ExQH?O_xo1bD0=@mPiG%BsRZt3?~>DV2D0HdWj|!3XYEI_Lb)+#%++ zRW4D2nD{@uEu|sUFZCz_?{Z6#)~K#gRWn(lA+r5~X~A)14ejpF@2Ua~mw=#=)!3j? z2cK}ivaI*Y%?CQrbEVUr=S7;raS-!`D}Z?nILPzSNw04OL`}$|Yx*slP_GK})*CdS zH#NqJz-2Zvy6hThrm0MIo(R>Vcus>agMyLJF|rUW>Ng(~YYps+iNkBpr%Gaj{~IpJhnN~hxx7HL&h zdV{?=j^Qi$RFojQ{dq6?CPqcdi$gby6pN$?T~f%MxkY{4VcGTA4V{JqTW{s+?d_7& zQ{G_cw99ZSVf z8otrTl~_eou3EsM?Rv?(J1@#S=SdE&VWN+S5Y$3oam_qDyaPP)Ll*=@x}x5P5g^{uWiZK5!00exkI=>B24Q7V%c>jw|Dn&;&W|v0*JnKp2o3V~@yRt$ z+>T0L7f@OG?Q=@TLgbiYcgi0~sN+*TQZE!iDStjFf7bq(j2%wG))O)ckwH=1UDsN+ z9{f=fbW|ri?-FOTq9(=2_A?_(h6^s2Lf8p+_p9>mWk;n=f%77FD=*kL1gHq{{u6bf z@($KQUF(sJKzgpmpo9_oU6A9gFER2wRY$me>MwO~d;x|1ustoMcROE6sp-r?n^{0? zeD5o1O8TzhBP6u$;oXz~PqI*^LNZ3bnGLcjA2Z8UKJEiFWapPOChKk1xe- ze$Gv&JDm_}Vz;}^DY6rpAV}pIux&b2-ddo+cues{VQOQYD}8V+Gqoh~`Pen|vH+sw z%H83m^6wyilDYLx8nzcTHh>>}smQ8x!yE|!9@~mNe#T~o!6S0AJTY+5z`;{wJphco zLokFt2Sz73x^`I+6wTR!7LS;&?!+VplIl!wls*O&y|pYEZyLBu>9ydoKD|D)B)IrH zb;G->I}e}*ah&*sH%Y12)?SZ^55(?I3#94$ul@QT1>rM?-rJ4tY2Bl)P%#x9U~t=R zm{DtKAL6{=kNx78l{2MK5ncS@oqkK6{;i;dYQy93~^DrFVyd5|ft0dJg#ep7 zfI?zYommwN4UC{D{8|{s1FEKKc0hT=Vi|{X9MqF$iVDTN0f(A*MkR&Q9K>64>Rv3b zy%HKi(}0L7APJTezXP0)Mb~HTKe$5*sBRXsYMgEGtUBfCDI$4k2o+O#x@74o0iFPZ zI|2)PYuK#{>GvKxXgpfit7d)U$aMnhHx`jGi8{Twc8GFU$5Yh@iO zu@L3k4IqdqvIP9qmz!A~%u*Mc#mlSnu^Yl20nS`(Vj+M_DepTgn`y+-EG0b>45xFJ zNvIy(M?r~EN~>^*5B^4>5WWhz_^?eI?Cd(lyU3bSV{3_nfnp0n%n&I%3qKPsv$?)n zB}QB&86idvVL4Y}I9mn~M88po2%rl7EaVRY;Ml^59{L!CjZYo*zwnFt+iutOtOm;h zIyDGAe`bv44N;$BHFU0*J>gfHBW1?@vhB*K#9Mv~G@9$WvkgYdl(YUQG3hQu$cF#h zErNd;ID~?maL|Ee(wbuUw7BgEu=QV5X5Jkwa_5g-XM3ojsW{U?I0CbjAnFR& z)D?oDTY9zZPV)Rfl=+^EUzJ3@cj`b>?3amyu*o z%3s8#P6WXj5JX2cMGdK%a-BNfd9WupETFGga$upNg@nsfs8Ah*QBxiT{tm%XYtl!@}n5>L0`R{9b#NsBOLzxlw2bz z0I^yQ91wRBMu0~F(-D*(QI3O^9ABfxIM4Q^DawCgpM<{Y1!K5~*8j8YXeM=UFKNxP z^B@W`I7*8^AZYR&Rk&K%(=2&swa2QYv259=(^`=vZ3^ zeC2<75T=u9LnXUeAyd2Ph<7&%AV9LnAVF%3^e!2=l{6=zy)n$-#C!B*)fajntXfg| zb6uSa_r97*1NdJ1wkO2}`_be00si1ou_L$LPzmy(x~)(PhrQ*3#cT*45il*Tbynjz z2C@oEv1PKrOVP-{*`X`2qzdR8KAB(`4+7^68--a{za8~oDNdE6Q%%kjJSZyQegwkl zIG3*hF*>gi323*~4+_YKcIHF-7HCx~&a_3BUW3LM)|NfJzD zUf&36lX{2?O+ayXMm_29@s%#K-a{7Q?hs=;M5EE>xGvM>xXST%%vQi=7F}LHXFE14 zO(qEfU+3&tV3NzA1G2rO>p(9)u!>}$=2Er<$sZ{Tnept!I$}i9O3y0Z!n{9`FRfHl zq@Kl{nn386?*W>lf))b-c4!|WEY+nnc$B#DFPn3^$+%*X(E>k;>DxGj8`jnWX-jW3 zjA=spPDUXt2dTG4^P+27TrzDF{2;;T;Dkz}sxkdFj_M;|P|KWc$)99wmUhVeu&_kf z*FVRAg!UlR%}QL~p%AxO09-L4ssAQS%a=M5qu7sAUH&uPq8biu;7*@R>X-TBk8|9q zueNo(mJAJ8e)Aay^JG4Kyip8srY(L%p66oWcLC1}_s=rwR6nju^;Y+c(cKrA$w!(N zmGb^EasLb4-@zCem}zlnLU(Rg8)4ddyAv+nAy4Pd+pthUj#+lz`WjWqI`x`Rhd-=J zaL%ZyFqVf;yT(K%+El?L)S;87O2Qfy!Ey77$=0W*_r>3vDiK?D4Md(utmw8|lO+n$j?mw)~_#qaDU^z8f2y znTx6<%UK4B6Z~&D*>Rd;py573_UHE)w!OT85VI_PfgVHf@$n~;<6G^}kkSv|>B~%L zruF=&3&*tsD(DVHqkee6skGV)vRz%z59<56ltx49=wqzxTMGeLBUUVH9Gm>D zf1zLfuFBqJh86&82m7=U{nHGzo{Fk(9=t4mz< zzy138Ptg8f*!|sUifg|-wOVVoHbNLu-S>lnT_kD=|nLV?aCE zK^CshVkfh~Bs~{%)H{0I=_Z^^+}WiG6gC7oW~m=Zg8tiEOox7R55;dY&2ViT3mEM& zGy0h#@j1qZe+VX=FaQB1WkRBadi2b|nIgetz^cVOx$#L2b%NH^7elfIQF+Y*tpZ)T zo*w_ez?2*&=e5y89u{3yzEm~d&VXBGW?lZvlRfY8UoC@O0ck=1Yy(j3|M=(A9G=sBWN*1 zv6r+kK`ZiJ&560%+6csIzqPfy=@6yiP|%$eN@3A#!4bm@3z}!i6A6`WE3^b*d4;BR ztc(l-h{{Y?0eB*s4Fr?EY@ceDT}K+D(YCc|9icffKpiqa@m&_(v$r-w%SMP9dE1lh zbGy5Nv8>P&I0J;Q89O$ui^4ogYCjX@5vc8?*|?xp?H=h=kjxYg!70o00BQXEPnX^_ zcK0@uw3fafRI39zu^8@aW|PmXOS>7gpH=#fHImc<0;ItX z4kvvF)w8D0or6&c5u`fJrhPy66I21jbAy-2!T3pvJMwAvRX;WKrc=cTDhe}Ef!0d3 zGLrx!s3354go&iUz#eZNIPva{IqfJHT_UFOE-9-BhvK3Pabd$q^^aMCUvOg2bE!ft zxQJ&lNm<$)ekOwAx=Z+_`EnVe+_KZ?xUA<&e7?+_%UyPB^d#P(#5T)zc$f@k-Ta*A z$xSF!bs@uvusq1ayzhcUcs^CTup+IaYd?#M()Io%oxNJtTqe?JAt}I(d^zA>4>!&K zmi}sK^iJyTk;vTnuSbT_YJB>})o&W4f4<`WBL$Db;aES)QN^UKxO*qFCj5umYu-Rc!#RSSzD-^t2>jF z9No;oVW8;UbX*5Y{vB`z<)5EVqFRuj$B(7$)#HKtEtPU$ELZL>#y?cxg8t=)FL)R-5R^0_DKonsz zD8Dsm$*eZK6h7R?^Rvun$K@F93L+=h4+@mHHY0reO2WlVPUl|L*wztL#@m>tCDX#s zMr#ZJK8T(u5dwng*}1vcL262bLs2t3!7dC5IdnV;PvX1Nk)|;ve8j%bDibYY8K$eB zI}XW0d>N~z$uqo^^#h;Zm536yxg&L!TLkVRHn4ckg>=m7DYmHhx3$G^|AR3(DBt2A z{0Ud)yefaNjuTMgL<1aUN>S5t0W5sz&@VO15)aWgXbv=J(ga%6jW-%NbV~jR+kbRIROcc)`M(4b4vo`}zkN{IVj^#KMcN z3>5rqq7U+faLSZ^EK!2A_Du=%M;(aDq0jb!?Dk6)bn$T zeLs8>S`9i_nw=DWQ#T8RTHv*{MKo#XCLXy?h*gWR_boz~<5y(nUsDHS&~AybPli4# z5q(ArC@pao9B6CP(PjCsq>$eI76qZ5%4ss`B)=5`cLoR=hMxVI+PjPkIq47*4QvgI z%-igL`$bR4`1Hn0;UGc{8PywKgJ-GlO7VTG@U4=jR|YQ*rpS5 z{`M-D(7A=%8$4D@$=!Ihb%L)aSd_H(>92iz%0k&&k+KnnAshxW1KGn)Q~cHqOXroh z&VU+#kO6bsj};Zs$o zuxY?-n2Wv}$}?%B_0w!mC#HFt5KO>zR&k(qXbaU51LSk(04Mzy=A--BQP4@8c+BV!jYqR&i2 z(AcI|TLEcd!>+nVEV2$LRl6^l+5K_Q0Y0a+!3OOcfuMJslq^X>#^gO^m%SoZK05+z ziB(nbeX4v{40JL4ZYcA)!MZ|6Mh_NB$ADytoatP7GqAo0*Sf6cmJSbXI>wzhY)NC$ z`!dFHr!-_Ps^idIqL4x4UG*(XFbwdxJMq}@)?pwYs-;wme&$*OV(Y2IYgp$(#sY@7 zRj$big5iza{q8ecX7jcRTWOh-mC~5?uYG>L%;D@FlE@EH&(z$x*gM7HIf&~bKV@2qihzvURYphgr3u zWljta>(YEvUFq}j$zAV<38Sao9s``NOv)?2v^1_CXP=(d?)D$j{$NHV{yaAEZrJ^O z?^D>n=VgH1a(S1x?8x5e<1+xg%_vLz{5o0wyhOQ`{}7$~xltx^4G9?~vKMi*;2*E^ zrsXUJj_Y)wP~gXxu9}=2ch&$=fBT9-66aOzfnvrk;+Gi_*Ow3(@3Qw=yLj|)XsYj| z5y*>pq{c{@Y`zweFQQA^>N3m`D~7>hQ3f&--fc$>oLZLTdc-|rBnG`&f+4?qjceTy z&&u=V-H)gjZ3ut&8e}FAz-@t3)eP~OB{eZK;7@!AKI}Z%E@y3w>LXeyGJS5h6r)hs zNLTSZ*#}XJwnyRRO3D;eP2t%hb=SUSd<%EeK>3`kyeH2(v**rNJ*se&Arlb5q`s6f z@h$Fm=7=FoeXT89y>_1yZ22Vj+HTio(Y~%4;A0gSj(tqm>az?*U*)?huk<*hQe&-P zI-h&Ov5E;xk~#M44<_+)3<1M}wW%Lvs*OipS?`L~7^^pO==;?y>@A3>7ePG}P2+z{ zGMm4->Tl~ywKYc{OjD#iap$d}H1f1I%B~7;9=Ml0CkK}!qHcMA{;W4sV|lcdi!#=` zYBnLHQfl|5uCur@1=u0MpQ6olgPEE`@#}9JvMagCj7mC%kW%kXF2d+{Z$)UFw|P*?DwMDQG(h zzGjQG-j9e&3HoMz^U1Mv0j{K^9tG~RY{#1Dpt^+F`j00{{bLj!KP=HBnt$qhIzit4 z{TQ(6CT902qa>8BBSua;IHRx~gk_O3(Cds$o}R>&TA|!ak(;CO_|Xb%2+-rBo{7U* zGR)*ijliom=~UF(Taj$$E(hS9y^p+??yYMM=L~qo%eiD^`F#0xuqYIedP!SdhQN{( zVar=~Lf28Tq6&u@lK4b@R^K_4e9E~@nYil{Vp#3z{L&7GEVelJ3v-dAmAO}~Xk~;s z^}OEe$^INvx+on)Tv6ePx>%9spie8>!s-MEtpy@jIW60&RQ&KuXpJ~VB6m*Rv0O0N z|668b-F`0nmK}_{Fsqp0F0KD^HvbZH%v3s0ITe{6MM~74!e_)x&L^D_oWR1ph#IM@ zEM({$fEB+CM{;h!TTXOsYHet$LT?r6N>&9J-ZDoo)}+i9ow3nF(!UrMTv~FeD&Mbk zE+bJ;Ua6ZR!Xm$Nqy=X(*JzcILB#mb`&^Fjdv7{82ZjCpda+b!9>TbOIWS{ho04jddeqpM%|$pj;EQqgyxo3htyu-IG(X&pm{cL(Hl@ut^Cla;D)r-#1G5) zUlX4vpCWtQnfQp3=DA6{(p(RRx!G#js>jm=RX4X7ZrTr8#2S8x|pzfJtG$9ZQ2?|!{RA# z+D_LZ{YM+z;U8(Zozk2jYRVLdeqDO|2@kM^Kg12z*%FDb({O1WV`8byUY5O~lwk)z zC_THeYN!cI`SMD9Bn;1XtCe$1r%#?OD9+;&(Wd}A08Jvcnnw$Mk~&=wv<9?m?%jCw z8VuIylD4r;eeh~d@LU7+jL)}l7ByN@=D3m1t!mF?3sB&CJ3;%IfWuY`ad5r8Qoi>R z8zHv0=<93SB7$DEU5o9KouSC@z_y|1CRwtuRuUz$y|9%%!GUc*q z779JcH*ryh*~a3mhh4<0Bn*Jv1-?V!u?Mg`SzN zM*L~=`)_LYae0Xz*}SyrPqePnMV&U|$}HRUL?hvTtI7KcWg&9dpWDxE5)sPf$C%r1 zU7t7IS)KbH2<|TxUS*-(OSvp%XM7L`?oou$cuZks-OMDwZtNLj!>ST@^EJ|eH)43n zdmD9&opLTVY0{9L;YS|f0fU_9eJs<*s$Vku{qYFIcK$gZh#zd*CUP9hF2&%l6`bEX zP|3&F%{6`tgn6mOd<)F1T1C#_z)FWoYE@n~qe%PckF5UsP`$ky$gfdmNnc2~SJUD& z7(r1aU+_J1rux>*DBI+%2|~k`flPY+dmcEGTDdV6on8Esf^Yjq2d$PEH?Sl*&uiTX zpOnlvI~}x;?7FOo!5x3jJF@zhikkVt{!DSSgIB=@-w>I0G#$PU!WeCW;!r}12Vh9U zsC8Ru*f6zn-eu{p0~>(?mU282!xd`cG_pD_92kmsjtIUj5_lq+1;SxKXw8O zo(9@B`>$ynoL(+2vJDTmu+ui?9CFLr;4uTSFgt6Ya;Ef!VLvZu{LhbU`qFm>p1^P! zO~F5E_KxU@aObh8fAT);(S0gE7QQ~(5v-9apS!5(X1E}!Cr&t(IF7jZTNL>s9{62- z+wVqhH#RYlaGT9a0oHf#a9*Ov`p=`|O^TM!ZyizyYNy$U z`deEf#%k*o12qiIwk5Yo`l*xtKcfDEEesKPip5KuBL_wu~;D_xya0-L^(BC)`?1VVZ7GkjuZ5IIY-xMf^7fp1O*`x7m)&_ z;e(0dyLQtBx?~701;=7<2onE!CQcf@3>z-*O43O%*{FaS^ZoW}u2aN&-O~{;$vuYo zi&osgJ**Px>+B)Yk>JChws?Hz-ZawdktWGs&q5&IUsw|}N$cgJT-^&aV&@?^wSC2X!-xP(LBO3+5zuyq zcHre10sc``3ciu40{J00P?a?n2MmvLrL(pZ#n@(v1z|Z_A8Df980E)tdn&IMCFz;uK=@EW$Sd8!G2Jevamw%1M5#bdJVM({r4Q`TDw0RDuo^kw9%rljm-qnp^;Mq`W zIU%>R&A*2vSJs}$R&w>_Q$O(AcgU6}>_-Sd(3gQ+&i*3}%-rt-(uO-nW3m1RhC?G* zIF5*LbwC`t`%y>J^5hEpq?!+=?7k&Ac#Yz4j=DleLZ=&#VCpnnPls`ya4Rb zSOV3!5nKl1nFRtdVfD%0m)oFNPfatl`Oej2ZiALVhYy?=3)@#mjPFOdQbBwF3#vn1 zg_KO#yUii{`$2Jy`RCO+OjV(pc>2M(qbQw|K3QeSYyP(NzFI;2szX=ceUsu#ksqm> zzAtJ4{+%H?_+{YY#r5S3{I>9O6_nuQH=gMMH$e6PRp3U_`*iUBDIjs_R^~DNkxM#P zFT_s!yBywOJ-uX$gXF<%kfrc5TjV}Wodj?3pm&P{Orf0hK;!kV5ZjK23Mxb5@|HK03yKMW{Z>(8_X4owYOd zc?bTp^bJbORVr3ur;`MkJVI`Mj)J>Q9L5TUfR0w(3E!%{F|84>LN#EddVv;l{=yT$ z!YnL0ps6;-#meysBcX5*QqwyBqfLoSQPqmAJS+0Jg0UK}1Han5$BwzXO8)W2HNLc5 zPa5`rav-J1g`OC)6vZIF(+UAAj$xwuHn;WzXrwb%A75vz`6jN2D$P8A6{;;F!Y$b^ z0gWXkU&yjh$ycB_0xoTdzv19j{XI`v7~~-}_)d3L7=8ov(>RwIIwj-!*9|JVpZZM7v>oTi_ePcr$Qjo%Uh|-F!P}++;W4bM6 zC{SMy4W~aoVY|4;VV%!Wkd7WHeNy%K@Ml49>|n~1=nkuw=xHnU{7*#jAMYvqG3*+* z-08(|opQy?cS<+Q=;j>h zQPq)o)HD`syqa+V17{9LkIAmyQ+kQwWQnnRy`)U(_=fz?%?-2gOZ>qZ7QLQ{2xRt0 zhd0g)sFX(kZCh$x_Mmr2TkKum+PS4jnF*BT>N*3kZ@E89sq@+{E%NsV;Po^&- zFf9%mj0lzle;j%)v>f?d)&3FwDe%^Fwmd)4Xy<@g@TlDVb*-XF3${MvL0gmdq>1WK z3f$Sx<3i}keDv5MwQ?C}aN`U^zQR_6PIV1mxh4+vWi=7m`0kl&ML+{Quk|*bt+nCK zAaMDHP3=f)xY%vikL!sKz9_Q6z>f(? zdmsG=t=?fdvLw|2HxV)!(W#zY;fWsun4j~F&3vXGo0}lzX?~lqwBm3*Ke&IxAHgKY zhCG~bBmB3lbSPtyg+hfn`4dh2YMpMGut)9LQPLOk`R-i*TjhaCRdeX8+UHP9(AZya*ei223(lWqXS zo@#9LhS=#xV20gj>y7tSFSs3bZ?Cq(_&ZW9{jieaoVPa75Yp#Lt?1-VO@@y%I$DCKE`R%Z zf*es*-}=ztguSRQp*f*Z)d6CbJ6B^!g@_2DKagQr;jYj`zA(?>sLK(qh9Vs0thy-b z$u0^^mQ0Opm#cOg292GV)%KKY1D4 z3cgdgw^uktzuua=p3weDZcxss;bv-$<-10Re+qaB*Tw{pHb%Y_`11R_XrE6=DJ|Yz zz))Uu1<@YQjyy(;Y=}Zp3Tu|;KFb9@@DZO_HSVoWBvAA~%0wSRE@HWV)gpGAi1KS} zydbxbaP zP98tf5u5ch-KiZ%K&!IR7(3(3CE8lv{>(%-z*CigZf_WKutR4_y z7uX+_F>KfDchA-xf$aLs&CbNHu?>lAg(fzM#R&Z)K?J1YT48Q#7N4+9ecAzND@t4H z3hL&ZT#Q7+{{pm^^}LDANHVRB;;@>+SoG2^n%YE|R^%Xzu{OAgkX*&CV2R3Y;}m;QlS%dLin!I5&FHA zz0reoHHF;adUXJP`r!hzz#y^3_zBS{UwMLO^0_OoFed9QO5*)!=Dp~4l=NLWF8b&H zUhC_hH&a0?^wJM`AEmBRZ)VHNkd51gx_EuoM=VsfGYo?CH8n{Isb+PJuUtq<(~a;M zEvQ+M<>$0KqR~E?)R{Yc4clY8+{L{Z*c`IJa_UyE)=yQ!s}BvgF?gbhM3Ouq9UpM??4d8LS|vK3BMPu1S~~sG9S{+$6ji3NT79Ho2$n(>!5e-8wuD#FLs3Vpf|R@WjDvaER2N=prSpa4E2dC|sI3fo=N$RC)JMIuavkYiwd>@99(8oS zTnt6ATUlx%;QI&N+jw|Y31hg_m+cCqU+-gcno{%8FE@TYEwAuy9mnv^6jhC&>?&6aOrq8^Y41c#?N2LlDr zf6MF23i;2S+nt_;=AjPUXywK62>h(t+QddCXIAh+y7iHUv)_2QqkiOu(2}*_Ymu~v zbCz-(h-0IdA;C7AXaaT4vV&_Csn_QVpM-X*0KMwjCY(}@r^cZQE$lfOsi;`qIRfPoossU87Y`L;f&5Q z<6F*49XhPNg3JWwk&fo-Ygl&N(k$`&K$pAF|u7T-N@w+td1%)p2F5lOFs- zMT7d(mgI^F`NyqcugY_{Sz47i-zHc$;AMZ`3HYDGO7r4l6OwqATC_VbZJjDxLa7m_ zl7p!=5Zs2zDPT|;vewbgI{a_G&Bib2Kw9~kktOtLSJWH1MEhOPO>5z;V&(EadkBPp zj|48)g(OPTw~VsDOq`BT+_b{-KvyX|GnhDD5mm7|cenp#g8Y4^wW0g5Btg*{^p536 zqEyvd`+4g^fqO)m$xZ>38sqh!msS7c8V6co7|UH*W4+IFcq0W_ZWy`!i%k=nV)>V4 zBKV(?;&o+M9q(E9o42A5H2zq(qrT*-zIkrsjTkeb7@|m6(MQqL*m6k-ckP=jwq#&w z$77&JDKVcOSi)`SI7jwMa%Vc`SU+Tl4Dfjt9! z9+dIJcW>R?`#zvwme~ks_A`1K{8Ms}+TjGF{C0F<#6_}&eMYpZF5ibMj`B#z2NK8#<)ou>X2nBys1>l zk-`IS_i#!YaME%RSEYu!)vrNbRtkcvi}H%Z@a4>j0T;5KRk?&Jymk(%J#EdsKb22! zTK_{NQt^3(TS2wX%S{)RO+7170v+$nN;kT#jz$W4q{{ zLR}UB401sJCx`94{mr;t?((Bu5sP&DSy#y@Xc7mLcCzTVW#&DLb4)MB`^|3dfOk9D zU6F~mkhT5r4&4d_t=#@sJJQWF_+w)f4pC8&Tm8m|MHU1OSO7cCcxMZ1&#|tO(B=Ic{q{1g#zcr6BfioT?LP~|hMs;66wP$~u5h~f zn=d_hh8FjW>>B6Iry!N>!vL*~H<-jjv^I#lANd8K5wY@Vd|{{LwFTQ-f}j{bmc{mQBQ#rZ2&-`Q5bMABc&&0YLAf}^FdNtUVN99_<1 zJ0r$lY#sO3wjy^{XkPjcrScD*-hQY*zJ-;_YL)mZG>LMHuZ4TBhXFgnNE<+y`;|VV zWN*{>Y@#4)CDuxl_gS>l^qa}w)hRm7A4?fq~ZtL@^7>m72!vPHLz1Px1_yq|E88piOn6r}%;4D|77v27D{Sz!M zoil3MNm5w%73@>lWcncrfr|dVeIb+akoznWBwSB~0RVCi|BIp^*x!q39=oqJcK+0k z8j{6(q@8!cIo?*X?ExAqqc)peX|=ox^l4KQKwgQ(6ikB(d7JxoGD6Bqx#4lAA%_Lt z@weMx`E9)6$Mk2lCPEG80~EaXm8iZRV1xUC1#huEMA7%V3z6HamUDr(8t?P2g*+xs z{DcHiz49o4srn2K5v23RE90a{|S9Tp{*J2_9C z^gT1{5^RnywhQX8UiE=Cn5R7>4lT$g;#1^p_c0&;ZQ$;7hpkY3S64G(ib&wo#G_)c zq_aAJt*Kemz$?^I3fFKzv)0rM5Q-<^Zku-26x+a=tvn`Ov@!5ze)XQ!Y~g{r=TemPI4X ziei)EmE0>sV@ZxB=cF=WS+isxzqZ+sEM5LXLsh3D2Y@43ArPX_<-?q!un*^kv#S^b z$oG1}eQz=d)eG_?9m0 z-khe)$?e)f#Ux!L$~a;8I7{#Iux8_iAAfk=*XO({;TBrsM6lsSC9$YJ5CqX;;3~=-(Xa?;gEgxg*HK zkLl_gc(;fQxY{$p+OHG^t>UjyVRIon`kiT44e65{r{kZ=`Ltdn5JNIzgzr4I0{^E& zBrPrgTk#T(lL zNwt0wI8~wSg8BLch(+BbT|Kv1RDLrY%~n48qit zS?i*R(9V>jawM{_8p0Ix>LJ@Y@KCroPnpizw?qZB`vi{3~uI@&G2_o35NZ|qcOozANofz|u z1Pb@AVeR1hQtiNv`@o-9&@2rOrojRw{Ol?NW@fKOQYe3t^@#F{f6iNdC(6_>e;L#O>{r&X*mrYQtors)q;cpfd$dLL*NWO^+1m|THY-#2z!ys6hZV|ne;KcS7+ho{H7Jq7hZ5qut-rfWw8h- zdy9Jyk**I9>1#_}a;E~zV=S=$Hs&g@m{R;8X5URyl!nzyj_(Mqjmq)9MauqiD|ZE^ zXDe>nMp-*q&j!mOPQ9&(j@Q5KR&2#(mZVNPC9g~swQBUCsh8arC>B;+xi3b0I1l*> zjzZ=bwK2R_PP%)UVsAYe22EfLJdbk{zgjbJv!_W;A9!ao^4jKKq8xf8_S>`4ul&BH}X zpuo$Dy`t;i_tvU@l#ypsg7_Rfg6EO2Sgnno5byr_WPhnnX~a@z*Y4l~I_8!`y(*U* zpI}ZvTTsFi<|rbyYdPT6OyH(D=~Z2WM`r5T<>_NU?Zx3BbFF?bL0VcLEETo%0eu!$pZVGy{M z;!qe6yzh0!J(KF$W55@|UF`<^BJJ}08*#wjgs>vI`Y~&Uz{dsl386#&g?GqZViv$1 zp)cwei|;$?gH}I;@AUjIN1#wqkZ9qNy93yV&+aIMWYoEKj$o zMh7q0`Q_(J{&noL{-R!^-EF)`Jzz1UigvwLIstrco7R7Bs0$y zyF!+p<|+Etf9R56ogH(JYS{aa(>S1ZAE z*n_U`U$-?L0X*8JNpgeP2!M3iQi>=AYNDs&mrNnB1HpCS04V_^%EvQP6xOqxfWSvF zmICA#zqc2W;3TzVP@qqjFiLYD&Z#MID`i`5-v!Jdc!muoshpc4C|2uHW%Y&h4;P1h zplk~C6rNGeSjxy+Ot90TR^F#(8B0ba*p;A_G;h`n#q+Az`~wD&O;u{X7(e^|NTci} zqfkZnqgZ-SOyTTf@IE%aO|gmbp)wt9x3e0s`LOg~L8o-W<1^<^{U#c$xnKHt;ioG*;$cIHI<{&kw7==LP* zF$A{qrMOENG*oZcaWB8&a50nhkQFNY=2w`mG5K|J_Onx1^gwApMH2h3Ssj(JVRb$Q zA*8CO4Y1fj!-O%*4m-(mOfe}cT^|dNh-8t@n&e5oOZO-hEB!1BgV^p#<2O=zuWN z4+J}t?>P!YOP}Ganm4xfd4TH>6(QoCOXOtQYY2}NBPh92*~o*KPyl!^kq{<@JC-As zZCKy4E*=)w$bCLa8~&F%N90plVQIc@x30-NP-ZfmC2?#2E6(91`rGg?P*}}1Q}2YX zDn7IabOs;Brp9~)2XaS zWAhvW+KkGWe;@W_y^zv68}oXKjB*6=?&R%nPglKjUR%V^^MrP z%Pp8&wV31sLwgoL4?l!3w^RbBz``qTtqUyt(f&%`b7&G0%*!^>H`GgR#A*h@m*ITU z6(hnSDf*CuF-Ak2VD_e8B3*yZ>a|v+7w&Y*g^c}hvWy06IQ4IlQSlC`k3ApZUs268 z9`EXXM5pZ@RxplJzZs-gqV_x{N@qH3W-6&-%?ypF@O6i8tVEZ=ysUgQ;kLNF3;rjchd3!G+h-jll4I{qs zp_)P0;!~$~yL&b#6o4KLyfayI2mw<#m*Toe!$lDu98S5z&`^FsM zAUo)Ii{rHBC4=Jqa>~k?vFa$RK4{z>DELkyMdkayZ=%c6Q4JJZcpliH*ANKLN0R0q+}bJnEQ2nv9uyxDqO1;b|c6P-s5h`IaRokcwqddn)~vT?3U?$5^=A-q?==>|@KKsXGxjKYXKeqYnb2qAw{ z>(*XTvxSk!8&bb7dj2xW=R30QXs;tXDg8MJ?aX9d?;=Hi-a?wWxoL8b^XiXijqZ!d zChz9Mx1rA^YbeJq=8-iKo7K?U6Zc2+{d9kzb)2JG4^|hoplE0lb}Zp6nw!AO-);)5 z2n6Ll`Lb~)GJwCQ@Ocf(@`^~aAta$Cqdb-Jkw2`GrVJ`6pE?mj3t`aOCBqi2d*dtt@5%Dt{p?C0N8Gg*UUs{QkGR`>J@yNEiC)Z`*jt!cVf@=iqDa2+fp7DDR}nwT zv2i@H&2EJ)*q)ntZfbyj$eBLc+e-dduo+c?t($BP-*PE`Ee=*{UWzODCJ%I|huwF~ zW33BHUN-he$h*KbjR6ZIZZRu!ePjqDD(!Qp*_e2A304@8)z3O}w0vBqLa0o2k|$Z09Oh7|NKSYF*2{lGXO2_N!S7 zhuIJYQ-wJi`!j`Yd3--i|BvL0pD}XiP)>0v#I*jPBVdSlh0|=iK)U|XK8kV>os<5ZWvc1q?q3xT z3OmtLCdIMGT{t59cjLVRJHYHh4J!7f6Uh_RU%&WIp!S!`R!SO*MEgpl3?^#maasnN z1dj`!kCgnQChnz9DI>y_v2?{<;kJJPtP}8!RcEI!4E1NX#w(q?OATiSW=)*QigFD3 za2#dh#{2tLr;HBbpi5k~gU{^gJW4Ns_hT^r`2wWq`K?FM{A_jDU+SbNV-lV5adHRG*6)D=U^*KO%jQOd6g$aAUYO@NK4aO z?)57Lp_Azvq_{iMiOEmc`zu+d>IJJmHIhnr!y`ZldS$q7G0REzf!qGgOPm@%m@pMz9ZQy|4}p(}$@4 zkACG+(EY>f`20}Oc6J1b1lo5dKe?TYe1mej9FhU=Dl0J{OK6*+fCYUq#&qzQ3xD%b zZSvKAzeO^cC=}ew{qgaWXx2%L&K~U%qI*j?@<}f*I6JoT$c<-GA0S=05F)!^`}@4} zsUP99g?SD)L$E-EGrewCLLx(dW_CF_NP&5OAwv*27tw)R7)>tGdzO-sxpN?v z?D8lo)p<)~{LbapYbixPtU@&w$1DL0Lz}n$j7#>NGdxb2MoKB&jqEp^`Sd6JdWvb9 z^(876krsmJf2FsHWoGvwRGfVzv_G0z*OX;0<^%F0m*Iw&P!_qi`71YO1QMcDFVZR;0WtOkbs{cnk2RNw`x# zj8dnu2yIxkN|UK?H-Uw!3;ILqzXbd#bZ&BuF6c~M*{aZ?aMO!ZHJ?fXt+rFeB5v!& zdT&+^C4~e!>CTV!7yqGi{Bw=qMYp%e6Y{u>Z)0Yn(%9&xjNfM1)^*AKl2M-A9S1%2 zrv~~KDB~tAZta$QtAwh5vf4TS+7M2}bN6g($P|*Oj&U6&+P~1Vf2veO~7`4gF}>97#7EV zjcBVefR<$D z@cVW^ea6hXG_8|1WVA^DY8ka8QE8!% zJ%V4m7O%{+P0?kXL`EFZ-fzN)JI7f+WqgT=M{E3V?*V30xqm_%>@)sVgYHHEHmy(6 zl5gsoGt%w+r{!pc5K^HfQbw(_z?3A|WRauC{C*>2IeNYXgpma4xuH8c#ZFnl7`w+X z=9!+>xLP+q{j^c~z2EPttQgx7!w9vqYWv8ue;oRS!dtbREr9zpTNJYCy#C|=z?3cB z2ZRYuvaXUfJktDTo*PxyhIqQb)$oC#l@E2QH5V=?#OYT2-G!MIc8u!Gk)#wN_(f5M zk{p}%-D#XC7?VC=#x->A%iG@A{~q>)ojiieI@|=qEzQM`!G@7p3F4!h|xd{@u=TRRkEq&5o_H;)@&} z(bgoyXh@RlQYM>Gb8jWSn?G;8C~dJymbGScaK&rs)NEvujE{6vJ5%SXhX%ZYxid^m zasJIV{4i7_>2u+5QzfFWsI%JLFacun_p82T9&;e9`la%EYo2q&^vv(1HHQ$cYeW6~ ze-l69Q4MTWQU&N5{Mxqgb{&DK_VM6>2fZl2z8VzYdrM?K-hd4i1_iILFVwH5aunv(`><(~cB19(&LM3x^9E%V z<+-B~>$RMzH2G1>R3d&g6^wsIU0rYU zglI%F@>m%-SwNtA1)8xD$_8H!#SxnE6a?pKdE3^ea5e?M$CPzQNWupRmL^6s-0--M zTyR(^A6d&%gi@2ImgbB=8YUnMI9fxlv&spbU-BIVx)cK9ef(4ziVn=mr{gzC$jN!Q z^?+^ihzeeseF^5{D#*W@le4QQ0zLgJ&Mjn$>Y8^}=0Dl${i|Ww2kh2UrglQ{IN!KaZLU z{7Kw1cd8EA&={cdN#=H$_h52?k$Q>)P?99f0ni z5vb_MFIz29=$bV}d&rLkT9E^*+GjeOWcu0i5h-GRuzWup%A3&gn?p>i>!#SHfvfwz z9t5892g|3tBbccXWyW(M?_SveG5lYcZkTL?wVA+YYXA4Q%+q`drEsGR+Ie+&f4OKo z^KK5mga22c zUTrFfPag&&T3^-hYeFs;cj8X29t(4)h3GB&DC=o}8d%(YQ6t}bLgW_f?~d}9Rh=%w zPevvtq=?90lFz#B>*kirZCADCfT9&25CR2Zg>pag1L*R&J;MmrL0Ot*xPJ#UT z{Ri{XB?=tEQGx3u}; z66@q-`h@q1_eyIUap{6a|8R)O@CA0NJNk2)c=pCj;<1nX2j^JOLe zShkT33AMRQ?YDDP%C8>D^beC>hLG0y)!Q{Ux4}0oEykfgl~nJo+#3DEXWU#0`X}3I z0|P&g;e#vS@Pxx0?4}+0(LMcS`1Sf+it^Ee20FaqYPin}x$SbeElSLkRIf`}(27jt zxhdt%8E@CYD%${}Kws0tJZ_2LI!eCkFItON&*%@+I!$&l5pSJw`e>*a{6l(u) z5vPq5ztsvw5YX4ANu$(m^F|iegs&v6rc6ShozPe&gGE)I*0wLWin$pO2UAiza>5Y( zmQ?xtMF=vgcIYDD(g8CEi=3V&C}Xv*@{`vt)t*p^Mr)t4^%?V>*x+Sa%bBAWdAbMC z$w^DrHS=%2i<|9Sj=Lo%q!&5heQ zEvAMQ8ka(ga)X4FZ)K207ouK}73PhWD-=xmG1w%x{48-uAqqpK4e%$%E0NU|!S znYs?hYwAh5pqvfXvkkYMc4l&57&}m&FDdqq;W|RAe2gYXd_zYOe&0U$Zf53(P!B;) zLNQfMI&8l$!O;X`I9|&(E5l-{ng8OLK+c%p)F43kLN!Knf~i)|0~{Psx|#>`I6m~@ zsefh?ka(ghlIrOd850|wVsqCg)E)56eEm+2F!88O|7V0;`n=5SSTBP5CG^0m)6N~4 zNWL|eBfG_g8M=_&OkrMP|GAxX-?+f2CuUm|zfH?nY=CvY;q}%7H^n%%50@XH3+q`}~7LbVWPpczeJt zk?uOkB^|+SUA2pdw5m1+BCaxcud*TvmPrT6S@+SW%K1tY# znIkCTPFfYGC+7X{imAEGbdzIF=0b43?N*8vLudjt*7#9^SsdzLOIf(yIeg8)^DJ>% z2E#0%x0mKQr?&*uhZFPv2z4;h{i!2@zUG7khivWhXGe2(nK5W0i2@^yfG{*9zAxM~ zAz{oK)-8YRVE$?_2+;WoXvKV;?OmPqV`4D~S<(-??8a|LDg@p0I$q~IPd1`2pLd-uRRvGtPwcZb;0* zNhg=BOyy9!yh|%wV5&5R*%w-CF#)R@A$t5(`{B&WtKm<`=LGVkDvh%lu4Pkp3n)xpP?(IAS|LFr_xZ=C}w-e0v zZCtt=*SLZ<4N)ACx{cs>gau?>8ZohHguRy7tJeC58CP`M8{;y!!*5sKMhe3Uee{~e z$=U_ua6d zX}s=)k_h;zl&CIkU}xhW%8j{RmTo*Ep|{^dz%`7fG$?|GBq>iQQ#OSv>B)%aa3`pS zh8AIjR=?c-Z<&YOfs6FO7NmwSfcij1slGjU!(FT0lYKju7rZePM-@3QdKsi zApDrx=b>@iAee7AXQEd<8!Z+)HwmH*|GZF~gY&aD`th_#)UU3-(Awnij><<2YoH;( z;(3q1XN%PPuNwwiQwHif;rR?b;Q$M}I|oQ;{bfE|Tb?e)5Zd`q?ei;*;`mtCM@LTh zc14_bZ?`k@4b{(?GVI&bQBjo<@-1YEsn{3}IQ}Zn*T5@dr@D zeW|*$nIg8>u?jM43Bkj3;S=9;QJ8D@7z{vnM{(Oyy@}#_qH+K{(#m~kP3mI>tGQC} zOnI4v4>tC0`>NjebweU-y^76S16~mDY3s-cv9JM0LHS>~;yA8V8{7VdO{?o;^RWox z!iGX;OFLQyMm)_{xcPd5a=pmlwWdz%uQ)24%7+6>1WunHDf<;X#Z2SSD)m~zG7 zQnZtM6RbXE@-jjydm%M3uIs(X87{19`1s8)o}sKOuEh5jeXf?=YEc2^mJ@`q8pibZ z{2T~0cN^=Q?!sN+nerkN@VVaGafAhbWZ=B7Sa~hXq93;G zmXb@J=WcROK)(qdL(G0*d~H}*l~d24KH3K}+^VbNyzlUK{;FEpSEbJZwKem3RM_Lz z{oOzP&=ZImN@i$pugR~WYZ0@vcJYq1)&v*fd@-;XaYZV6xzl(XeW4Od-4@?&k`sx^ z661_Cg3dNqiEnM(=R0lbvqv`p9BV+$^50NhgQ?!MH5RhxRj7f9P`W~Xs!2)BgY3iv z6bdszTM`d;R)y0n|A0o>WjGO<07jH=RCGOqpE6UKalIXi|27aAA92Dawf+R3=Kj=D zou*~?^IGW~r!><8n&6GW6Nh%0$jIS&s?u9955@E?$h}g%LU6GzyiSCNUPU{c zC4&|^*bs_K%IA;-q@|`MTouly9G_2?`QCa7lzoA}c22PK>}!YY5@}5~75lUO%#acJ z5i}z#d7vjD)Tsx$@q64|FNH|-`qJLZ-CtnlhG)o*kE!g0Tt*+AWTko?)B)`zq$H9{~9D$XCDG!?!DG`>9lRKJ4wm zey=9nG*EYM_mn$=y7gj}pp9>2jWumkc2p3=tea*{OSMUDNQ05usAH7=tdXE$Vm%!? zM5VXj{F7)%!xdh$$+;k%gA%d94oZzWv=OTyM;xK1^@_tv}5S37~2YvPQF%am;{A0HFHYNQz29fzkE)a%32kSU+j}8HEnx#f=JlQU zB=U@S!lyX6cgYBa{wVCSk7T)^>F95-XA=6X{?}QPvK7ZkQEQkL@{eHnHl0Lb7}O4% zTk~I+-K1Im2wA73!+Xqy(4+GELvGM#;B-3}_$Rk4@t_WMtpl`jyf!yysMkG22RioA6fzanEuJ+eaeEBWUB;n95 z_wFZ~;M(OtYt>R3J?zT(1zkF=6Qn$gMGrKG*`A_}uHh#frjbq4hVWARM%)Mpq>2>v z2Z`J<7sv_FD2j9aHP^GNHRe6F%o{`cr;KD&?OE+(vMz7wbQ|o>OFg zUOO+yZpw(m>M3PY53yu0U1H9hb_|VF3vMkm`gf? zkoCTRAAbL3!rb~^BP9K8ezXYriK^Lv47WwB(^2`O%!!D$KC_F=sgCKY=fZmnlT}UcfXK_UNB?*cXRMR;(vrmBXS*4Wa z*iXLiu}i@0;C-fsp^KcvQ$iThU^ZlwDHp$mMu^jouVc?#kgvakI~IKfQI%L$^?two zW&b5Vr$ppBzhgNq&p(!XXcm{Qge0*P+;d?hnJgblZ@n60b3k(1BHd5XTRb516Mzyo z#oqEHsFT`OBkn$~j`4S#wKiGN+V5(WeX;%YOC@JX+Ktly%$JjXV5suj1UI~@T0}I_ z$zvM^1G9aMeOhB^jh(z5faJmlEl*NMCzKv)hafm@ruev@{{Nh*jK1fyHT{((XNhH_lwRe+`>fX8_f50%pB7DI5_BKHRj+w zE1&(VT93!l_6%n!%tA8X6qNl~I&WE|y1Lf;So}PKGVm8e^=gv=mcd}g8yQc-06C5b zBz=}UJs>QRa|<@`pE|=rj^gqsv-G$LHBTF5=4?TN?KE7AD!;p62G~!$EJ$37nRU@f zKf%w3E$pK2Gjtm13@lPKwy+c~d*s}O^9-k6d&*W$+Qh0wP=gQ4`OD?%V%(CN#;MTk5 zG;n1Yc>c6-IlPrVN#r{;Jw|H@{}SI|OQUwrM5|ZB7A2=0pWPMKpl5iA>4L~mi~fP)~(sIjjc*tBvY_dl@L+0Jf zeA21rDhJmrL`*KI-b=TFbmk^pgKv9~vF93D(as)gRI1mocY89FAH=X7g7y51*-p{% z`SN8b9Pss)@gq*Dw+@7sfi99w=ou*_6=@hQBIv5NpyTs7g8w#B-QPdeD+w;UJw2o%R)z@R^AVIwe`d!XQ?&dZaPnjI`|BFrT3Ep^&a+MV{DHbWd&rBD{>fVum_S922rPr}VU` zow{iVeNEe2#}3y14MD#~ICQ6DcZjkhtamXX-Ic&Ob@}XQ?JwSaxw&)yL6p3 z97q>`XdE@`a~=7RW`5S6H<@Hm?HFd5+pdAhx6;n0Q#BE^wV2jbTG*MjuTmK)M&quZ z*vV(Q&;MmR(LV)a|%-klEm1B~Cm)Rb+Ff&XZnMo<*ICJLc zy@e!)C_)K^NVTwIL(Z4ZtR-tUxMrUOX5PXqG(znptwgZ=+~3RxD`>BTCP z9Jq@Q0HFE8#xT&T;;cJ+lV){Rh&HtTn9qeWwZSc_PG;k`;b_VcsL0{c+7QSA2CR53 zDzYJ|wdZ}r2${QuPkS)rNG)o<>Nnn@lDyvGsoJt^_oB6!__l{t4~ivV%WO2N0H@27 zzUsz!-rFN7I})sD%DdFFq9sw<-*cbkW>b{Ux~v(DNalO9)^yz7k138f@bCc-aIQNn z?Nd!2;Vv3lRl4ZFg{b@F#6IhtrAxuo$+hSQKcc>tDw-Y5pAR?lI|E?{M(sH^BI-u% zC^c6`_rJH(kGkcklSxK0Rz#+#pO1 zws+ymY}V+|Tw-C6mQ}p6%u~XB!$K)1*?w!S?XPV%bydMdFlhw!T1vs?H4j57wcoE^)3y_+ z6c&A$5{`*rT#g&hH?3?@??lZ}SzcLsj@4)kcot91@L@<|stCDZ{h5#X%N27@P^gn! zli9ze!er1RCbR$KlS-U#y;SsKrT)M5w$^hR4BPBPVRiy!c?;6gdRw!$rB~Tl+s-e+ zvDrUAqC|NCq9k8Hl_Z|d+YD2$uZ{er#jFo-pV}EM^IcKR{w?W=EZJ_&th;IW1DLWF>qvW97X6$K!DY;bPc>)t?%arfk0bGSi6;GPC1*=si@) z&XV?G>%H4#-0AopmRWD2B=HLs)2Vt_ zp7cf1;C=2=9JsVA#p1M;=3?gmk^&clKHo)XUYs>CL{oPqp;$3{Lj`okLdvJq6OauZ z|KuR}jYVsRkmGH99DZK5=+I~F_xN{n4B9;HWy8f@d|SWd8;Pbap__OQ$i41xCJb#ejfqG< z{>a$lCrfYXZh9$=LBplc^ak{OxaP!C8V?~kP;EIayJW|nX~`lq)X{(XB-MFbf0L1p zy&-EpM!0qjHYEj=QQ}ZN`~-Dac^2;MuojXE`X;=Owiw)(&|T*vhdM8zBDy%1%Dti@ z70kl*D~!5NgNGV5j^e2RmYJ9LH_^-`w^pna`qGs`A;>ndU2k! z05WA-&0_iy&@j2$arN3%x@*tT1RPLU!sDdt|7ybXISrO=cI&k+pZ|I5{Yn2Sex$Rd zCU;eepD%n74a3x6;QgBO9nlv!#-ErV3Na4)A=(Cxx#I7uoIL9O$6Tlm*nxu*T_wBKljYx{`W-`XRVZgSZLh$+zK z3(8B$b?PQk6r!Op~$EnWmk|@dD)wv7t+lc6T<<&3&3LP_N43| z{wzIU(J9T*)Ll#M5dS-vIChK}&F(s2*Kz0E@frLO)Qu`O1%{iS>JXFgjEF)4DUjKB zbbCM>XQphHU_Z*u5p~0g97zoYhbe0)U5zBSKsFG}Ua25z0_jWn8`-uazcE?kz2OG2 z5aL-|F`uB-Mn z@hL1FtNZ6k8YW*}ha_reC-2@zG9v%5uuah)JOpPjIig=p|N0lA=Y;((P02**a&Huy z76-A3k9>2P#k|?pWetsQk;jv$9ScV=#QcP>(G5ZC=&z6XkIB^e4BeH<0A`^1`b8ht z;ol5TCZTokZ2F^*L}7H0@-5)eJINa`_V!-_IZwpk`b7{W%P;kw`4Ib2`1<6xuwa81jA1 z#N~6W{}Xf9QQK@Q1imW(|efP<~gYhYm5GD~3%lnRSdYdh%7xZPfN#ll^}}s{XpX(j=(&I zDk}Y=?B=E&?n4aRcKLl~CI02@X6qgAQYcy?J#6!?v?E#hb%2mW(d?a5b=%PNF$!1q zDl|2H2g%>2alk##xE^zyaFEZf24lW?CWoa^4$yKyR7YdtN-{_@HuZk^IxtP&Gtc5{ z@YP{1vm}O-WMsvFv}o(T&aO|QlKGgu8#(VAO&{Ud6Y`C|0wM~fA17CA0=ydn&yTXJ z^u<%i`AeuD06>~aVykhh(BR-6-UulTwosgzRPOqux;Emn{3h`^8Lb~b> zcxXRkRImB<@uP@XNnp z{U532cO%^>N`B}sj-6)pxqRh{sJ!#6 zy@U?pRQ}a2-ue&g163i<_mNrRQ0$q{Y4NnLWNPj{;#*vbNB?L{X|yhI-Z%y9M-o#B z{^$vA`%r4~JRXDJNQ_=jE@eVriuAk{mu3~*;vdsOzvtX>2noy8?znJN${TB=&CiXL zUlg2Q30qWa3CQwlwC!iMbL88shL2K##$?<#I>jTWv=9=PCHYP$(P5|vz)oCRpU~`b zS(=ZO?qtNRxXyYGS}q{HAK;#(xj)8yXl|#HzCwXb?C75GN?D-qYUne~FUgpHjtV@v zJ73<2^X%wx@$8u<(%1yg3s##|OXc-_dt2vCZ-9 z^4r-9%&SwyWtK9*-Wcs2ors0+an9X`7zdkH1+PqAz9pOAxd&_gjaJx$tOM7OMAWGP z{RE8=2igW`(aW4!s}Rhm=&(0FB39j@&@fte^%xL5^>eEXaYO0nJsRnFr9TMA*zntv zzLPz6ufl`((6TA5lGzua4EyumLjaZs z7Y|(67>FDu*xDR5wUnkeaD9Wf8RjPn{%U<{XPvGnl^OS$*7RPFSa)GB)hSLXBc5%6 zzwT_{Fl?OHZEbYdPdcad`7>=;SaH)7?g_bJb0*9YcKL6MpBc%G%AM~)yHl61#X=#WGRv0V{v<77eiEO+2B4@fPMJ)M*r#7Crxb28M$yjjAmt+B_|M$q z&j-Zi9?Z~nftJgwx9w)YL;)tRJNZ2j7_IFdx;yEH_EhUasqs@+`NeiQc{QoHuo_Zh z6Du8kGAV&9;M`AC;eCqhG)n?92sNC>r#r!9DAI9qnl~m;$K!p2?v^hS8 zOAPh_i7Q+qEE+b z@V!zSH9@Z3tNu^HZ-Rk#E{9X;O#}{b6s(;)wr79qepq%z?a@x{1ea<5S^!Dv->NJ_ zLnkiK@dLg(JW@*N@ch$sqSt0HH7y4 z(t3!{s_3pu#-V3_L3sYW@ndF~gSeP&R)a0)%Zny4(4C^-^Avnxp+RX$HHlsq$=Q;S z(zAf)NH&AU9_Rn`kC3dM2t9K-#a9}|NDXCH;mPsw8_W(Q3;Lt6aWu{A-&|@WPUHY* z(!t}KXRN%w7xUOi7$sOv*Kv=nPe*}h0+re7~U`R-q^|U-)k10HTh~EVv zGI-%Ey7vrzQ6ZXLOx(=d7An zIG9Qyb*-X$zX|{4HQ}flC zv0FBD`tV2;cJ!W9N8u6^Neeh9D9;+0Fn)hbxxtXvYh_5XLjv1Y=ra3JR^mCLy(V_Q99k0`D7 zjbug)cVmdUwy{qN;7-2dP+xBw+d?D=8Y%dj_VFA61s`8_+9E9djdUl2QTV^?nPV+Y zMx?(U?Vmgm_2bA)ZHRV*r#Ggf%nR0m99EennF4tMp7?@)H7(rZ6+&_pYIuB-Wpfqe zI`SgSH;|`v{Su!fjTBi;c~DfMrW7TX-Ibmx?60~e3lseE`J)=1i6GD7gp;ixgHC10 z=!W;GT@OawL+lAO%~gt{a-5IYT1{9M>KqUSNh9zh&EUeUv8_tXp`*-^2*G{d-@S#$ zGqaiqz_Cfzl3%`DbK0pqC`9P@(88A;8G(H52Wyl;3&c5~pWdBs{QFMM7j^@!mh z!Tr|T!2vE-VGVOKbh4h+<~O7@Maa?iv=H{TmFj;WPdM!gB|B?6qSr-Eojc*$M6Uzb z@fm|JE-?aTbWg^RZwvEvi&?CewT{Y07T zBg%yB9T}2h#-#%b;HM6egt$FpslDfpZ7)BaqrgvE9K!;j=WI{7#iWRan~v}0QPsT~ zMg(-pJlMb#*`O7;DD)w-&?OBdGIjYa>)5J#G*n{2?gOt_BVDNQbqKI~=tevhSoR zHkHPpqZksz1?lt6&$>)^3CAM1huB3xM~w2^Fhx16{K-4@k80**Xnqe~^^9x|LiQg5 zMy0Q_$59F*@d#}dpK0|=2Ai61~Q;ZS#_JAobCb+ybRvvPX~HVMD<*ScPDzP zHtO2HKq72twfVUv-70Vsd|nx_IZ3>^x1lb!B?)WWu(Hwd(&dnTx^QZY`u~1rrhA9O zABI(1{)ZbFT7h>mPP-r{Zlc3WUR%xcW1R->aXF3J_h5g=l!N2gc3!F8Rjm^Ka7aO!8rBwLZlFKD-dz@gMVYDvz0(9;B8Rg!eu#vM zsX{_ABVIN(9_cgeeB6Gj*jE}u$MJu}TMGDU?ww`xYT9Mm?Kl1W3@~1GKC{DzIrE*} zZrG%?b-Jv1dQWhqVvah%XhP}B=YVH1JIktfzE30|@o6kuvQ3ry>o!dGB0saO{XrMs z89xN9KPAyKDT()`8{B;c%cl}QV;{y$%S#klbv!%iXFXunp5a|-{y#w5=5sSV+w9ub zlTz?c-uDFz$hP0!%6s*3Rvl}@$;=VNqCGtBBi`FUux3f9@7IxaesbCOyZ9}Pc{UTw zvE4W{oe!Q`F|b;FM5AL8Y2O_2gTVhnY2gC3QDJ7Wz?b+DCZsoWFY8o@f|j~C7l1TG z_6Wqsy_BEt?6%<}V1P<7t9okVPeBZybJyh@=}c1UmB0`%ei`zEe0g~|m%xHW-mlL{ zHr%50_Bpb5FtG_hD@*5LKLXdyraIVWWNt(azlPYOra4pwu-W6G_tkD1{4jL&$-yOR zH*$Xqd_59R=SBKb*5ukl2yr7@O&rkR0rqnKs`%rB5&4hUqNUko z3&zmhH_tVAko;x*gx{{;n*}2xEOug$xkX{;Zz!%q!RHWbL3@f(N#5aI->8?=p&xH` zZN$$#8|+89z4|_uBmpGbl*U!Kq}_H`#(eO8e%XD~C%ziVLk6~}gJ{aAO+7WqyQPeB z?g(X9Z3xYn=#RPOCk#*QFY*_oL(0jeV_lzmS|j2*j0D0@(E$Ju#^+%b;hqHmrWoZX zmEih15`mhh_y_;znxPg{-i6`#|Lex^PuEC#o9{`3F2NT&32&gb^X*wRKZw;NmvttA z)mQf@fm~*;T*kyBcm-&6u8Sgr3TJf95XW?ObL9b7L!&NI%8Q!4JD_@J7V+<%y1{%T z;_|Tc>i`^ZUOLP5^D`BuWFwl{A@%~zTl+#Z5wmeJ4TxJ&fAXJ^_o)Njhm!_spAAd+jMZ_+vS_i>I#340B>q2vvBB1oT`z zk4AX30JshPkq%f<$mjUsk>>0Mzidg#jE`hmk*Ega*I8b_!6+HDuo=gxxDwmD!|NDr zg&o23z@r@wtz*x9>AALOb$BFR8*?C0?tl;hgj}634R$C-41)-lG3f>Lc{`!f}^X z;?fmKI$$l!*{xG%?-hjtg?fSWl1AHCPq|Vg15O4j7enR+5?}Wp)pWHFO}6qFYSu5W zLeP8M0`f16e{VD9L6xufn^76AozE2UFAyNtXnim&+ITO*ePej=`<=)^*?kt9ADP+EnY z+*9N27Q)L^rmEReSpSr?NsvIkai)TD%ua~R7@tE@vZ>$3itEm|UK2?N`WS11FB2Bu zPRD6ASChmHz99TTw5;12mnZZ<3H(yYZR*%2{e#Q;sM^%lGZ@=SJN)MgR(~PCzaL@E zs10krp=9oGaDfD1|A*U8N&9s-g1J60bR`cb%ya@?x7$;F@lpzqKIE2^zwATDajYOKGK9 zc--fi`=ooNQL1y+&yT+#I+Rg{%RJuKdl4?GQ@BL-a zVZ!xOWd88Du`hziJy01~x%)p?L1fN_BPOo#(vS-E$^aajuD6w;Ma`Sm0a>Fju$>`! z<$Cm=N`yN;AckA-(i$h~6~}g2&NuSCMSg{2_(MYya&&?(s1+XV`u8?QL#)`HIsO6Z zi6B9F?sO2b3n4v`9w7LmW!+$6o+6^UY#bW~^*ogYwOg0Je#A{d-2?$I;8sVCft|i@ z_BXffd7ZtU^=Z_=AK0`CW(y^&^*NGCLrLGNv!C$FBcL_E=Ft;w&(6&9!tA6o&KgFv+aO331jDm&k9j1V=~|FjSRnF8+ev3kPsNW z#**y}sy6$*!8Kcswa)bk^y>=0qBrrJ{aZ^et8!c)pX{A^YV=b)@c6ppFp%VQ?Mk!N z_&@*0nU?ryZj&ISu7{DpYpS5vm5!i$(w?~a(iXi^H`-t;(B+e!xuaYv8jBZvr;tO% zcPfE0#+Bw9=X_W&bW!*DS;$F}qrYptBH)Ej_u zagAYeS;JvKI|JN?EaanL9Bdg-%3bm{)fav(bLF*dN(w$^cicZ(#uJ)K=rf-IUGcz! z0gt3FhvNxe0>c=yi@s<()=v9Y-|hTR5ew@wd4KX$|4^zAwuv7&`whDf@R77zR8$O@ ze>B9v1Y_L|Nbv_A7YAjfd>Wa%RDg3VR>e9k;~0Qg+bO*agvQO%)`la#tMAhFK+ONw z%Iu*`OWhGBE8OL0)yHGz17-Odj^xW=q}3T zeBL8|jJOSNyI9C;Hn#ALZApsxe@&xi<%qM-8!=S-Kpw&_0*-uC;%zOvx^P*>dpdUI z%GS((*(Zo+fqW?arB&0e^d^uwZsoOPUuG`&4-@pjUdk>g@SA_$MMQ#Gzx;0pAHWEN zs_pq*EcDs&pyuYTu;-pM@Lv1kc>zZGw^p@H=qAl8n~GzaO&i0|uhwD$f^jOvnjeSQ ziyDf%M9W{B3?c>?PgKAC;2=D5WTxD)*PKJ#x{A1z^z$W1wMDy^X1tV@#;ej`Fh7HP zHIx)ZT=YBI`8H&5C?4%ED!CMznc2s9Q}caufPcqtWZ=$FCIPpPAe`k}xSG(g`VkmO z)ZJJqpKcoMxpkHFyO*WzGjyIxqz9!PHV@JK#8mqJ=wE5(gqCzFa1LPZHBF&cvVc;y zF;0;w|;Y;M-!v!)WO7BT^u~#62jn^L^u6kM0aR(!U>igkVwAYN0g)gG;Fv z8B<^VEb5lIpMNEHvpB4Y#+$Hh_6qd*!$twtc)Ye#H&jFG*JB#BidggGQ}sq!nPo@L zqTjrpu^SqO%e>-WXvwrK_a8wly_Nsja6W5keKMIY`e*0`VqffxL3J;?jJw?Tw*{3x z``U1PIM7u`Ue}rQCTS=@2~Wfws=yRg(4s~~;qb?W^}^gC0B*XLQtr%jAdqYM@4=o+?K)f4f>bC8J(ULa4f=1)*lTqA1~&b9fwm*yZM zq`6G8`WZc5vR8h1+u`e+>3`0ScjpDrz1{J)JlTH6F3T~F<=T~AH6TX=Q9;ol$qr2? z+X^mv3WK36If_Q&*yD`w;B;QY3(#KO9-)rWDH(an`AQv3(3=xPQRr=-y;0vmLypB( zos$hszL!~EW1gbB(D3vmE07~@KsmN^n|#1w)9nr~=F5PDarRV)_*%sPzaUFfi}cbI zSM(t>bJnQIq_i$ieyOjaq@MUDP_BmH&clKj(v(9pT3V{lsHrW;+hy0fU~5`FcG~O_ zB{AXy*nnqOg)6}h7CetTdt!U=y8S>ZyW0hCt*vsgS9C_JX?-fChgP452jT}xrHR&!-Yn48qR_FIZ_4v + + + + + + + diff --git a/library/ui-styles/src/main/res/values/theme_dark.xml b/library/ui-styles/src/main/res/values/theme_dark.xml index d07e3c5297e..41ef108b650 100644 --- a/library/ui-styles/src/main/res/values/theme_dark.xml +++ b/library/ui-styles/src/main/res/values/theme_dark.xml @@ -32,6 +32,10 @@ @color/vctr_chat_effect_snow_background_dark @color/element_system_dark + + @drawable/empty_state_dm_dark + @drawable/empty_state_room_dark + #61708B ?colorError diff --git a/library/ui-styles/src/main/res/values/theme_light.xml b/library/ui-styles/src/main/res/values/theme_light.xml index 14ec372f289..cf1e87d2abd 100644 --- a/library/ui-styles/src/main/res/values/theme_light.xml +++ b/library/ui-styles/src/main/res/values/theme_light.xml @@ -32,6 +32,10 @@ @color/vctr_chat_effect_snow_background_light @color/element_background_light + + @drawable/empty_state_dm + @drawable/empty_state_room + #61708B ?colorError diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/RoomListFragment.kt b/vector/src/main/java/im/vector/app/features/home/room/list/RoomListFragment.kt index 45104c11b18..680c0cf564d 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/RoomListFragment.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/RoomListFragment.kt @@ -49,6 +49,7 @@ import im.vector.app.features.home.room.list.actions.RoomListQuickActionsSharedA import im.vector.app.features.home.room.list.actions.RoomListQuickActionsSharedActionViewModel import im.vector.app.features.home.room.list.widget.NotifsFabMenuView import im.vector.app.features.notifications.NotificationDrawerManager +import im.vector.app.features.themes.ThemeUtils import kotlinx.parcelize.Parcelize import org.matrix.android.sdk.api.extensions.orTrue import org.matrix.android.sdk.api.session.room.model.RoomSummary @@ -430,27 +431,44 @@ class RoomListFragment @Inject constructor( !adapterInfosList.any { it.sectionHeaderAdapter.roomsSectionData.isLoading } if (shouldShowEmpty) { val emptyState = when (roomListParams.displayMode) { - RoomListDisplayMode.HOME -> { - StateView.State.Empty( - title = getString(R.string.room_list_catchup_empty_title), - image = ContextCompat.getDrawable(requireContext(), R.drawable.ic_noun_party_popper), - message = getString(R.string.room_list_catchup_empty_body)) - } - RoomListDisplayMode.PEOPLE -> +// RoomListDisplayMode.HOME -> { +// StateView.State.Empty( +// title = getString(R.string.room_list_catchup_empty_title), +// image = ContextCompat.getDrawable(requireContext(), R.drawable.ic_noun_party_popper), +// message = getString(R.string.room_list_catchup_empty_body)) +// } + RoomListDisplayMode.PEOPLE -> StateView.State.Empty( title = getString(R.string.room_list_people_empty_title), - image = ContextCompat.getDrawable(requireContext(), R.drawable.empty_state_dm), + image = ThemeUtils.getAttribute(requireContext(), R.attr.vctr_empty_state_dm)?.let { + ContextCompat.getDrawable(requireContext(), + it.resourceId) + }, isBigImage = true, message = getString(R.string.room_list_people_empty_body) ) - RoomListDisplayMode.ROOMS -> + RoomListDisplayMode.ROOMS -> StateView.State.Empty( title = getString(R.string.room_list_rooms_empty_title), - image = ContextCompat.getDrawable(requireContext(), R.drawable.empty_state_room), + image = ThemeUtils.getAttribute(requireContext(), R.attr.vctr_empty_state_rooms)?.let { + ContextCompat.getDrawable(requireContext(), + it.resourceId) + }, isBigImage = true, message = getString(R.string.room_list_rooms_empty_body) ) - else -> + RoomListDisplayMode.HOME, + RoomListDisplayMode.ALL_IN_ONE -> + StateView.State.Empty( + title = getString(R.string.room_list_people_empty_title), + image = ThemeUtils.getAttribute(requireContext(), R.attr.vctr_empty_state_rooms)?.let { + ContextCompat.getDrawable(requireContext(), + it.resourceId) + }, + isBigImage = true, + message = getString(R.string.room_list_all_in_one_empty_body) + ) + else -> // Always display the content in this mode, because if the footer StateView.State.Content } diff --git a/vector/src/main/res/values/strings.xml b/vector/src/main/res/values/strings.xml index bd9ebcc1f06..85749193df9 100644 --- a/vector/src/main/res/values/strings.xml +++ b/vector/src/main/res/values/strings.xml @@ -2192,6 +2192,7 @@ Your direct message conversations will be displayed here. Tap the + bottom right to start some. Rooms Your rooms will be displayed here. Tap the + bottom right to find existing ones or start some of your own. + Your conversations will be displayed here. Tap the + bottom right to start some. Reactions Agree From 3b9044682809bacb3dc40175e965ba6c5fce08db Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 13 Oct 2021 15:37:29 +0200 Subject: [PATCH 16/17] Clean up --- .../vector/app/features/home/room/list/RoomSummaryCompactItem.kt | 1 - .../java/im/vector/app/features/settings/VectorPreferences.kt | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/RoomSummaryCompactItem.kt b/vector/src/main/java/im/vector/app/features/home/room/list/RoomSummaryCompactItem.kt index 5f844d8e82b..2653eaa318e 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/RoomSummaryCompactItem.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/RoomSummaryCompactItem.kt @@ -46,7 +46,6 @@ abstract class RoomSummaryCompactItem : VectorEpoxyModel Date: Wed, 13 Oct 2021 15:54:18 +0200 Subject: [PATCH 17/17] Code quality --- tools/check/forbidden_strings_in_code.txt | 2 +- .../home/room/list/RoomListSectionBuilderGroup.kt | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/tools/check/forbidden_strings_in_code.txt b/tools/check/forbidden_strings_in_code.txt index 8f8625fe1cf..29077c3a76a 100644 --- a/tools/check/forbidden_strings_in_code.txt +++ b/tools/check/forbidden_strings_in_code.txt @@ -160,7 +160,7 @@ Formatter\.formatShortFileSize===1 # android\.text\.TextUtils ### This is not a rule, but a warning: the number of "enum class" has changed. For Json classes, it is mandatory that they have `@JsonClass(generateAdapter = false)`. If the enum is not used as a Json class, change the value in file forbidden_strings_in_code.txt -enum class===106 +enum class===107 ### Do not import temporary legacy classes import org.matrix.android.sdk.internal.legacy.riot===3 diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/RoomListSectionBuilderGroup.kt b/vector/src/main/java/im/vector/app/features/home/room/list/RoomListSectionBuilderGroup.kt index dbcfefef274..a3dbea422a6 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/RoomListSectionBuilderGroup.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/RoomListSectionBuilderGroup.kt @@ -99,7 +99,9 @@ class RoomListSectionBuilderGroup( return sections } - private fun buildHomeSection(sections: MutableList, activeGroupAwareQueries: MutableList, actualGroupId: String?) { + private fun buildHomeSection(sections: MutableList, + activeGroupAwareQueries: MutableList, + actualGroupId: String?) { if (autoAcceptInvites.showInvites()) { addSection( sections = sections, @@ -164,7 +166,9 @@ class RoomListSectionBuilderGroup( } } - private fun buildAllInOneSection(sections: MutableList, activeGroupAwareQueries: MutableList, actualGroupId: String?) { + private fun buildAllInOneSection(sections: MutableList, + activeGroupAwareQueries: MutableList, + actualGroupId: String?) { if (autoAcceptInvites.showInvites()) { addSection( sections, @@ -362,7 +366,8 @@ class RoomListSectionBuilderGroup( ) } - private fun withQueryParams(builder: (RoomSummaryQueryParams.Builder) -> Unit, block: (RoomSummaryQueryParams) -> Unit) { + private fun withQueryParams(builder: (RoomSummaryQueryParams.Builder) -> Unit, + block: (RoomSummaryQueryParams) -> Unit) { RoomSummaryQueryParams.Builder() .apply { builder.invoke(this) } .build()