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) {