mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2026-10-23 12:53:18 +00:00
core, ui: update member support chats list from events instead of reloading all members
This commit is contained in:
1 parent
93910b80e9
commit
84ed5a9a2b
14 files changed
+118
-58
No files matched your search
@@ -381,6 +381,12 @@ object ChatModel {
|
||||
fun getContactChat(contactId: Long): Chat? = chats.value.firstOrNull { it.chatInfo is ChatInfo.Direct && it.chatInfo.apiId == contactId }
|
||||
fun getGroupChat(groupId: Long): Chat? = chats.value.firstOrNull { it.chatInfo is ChatInfo.Group && it.chatInfo.apiId == groupId }
|
||||
|
||||
suspend fun upsertSupportChatMember(rhId: Long?, cInfo: ChatInfo) {
|
||||
if (cInfo !is ChatInfo.Group) return
|
||||
val member = (cInfo.groupChatScope as? GroupChatScopeInfo.MemberSupport)?.groupMember_ ?: return
|
||||
chatsContext.upsertGroupMember(rhId, cInfo.groupInfo, member)
|
||||
}
|
||||
|
||||
fun populateGroupMembersIndexes() {
|
||||
groupMembersIndexes.value = emptyMap()
|
||||
val gmIndexes = groupMembersIndexes.value.toMutableMap()
|
||||
|
||||
+2
@@ -3006,6 +3006,7 @@ object ChatController {
|
||||
chatModel.chatsContext.increaseGroupReportsCounter(rhId, cInfo.id)
|
||||
}
|
||||
chatModel.secondaryChatsContext.value?.addChatItem(rhId, cInfo, cItem)
|
||||
chatModel.upsertSupportChatMember(rhId, cInfo)
|
||||
}
|
||||
} else if (cItem.isRcvNew && cInfo.ntfsEnabled(cItem)) {
|
||||
withContext(Dispatchers.Main) {
|
||||
@@ -3087,6 +3088,7 @@ object ChatController {
|
||||
if (cItem.isActiveReport) {
|
||||
chatModel.chatsContext.decreaseGroupReportsCounter(rhId, cInfo.id)
|
||||
}
|
||||
chatModel.upsertSupportChatMember(rhId, cInfo)
|
||||
}
|
||||
withContext(Dispatchers.Main) {
|
||||
if (toChatItem == null) {
|
||||
|
||||
+1
@@ -79,6 +79,7 @@ suspend fun processLoadedChat(
|
||||
withContext(Dispatchers.Main) {
|
||||
chatsCtx.chatItems.replaceAll(chat.chatItems)
|
||||
chatModel.chatId.value = chat.id
|
||||
chatModel.upsertSupportChatMember(chat.remoteHostId, chat.chatInfo)
|
||||
splits.value = newSplits
|
||||
if (chat.chatItems.isNotEmpty()) {
|
||||
unreadAfterItemId.value = chat.chatItems.last().id
|
||||
|
||||
+1
@@ -762,6 +762,7 @@ fun ChatView(
|
||||
)
|
||||
if (updatedChatInfo != null) {
|
||||
chatModel.chatsContext.updateChatInfo(chatRh, updatedChatInfo)
|
||||
chatModel.upsertSupportChatMember(chatRh, updatedChatInfo)
|
||||
}
|
||||
}
|
||||
withContext(Dispatchers.Main) {
|
||||
|
||||
+1
@@ -599,6 +599,7 @@ fun ComposeView(
|
||||
chatItems.forEach { aChatItem ->
|
||||
withContext(Dispatchers.Main) {
|
||||
chatsCtx.addChatItem(chat.remoteHostId, aChatItem.chatInfo, aChatItem.chatItem)
|
||||
chatModel.upsertSupportChatMember(chat.remoteHostId, aChatItem.chatInfo)
|
||||
}
|
||||
}
|
||||
return chatItems.first().chatItem
|
||||
|
||||
+4
-25
@@ -42,12 +42,11 @@ fun ModalData.MemberSupportView(
|
||||
ModalManager.end.closeModals()
|
||||
}
|
||||
LaunchedEffect(Unit) {
|
||||
setGroupMembers(rhId, groupInfo, chatModel)
|
||||
if (!chatModel.membersLoaded.value) {
|
||||
setGroupMembers(rhId, groupInfo, chatModel)
|
||||
}
|
||||
}
|
||||
ModalView(
|
||||
close = close,
|
||||
endButtons = { RefreshMembersButton(rhId, groupInfo) }
|
||||
) {
|
||||
ModalView(close = close) {
|
||||
MemberSupportViewLayout(
|
||||
chat,
|
||||
groupInfo,
|
||||
@@ -56,26 +55,6 @@ fun ModalData.MemberSupportView(
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun RefreshMembersButton(
|
||||
rhId: Long?,
|
||||
groupInfo: GroupInfo
|
||||
) {
|
||||
IconButton(
|
||||
onClick = {
|
||||
withBGApi {
|
||||
setGroupMembers(rhId, groupInfo, chatModel)
|
||||
}
|
||||
}
|
||||
) {
|
||||
Icon(
|
||||
painterResource(MR.images.ic_refresh),
|
||||
contentDescription = null,
|
||||
tint = MaterialTheme.colors.primary
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun ModalData.MemberSupportViewLayout(
|
||||
chat: Chat,
|
||||
|
||||
Reference in new issue
Block a user