From 653a922dbbf285512abce008713ea33c3ef762d4 Mon Sep 17 00:00:00 2001 From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> Date: Tue, 7 May 2024 19:37:46 +0400 Subject: [PATCH] call buttons work from sheet --- apps/ios/Shared/Views/Chat/ChatInfoView.swift | 20 ++++++++++++++++--- apps/ios/Shared/Views/Chat/ChatView.swift | 18 ++++++++++++++++- .../Chat/Contacts/ContactListNavLink.swift | 3 ++- 3 files changed, 36 insertions(+), 5 deletions(-) diff --git a/apps/ios/Shared/Views/Chat/ChatInfoView.swift b/apps/ios/Shared/Views/Chat/ChatInfoView.swift index bf894b3bee..57919fffd3 100644 --- a/apps/ios/Shared/Views/Chat/ChatInfoView.swift +++ b/apps/ios/Shared/Views/Chat/ChatInfoView.swift @@ -107,6 +107,7 @@ struct ChatInfoView: View { @ObservedObject var chat: Chat @State var contact: Contact @State var localAlias: String + @Binding var makeCall: CallMediaType? @State private var connectionStats: ConnectionStats? = nil @State private var customUserProfile: Profile? = nil @State private var connectionCode: String? = nil @@ -415,7 +416,13 @@ struct ChatInfoView: View { private func callButton() -> some View { Button { - + if openedFromChatView { + dismiss() + makeCall = .audio + } else { + chatModel.chatId = chat.id + } + // CallController.shared.startCall(contact, .audio) } label: { actionButton("phone.fill", "call") } @@ -424,7 +431,13 @@ struct ChatInfoView: View { private func videoButton() -> some View { Button { - + if openedFromChatView { + dismiss() + makeCall = .video + } else { + chatModel.chatId = chat.id + } + // CallController.shared.startCall(contact, .video) } label: { actionButton("video.fill", "video") } @@ -699,7 +712,8 @@ struct ChatInfoView_Previews: PreviewProvider { openedFromChatView: true, chat: Chat(chatInfo: ChatInfo.sampleData.direct, chatItems: []), contact: Contact.sampleData, - localAlias: "" + localAlias: "", + makeCall: Binding.constant(nil) ) } } diff --git a/apps/ios/Shared/Views/Chat/ChatView.swift b/apps/ios/Shared/Views/Chat/ChatView.swift index 3e8831aae4..912f2a390a 100644 --- a/apps/ios/Shared/Views/Chat/ChatView.swift +++ b/apps/ios/Shared/Views/Chat/ChatView.swift @@ -23,6 +23,7 @@ struct ChatView: View { @State private var showAddMembersSheet: Bool = false @State private var composeState = ComposeState() @State private var keyboardVisible = false + @State private var makeCall: CallMediaType? = nil @State private var tableView: UITableView? @State private var loadingItems = false @State private var firstPage = false @@ -90,6 +91,15 @@ struct ChatView: View { dismiss() } } + .onChange(of: makeCall) { callMedia in + if let callMedia = callMedia { + switch cInfo { + case let .direct(contact): CallController.shared.startCall(contact, callMedia) + default: () + } + } + makeCall = nil + } .onDisappear { VideoPlayerView.players.removeAll() if chatModel.chatId == cInfo.id && !presentationMode.wrappedValue.isPresented { @@ -113,7 +123,13 @@ struct ChatView: View { ChatInfoToolbar(chat: chat) } .sheet(isPresented: $showChatInfoSheet) { - ChatInfoView(openedFromChatView: true, chat: chat, contact: contact, localAlias: chat.chatInfo.localAlias) + ChatInfoView( + openedFromChatView: true, + chat: chat, + contact: contact, + localAlias: chat.chatInfo.localAlias, + makeCall: $makeCall + ) } } else if case let .group(groupInfo) = cInfo { Button { diff --git a/apps/ios/Shared/Views/Chat/Contacts/ContactListNavLink.swift b/apps/ios/Shared/Views/Chat/Contacts/ContactListNavLink.swift index 6b4b316e7d..93bf66935e 100644 --- a/apps/ios/Shared/Views/Chat/Contacts/ContactListNavLink.swift +++ b/apps/ios/Shared/Views/Chat/Contacts/ContactListNavLink.swift @@ -34,7 +34,8 @@ struct ContactListNavLink: View { openedFromChatView: false, chat: chat, contact: contact, - localAlias: chat.chatInfo.localAlias + localAlias: chat.chatInfo.localAlias, + makeCall: Binding.constant(nil) ) } label: { HStack{