From 8469e8583edab4aa7bf2fccefa1f5430a891782b Mon Sep 17 00:00:00 2001 From: Benoit Martins Date: Tue, 9 Jan 2024 12:21:07 +0100 Subject: [PATCH] Toast display when user records call --- Linphone/TelecomManager/TelecomManager.swift | 34 +++++++++++++++++--- Linphone/UI/Main/Fragments/ToastView.swift | 17 ++++++---- 2 files changed, 40 insertions(+), 11 deletions(-) diff --git a/Linphone/TelecomManager/TelecomManager.swift b/Linphone/TelecomManager/TelecomManager.swift index a5270c0e3..22372bc1a 100644 --- a/Linphone/TelecomManager/TelecomManager.swift +++ b/Linphone/TelecomManager/TelecomManager.swift @@ -342,12 +342,38 @@ class TelecomManager: ObservableObject { isRemoteRecording = call.remoteParams?.isRecording ?? false - if isRemoteRecording && ToastViewModel.shared.toastMessage == "" { + if isRemoteRecording && ToastViewModel.shared.toastMessage.isEmpty { - ToastViewModel.shared.toastMessage = "\(call.remoteAddress) is recording" - ToastViewModel.shared.displayToast.toggle() + DispatchQueue.main.async { + var displayName = "" + let friend = ContactsManager.shared.getFriendWithAddress(address: call.remoteAddress!) + if friend != nil && friend!.address != nil && friend!.address!.displayName != nil { + displayName = friend!.address!.displayName! + } else { + if call.remoteAddress!.displayName != nil { + displayName = call.remoteAddress!.displayName! + } else if call.remoteAddress!.username != nil { + displayName = call.remoteAddress!.username! + } + } + + ToastViewModel.shared.toastMessage = "\(displayName) is recording" + ToastViewModel.shared.displayToast = true + } - Log.info("[Call] Call is recording by \(call.remoteAddress)") + Log.info("[Call] Call is recording by \(call.remoteAddress!.asStringUriOnly())") + } + + if !isRemoteRecording && ToastViewModel.shared.toastMessage.contains("is recording") { + + DispatchQueue.main.async { + withAnimation { + ToastViewModel.shared.toastMessage = "" + ToastViewModel.shared.displayToast = false + } + } + + Log.info("[Call] Call is recording Stop recording by \(call.remoteAddress!.asStringUriOnly())") } if call.userData == nil { diff --git a/Linphone/UI/Main/Fragments/ToastView.swift b/Linphone/UI/Main/Fragments/ToastView.swift index 025479ae0..9f8dc277e 100644 --- a/Linphone/UI/Main/Fragments/ToastView.swift +++ b/Linphone/UI/Main/Fragments/ToastView.swift @@ -100,19 +100,22 @@ struct ToastView: View { .stroke(toastViewModel.toastMessage.contains("Success") ? Color.greenSuccess500 : Color.redDanger500, lineWidth: 1) ) .onTapGesture { - withAnimation { - toastViewModel.toastMessage = "" - toastViewModel.displayToast = false - } - } - .onAppear { - DispatchQueue.main.asyncAfter(deadline: .now() + 2) { + if !toastViewModel.toastMessage.contains("is recording") { withAnimation { toastViewModel.toastMessage = "" toastViewModel.displayToast = false } } } + .onAppear { + if !toastViewModel.toastMessage.contains("is recording") { + DispatchQueue.main.asyncAfter(deadline: .now() + 2) { + withAnimation { + toastViewModel.toastMessage = "" + toastViewModel.displayToast = false + } + } + } } Spacer() }