From acf7a226f0fa05cc0d16fc901fe4e8e76b292381 Mon Sep 17 00:00:00 2001 From: Valere Date: Tue, 31 Aug 2021 15:39:22 +0200 Subject: [PATCH] Fix / summary showing roomIds instead of names --- .../spaces/manage/SpaceManageRoomViewState.kt | 4 +++- .../spaces/manage/SpaceManageRoomsController.kt | 5 ++++- .../spaces/manage/SpaceManageRoomsViewModel.kt | 13 ++++++++----- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceManageRoomViewState.kt b/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceManageRoomViewState.kt index 9b0256e951..064a561aa0 100644 --- a/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceManageRoomViewState.kt +++ b/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceManageRoomViewState.kt @@ -29,7 +29,9 @@ data class SpaceManageRoomViewState( val selectedRooms: List = emptyList(), val currentFilter: String = "", val actionState: Async = Uninitialized, - val paginationStatus: Async = Uninitialized + val paginationStatus: Async = Uninitialized, + // cached room summaries of known rooms, we use it because computed room name would be better using it + val knownRoomSummaries : List = emptyList() ) : MvRxState { constructor(args: SpaceManageArgs) : this( spaceId = args.spaceId diff --git a/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceManageRoomsController.kt b/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceManageRoomsController.kt index ffd5743a10..dadcf9d826 100644 --- a/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceManageRoomsController.kt +++ b/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceManageRoomsController.kt @@ -80,7 +80,10 @@ class SpaceManageRoomsController @Inject constructor( filteredResult.forEach { childInfo -> roomManageSelectionItem { id(childInfo.childRoomId) - matrixItem(childInfo.toMatrixItem()) + matrixItem( + data.knownRoomSummaries.firstOrNull { it.roomId == childInfo.childRoomId }?.toMatrixItem() + ?: childInfo.toMatrixItem() + ) avatarRenderer(host.avatarRenderer) suggested(childInfo.suggested ?: false) selected(data.selectedRooms.contains(childInfo.childRoomId)) diff --git a/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceManageRoomsViewModel.kt b/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceManageRoomsViewModel.kt index 18eb24231d..0222dde275 100644 --- a/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceManageRoomsViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceManageRoomsViewModel.kt @@ -51,9 +51,7 @@ class SpaceManageRoomsViewModel @AssistedInject constructor( ) } - viewModelScope.launch(Dispatchers.IO) { - refreshSummaryAPI() - } + refreshSummaryAPI() } @AssistedFactory @@ -163,7 +161,10 @@ class SpaceManageRoomsViewModel @AssistedInject constructor( setState { copy( childrenInfo = apiResult, - paginationStatus = Uninitialized + paginationStatus = Uninitialized, + knownRoomSummaries = apiResult.invoke()?.children?.mapNotNull { + session.getRoomSummary(it.childRoomId) + }.orEmpty() ) } } @@ -195,6 +196,7 @@ class SpaceManageRoomsViewModel @AssistedInject constructor( knownStateList = knownResults.childrenState.orEmpty(), limit = paginationLimit ) + val newKnown = apiResult.children.mapNotNull { session.getRoomSummary(it.childRoomId) } setState { copy( childrenInfo = Success( @@ -203,7 +205,8 @@ class SpaceManageRoomsViewModel @AssistedInject constructor( nextToken = apiResult.nextToken ) ), - paginationStatus = Success(Unit) + paginationStatus = Success(Unit), + knownRoomSummaries = (state.knownRoomSummaries + newKnown).distinctBy { it.roomId } ) } } catch (failure: Throwable) {