diff --git a/apps/ios/Shared/Model/SimpleXAPI.swift b/apps/ios/Shared/Model/SimpleXAPI.swift index 6f8c6e80b0..0e3dd9b2aa 100644 --- a/apps/ios/Shared/Model/SimpleXAPI.swift +++ b/apps/ios/Shared/Model/SimpleXAPI.swift @@ -259,6 +259,14 @@ func apiCreateActiveUser(_ p: Profile?, pastTimestamp: Bool = false, keepActiveU throw r.unexpected } +func createProfileKeepingActiveUser(_ profile: Profile) async throws -> User { + let newUser = try apiCreateActiveUser(profile, keepActiveUser: true) + if let users = try? await listUsersAsync() { + await MainActor.run { ChatModel.shared.users = users } + } + return newUser +} + func listUsers() throws -> [UserInfo] { return try listUsersResponse(chatSendCmdSync(.listUsers)) } diff --git a/apps/ios/Shared/Views/Chat/ComposeMessage/ContextProfilePickerView.swift b/apps/ios/Shared/Views/Chat/ComposeMessage/ContextProfilePickerView.swift index 2919cc44d0..095587cd3c 100644 --- a/apps/ios/Shared/Views/Chat/ComposeMessage/ContextProfilePickerView.swift +++ b/apps/ios/Shared/Views/Chat/ComposeMessage/ContextProfilePickerView.swift @@ -229,14 +229,10 @@ struct ContextProfilePickerView: View { } private func createProfileForChat(_ profile: Profile) async throws { - let newUser = try apiCreateActiveUser(profile, keepActiveUser: true) - let updatedUsers = try? await listUsersAsync() + let newUser = try await createProfileKeepingActiveUser(profile) await MainActor.run { showAddProfile = false - if let updatedUsers { - chatModel.users = updatedUsers - users = updatedUsers.map { $0.user }.filter { u in u.activeUser || !u.hidden } - } + users = chatModel.users.map { $0.user }.filter { u in u.activeUser || !u.hidden } changeProfile(newUser) } } diff --git a/apps/ios/Shared/Views/NewChat/NewChatView.swift b/apps/ios/Shared/Views/NewChat/NewChatView.swift index 3241dbd894..d29660fb71 100644 --- a/apps/ios/Shared/Views/NewChat/NewChatView.swift +++ b/apps/ios/Shared/Views/NewChat/NewChatView.swift @@ -576,14 +576,10 @@ private struct ActiveProfilePicker: View { } private func createProfileForConnection(_ profile: Profile) async throws { - let newUser = try apiCreateActiveUser(profile, keepActiveUser: true) - let updatedUsers = try? await listUsersAsync() + let newUser = try await createProfileKeepingActiveUser(profile) await MainActor.run { showAddProfile = false - if let updatedUsers { - chatModel.users = updatedUsers - profiles = updatedUsers.map { $0.user } - } + profiles = chatModel.users.map { $0.user } selectedProfile = newUser profileSwitchStatus = .switchingUser }