From 1ba863bedcd3652dfdf9eaa807b88ebc5799af03 Mon Sep 17 00:00:00 2001 From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> Date: Wed, 7 May 2025 12:38:24 +0400 Subject: [PATCH] ios: close support chat when accepting/removing pending member --- .../ContextPendingMemberActionsView.swift | 15 ++++++++------- .../Views/Chat/Group/GroupChatInfoView.swift | 3 ++- .../Views/Chat/Group/MemberSupportView.swift | 4 ++-- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/apps/ios/Shared/Views/Chat/ComposeMessage/ContextPendingMemberActionsView.swift b/apps/ios/Shared/Views/Chat/ComposeMessage/ContextPendingMemberActionsView.swift index efb7cf1d96..5692bbd01b 100644 --- a/apps/ios/Shared/Views/Chat/ComposeMessage/ContextPendingMemberActionsView.swift +++ b/apps/ios/Shared/Views/Chat/ComposeMessage/ContextPendingMemberActionsView.swift @@ -9,9 +9,9 @@ import SwiftUI import SimpleXChat -// TODO [knocking] go back (close secondary ChatView) on actions struct ContextPendingMemberActionsView: View { @EnvironmentObject var theme: AppTheme + @Environment(\.dismiss) var dismiss var groupInfo: GroupInfo var member: GroupMember @@ -24,7 +24,7 @@ struct ContextPendingMemberActionsView: View { .frame(maxWidth: .infinity) .contentShape(Rectangle()) .onTapGesture { - showRemoveMemberAlert(groupInfo, member) + showRemoveMemberAlert(groupInfo, member, dismiss: dismiss) } ZStack { @@ -34,7 +34,7 @@ struct ContextPendingMemberActionsView: View { .frame(maxWidth: .infinity) .contentShape(Rectangle()) .onTapGesture { - showAcceptMemberAlert(groupInfo, member) + showAcceptMemberAlert(groupInfo, member, dismiss: dismiss) } } .frame(minHeight: 54) @@ -43,7 +43,7 @@ struct ContextPendingMemberActionsView: View { } } -func showAcceptMemberAlert(_ groupInfo: GroupInfo, _ member: GroupMember) { +func showAcceptMemberAlert(_ groupInfo: GroupInfo, _ member: GroupMember, dismiss: DismissAction? = nil) { showAlert( NSLocalizedString("Accept member", comment: "alert title"), message: NSLocalizedString("Member will join the group, accept member?", comment: "alert message"), @@ -52,14 +52,14 @@ func showAcceptMemberAlert(_ groupInfo: GroupInfo, _ member: GroupMember) { title: NSLocalizedString("Accept as member", comment: "alert action"), style: .default, handler: { _ in - acceptMember(groupInfo, member, .member) + acceptMember(groupInfo, member, .member, dismiss: dismiss) } ), UIAlertAction( title: NSLocalizedString("Accept as observer", comment: "alert action"), style: .default, handler: { _ in - acceptMember(groupInfo, member, .observer) + acceptMember(groupInfo, member, .observer, dismiss: dismiss) } ), UIAlertAction( @@ -70,12 +70,13 @@ func showAcceptMemberAlert(_ groupInfo: GroupInfo, _ member: GroupMember) { ) } -func acceptMember(_ groupInfo: GroupInfo, _ member: GroupMember, _ role: GroupMemberRole) { +func acceptMember(_ groupInfo: GroupInfo, _ member: GroupMember, _ role: GroupMemberRole, dismiss: DismissAction? = nil) { Task { do { let acceptedMember = try await apiAcceptMember(groupInfo.groupId, member.groupMemberId, role) await MainActor.run { _ = ChatModel.shared.upsertGroupMember(groupInfo, acceptedMember) + dismiss?() } } catch let error { logger.error("apiAcceptMember error: \(responseError(error))") diff --git a/apps/ios/Shared/Views/Chat/Group/GroupChatInfoView.swift b/apps/ios/Shared/Views/Chat/Group/GroupChatInfoView.swift index 1d578fcb41..66865f39ba 100644 --- a/apps/ios/Shared/Views/Chat/Group/GroupChatInfoView.swift +++ b/apps/ios/Shared/Views/Chat/Group/GroupChatInfoView.swift @@ -781,7 +781,7 @@ struct GroupChatInfoView: View { } } -func removeMember(_ groupInfo: GroupInfo, _ mem: GroupMember) { +func removeMember(_ groupInfo: GroupInfo, _ mem: GroupMember, dismiss: DismissAction? = nil) { Task { do { let updatedMembers = try await apiRemoveMembers(groupInfo.groupId, [mem.groupMemberId]) @@ -789,6 +789,7 @@ func removeMember(_ groupInfo: GroupInfo, _ mem: GroupMember) { updatedMembers.forEach { updatedMember in _ = ChatModel.shared.upsertGroupMember(groupInfo, updatedMember) } + dismiss?() } } catch let error { logger.error("apiRemoveMembers error: \(responseError(error))") diff --git a/apps/ios/Shared/Views/Chat/Group/MemberSupportView.swift b/apps/ios/Shared/Views/Chat/Group/MemberSupportView.swift index 88d6ab13e8..71d7efec92 100644 --- a/apps/ios/Shared/Views/Chat/Group/MemberSupportView.swift +++ b/apps/ios/Shared/Views/Chat/Group/MemberSupportView.swift @@ -252,11 +252,11 @@ struct MemberSupportView: View { } } -func showRemoveMemberAlert(_ groupInfo: GroupInfo, _ member: GroupMember) { +func showRemoveMemberAlert(_ groupInfo: GroupInfo, _ member: GroupMember, dismiss: DismissAction? = nil) { showAlert( title: NSLocalizedString("Remove member?", comment: "alert title"), buttonTitle: "Remove", - buttonAction: { removeMember(groupInfo, member) }, + buttonAction: { removeMember(groupInfo, member, dismiss: dismiss) }, cancelButton: true ) }