ios: close support chat when accepting/removing pending member

This commit is contained in:
spaced4ndy
2025-05-07 12:38:24 +04:00
parent d087059153
commit 1ba863bedc
3 changed files with 12 additions and 10 deletions

View File

@@ -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))")

View File

@@ -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))")

View File

@@ -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
)
}