From 86a8c64aa0d70d617669c95a937c29e882d2ef44 Mon Sep 17 00:00:00 2001 From: Narasimha-sc <166327228+Narasimha-sc@users.noreply.github.com> Date: Sat, 5 Sep 2026 15:12:02 +0000 Subject: [PATCH] ios: share the create-and-refresh step between both pickers Both create functions repeated the same create + listUsers + model update; only the final action differs. Extract it next to apiCreateActiveUser, as Kotlin already does with createProfileForInvitation. --- apps/ios/Shared/Model/SimpleXAPI.swift | 8 ++++++++ .../Chat/ComposeMessage/ContextProfilePickerView.swift | 8 ++------ apps/ios/Shared/Views/NewChat/NewChatView.swift | 8 ++------ 3 files changed, 12 insertions(+), 12 deletions(-) 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 }