From b7b68a408d72663495ac4893f82eb8705f879290 Mon Sep 17 00:00:00 2001
From: Taras Smakula <tarassmakula@gmail.com>
Date: Fri, 18 Nov 2022 16:58:40 +0200
Subject: [PATCH] Refresh known users for select users view model

---
 .../feature/room/select_users/SelectUsersDataSource.kt     | 7 +++++++
 .../feature/room/select_users/SelectUsersViewModel.kt      | 4 ++++
 2 files changed, 11 insertions(+)

diff --git a/app/src/main/java/org/futo/circles/feature/room/select_users/SelectUsersDataSource.kt b/app/src/main/java/org/futo/circles/feature/room/select_users/SelectUsersDataSource.kt
index 35fe65709..d804c1283 100644
--- a/app/src/main/java/org/futo/circles/feature/room/select_users/SelectUsersDataSource.kt
+++ b/app/src/main/java/org/futo/circles/feature/room/select_users/SelectUsersDataSource.kt
@@ -11,6 +11,7 @@ import org.futo.circles.model.NoResultsItem
 import org.futo.circles.model.UserListItem
 import org.futo.circles.provider.MatrixSessionProvider
 import org.matrix.android.sdk.api.session.getRoom
+import org.matrix.android.sdk.api.session.room.roomSummaryQueryParams
 import org.matrix.android.sdk.api.session.user.model.User
 
 class SelectUsersDataSource(roomId: String?) {
@@ -25,6 +26,12 @@ class SelectUsersDataSource(roomId: String?) {
 
     val selectedUsersFlow = MutableStateFlow<List<UserListItem>>(emptyList())
 
+    suspend fun loadAllRoomMembersIfNeeded(){
+        session?.roomService()?.getRoomSummaries(roomSummaryQueryParams())?.forEach {
+            session.getRoom(it.roomId)?.membershipService()?.loadRoomMembersIfNeeded()
+        }
+    }
+
     suspend fun search(query: String) =
         combine(
             searchKnownUsers(query),
diff --git a/app/src/main/java/org/futo/circles/feature/room/select_users/SelectUsersViewModel.kt b/app/src/main/java/org/futo/circles/feature/room/select_users/SelectUsersViewModel.kt
index 69c5e8e52..87833f7b4 100644
--- a/app/src/main/java/org/futo/circles/feature/room/select_users/SelectUsersViewModel.kt
+++ b/app/src/main/java/org/futo/circles/feature/room/select_users/SelectUsersViewModel.kt
@@ -16,6 +16,10 @@ class SelectUsersViewModel(
     val searchUsersLiveData = MutableLiveData<List<InviteMemberListItem>>()
     val selectedUsersLiveData = dataSource.selectedUsersFlow.asLiveData()
 
+    init {
+        launchBg { dataSource.loadAllRoomMembersIfNeeded() }
+    }
+
     fun initSearchListener(queryFlow: StateFlow<String>) {
         launchUi {
             queryFlow
-- 
GitLab