From 22f27c42553327de76b0c052d5a838b2dd7c7639 Mon Sep 17 00:00:00 2001 From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> Date: Fri, 9 Jun 2023 14:40:17 +0400 Subject: [PATCH] mobile: allow to leave group in accepted status (#2564) --- .../app/views/chatlist/ChatListNavLinkView.kt | 8 ++++++ .../Views/ChatList/ChatListNavLink.swift | 26 ++++++++++++++----- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chatlist/ChatListNavLinkView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chatlist/ChatListNavLinkView.kt index e005ae0c3..5e9bceb20 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chatlist/ChatListNavLinkView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chatlist/ChatListNavLinkView.kt @@ -159,6 +159,14 @@ fun GroupMenuItems(chat: Chat, groupInfo: GroupInfo, chatModel: ChatModel, showM DeleteGroupAction(chat, groupInfo, chatModel, showMenu) } } + GroupMemberStatus.MemAccepted -> { + if (groupInfo.membership.memberCurrent) { + LeaveGroupAction(groupInfo, chatModel, showMenu) + } + if (groupInfo.canDelete) { + DeleteGroupAction(chat, groupInfo, chatModel, showMenu) + } + } else -> { if (showMarkRead) { MarkReadChatAction(chat, chatModel, showMenu) diff --git a/apps/ios/Shared/Views/ChatList/ChatListNavLink.swift b/apps/ios/Shared/Views/ChatList/ChatListNavLink.swift index 59ecad36e..5733568c0 100644 --- a/apps/ios/Shared/Views/ChatList/ChatListNavLink.swift +++ b/apps/ios/Shared/Views/ChatList/ChatListNavLink.swift @@ -108,6 +108,14 @@ struct ChatListNavLink: View { .onTapGesture { AlertManager.shared.showAlert(groupInvitationAcceptedAlert()) } + .swipeActions(edge: .trailing) { + if (groupInfo.membership.memberCurrent) { + leaveGroupChatButton(groupInfo) + } + if groupInfo.canDelete { + deleteGroupChatButton(groupInfo) + } + } default: NavLinkPlain( tag: chat.chatInfo.id, @@ -124,12 +132,7 @@ struct ChatListNavLink: View { clearChatButton() } if (groupInfo.membership.memberCurrent) { - Button { - AlertManager.shared.showAlert(leaveGroupAlert(groupInfo)) - } label: { - Label("Leave", systemImage: "rectangle.portrait.and.arrow.right") - } - .tint(Color.yellow) + leaveGroupChatButton(groupInfo) } } .swipeActions(edge: .trailing) { @@ -177,7 +180,16 @@ struct ChatListNavLink: View { .tint(Color.orange) } - @ViewBuilder private func deleteGroupChatButton(_ groupInfo: GroupInfo) -> some View { + private func leaveGroupChatButton(_ groupInfo: GroupInfo) -> some View { + Button { + AlertManager.shared.showAlert(leaveGroupAlert(groupInfo)) + } label: { + Label("Leave", systemImage: "rectangle.portrait.and.arrow.right") + } + .tint(Color.yellow) + } + + private func deleteGroupChatButton(_ groupInfo: GroupInfo) -> some View { Button { AlertManager.shared.showAlert(deleteGroupAlert(groupInfo)) } label: {