mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2026-10-06 03:27:58 +00:00
core, tests, ui: keep member order with role index, skip down-migration schema comparison, reload support list on return with older remote hosts
This commit is contained in:
@@ -424,7 +424,6 @@ final class ChatModel: ObservableObject {
|
||||
@Published var groupMembers: [GMember] = []
|
||||
@Published var groupMembersIndexes: Dictionary<Int64, Int> = [:] // groupMemberId to index in groupMembers list
|
||||
@Published var membersLoaded = false
|
||||
var membersLoadedGroupId: Int64?
|
||||
// Runtime-only relay hostnames for pre-join channel display, not persisted — lost on app restart.
|
||||
// APIConnectPreparedGroup re-fetches fresh relays at connect time, so stale data doesn't affect join.
|
||||
@Published var channelRelayHostnames: [Int64: [String]] = [:]
|
||||
@@ -578,12 +577,9 @@ final class ChatModel: ObservableObject {
|
||||
let groupMembers = await apiListMembers(groupInfo.groupId)
|
||||
await MainActor.run {
|
||||
if chatId == groupInfo.id {
|
||||
if let groupMembers {
|
||||
self.groupMembers = groupMembers.map { GMember.init($0) }
|
||||
self.populateGroupMembersIndexes()
|
||||
self.membersLoaded = true
|
||||
self.membersLoadedGroupId = groupInfo.groupId
|
||||
}
|
||||
self.groupMembers = groupMembers.map { GMember.init($0) }
|
||||
self.populateGroupMembersIndexes()
|
||||
self.membersLoaded = true
|
||||
updateView()
|
||||
}
|
||||
}
|
||||
@@ -1331,15 +1327,11 @@ final class ChatModel: ObservableObject {
|
||||
}
|
||||
|
||||
func upsertSupportChatMember(_ cInfo: ChatInfo) {
|
||||
if case let .group(groupInfo, .memberSupport(member?)?) = cInfo, chatId == groupInfo.id {
|
||||
var m = member
|
||||
var supportChatAdded = false
|
||||
if let current = getGroupMember(member.groupMemberId)?.wrapped {
|
||||
supportChatAdded = current.supportChat == nil && member.supportChat != nil
|
||||
m = current
|
||||
m.supportChat = member.supportChat
|
||||
m.memberProfile = member.memberProfile
|
||||
}
|
||||
if case let .group(groupInfo, .memberSupport(member?)?) = cInfo {
|
||||
var m = getGroupMember(member.groupMemberId)?.wrapped ?? member
|
||||
let supportChatAdded = m.supportChat == nil && member.supportChat != nil
|
||||
m.supportChat = member.supportChat
|
||||
m.memberProfile = member.memberProfile
|
||||
_ = upsertGroupMember(groupInfo, m)
|
||||
if supportChatAdded {
|
||||
objectWillChange.send()
|
||||
|
||||
Reference in New Issue
Block a user