From 4b2058fbe60b47991ad3a9bba65e9584acb67b92 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Mon, 15 Jan 2024 10:54:33 +0100 Subject: [PATCH] Show blue toast when entering an end-to-end encrypted conversation --- app/src/main/java/org/linphone/ui/main/MainActivity.kt | 10 ++++++++++ .../ui/main/chat/fragment/ConversationFragment.kt | 7 +++++++ .../ui/main/chat/viewmodel/ConversationViewModel.kt | 5 +++++ app/src/main/res/values/strings.xml | 7 ++++--- 4 files changed, 26 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/linphone/ui/main/MainActivity.kt b/app/src/main/java/org/linphone/ui/main/MainActivity.kt index c5702759e..e64d0489d 100644 --- a/app/src/main/java/org/linphone/ui/main/MainActivity.kt +++ b/app/src/main/java/org/linphone/ui/main/MainActivity.kt @@ -308,6 +308,16 @@ class MainActivity : GenericActivity() { ) } + fun showBlueToast(message: String, @DrawableRes icon: Int) { + val blueToast = ToastUtils.getBlueToast(this, binding.toastsArea, message, icon) + binding.toastsArea.addView(blueToast.root) + + blueToast.root.slideInToastFromTopForDuration( + binding.toastsArea as ViewGroup, + lifecycleScope + ) + } + fun showRedToast(message: String, @DrawableRes icon: Int) { val redToast = ToastUtils.getRedToast(this, binding.toastsArea, message, icon) binding.toastsArea.addView(redToast.root) diff --git a/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationFragment.kt b/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationFragment.kt index 831382594..6f616d494 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationFragment.kt @@ -326,6 +326,13 @@ class ConversationFragment : SlidingPaneChildFragment() { (requireActivity() as MainActivity).showRedToast(message, R.drawable.x) } } else { + if (viewModel.isEndToEndEncrypted.value == true) { + Log.i("$TAG Conversation is end-to-end encrypted, showing toast") + val message = getString(R.string.toast_end_to_end_encrypted_conversation) + val icon = R.drawable.media_encryption_srtp + (requireActivity() as MainActivity).showBlueToast(message, icon) + } + sendMessageViewModel.configureChatRoom(viewModel.chatRoom) // Wait for chat room to be ready before trying to forward a message in it diff --git a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationViewModel.kt b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationViewModel.kt index 2d9ef6efd..e949a50ab 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationViewModel.kt @@ -56,6 +56,8 @@ class ConversationViewModel @UiThread constructor() : ViewModel() { val events = MutableLiveData>() + var isEndToEndEncrypted = MutableLiveData() + val isGroup = MutableLiveData() val subject = MutableLiveData() @@ -453,6 +455,9 @@ class ConversationViewModel @UiThread constructor() : ViewModel() { if (readOnly) { Log.w("$TAG Conversation with subject [${chatRoom.subject}] is read only!") } + isEndToEndEncrypted.postValue( + chatRoom.hasCapability(ChatRoom.Capabilities.Encrypted.toInt()) + ) computeConversationInfo() diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fc7f8ec91..3e2f978c0 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -164,6 +164,10 @@ Text is waiting to be shared A message is waiting to be forwarded + Conversation is end-to-end encrypted + Call is being transferred to %s + Call has been transferred to %s + Call transfer to %s failed! Login Scan QR code @@ -509,9 +513,6 @@ Calls list Transfer call to %s is recording - Call is being transferred to %s - Call has been transferred to %s - Call transfer to %s failed! %s calls %s paused calls