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 eb9e3f812..462c488dc 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 @@ -675,6 +675,15 @@ class ConversationFragment : SlidingPaneChildFragment() { } } + sharedViewModel.newChatMessageEphemeralLifetimeToSet.observe(viewLifecycleOwner) { + it.consume { ephemeralLifetime -> + Log.i( + "$TAG Setting [$ephemeralLifetime] as new ephemeral lifetime for messages" + ) + viewModel.updateEphemeralLifetime(ephemeralLifetime) + } + } + binding.sendArea.messageToSend.setControlEnterListener(object : RichEditText.RichEditTextSendListener { override fun onControlEnterPressedAndReleased() { @@ -884,7 +893,15 @@ class ConversationFragment : SlidingPaneChildFragment() { } popupView.setConfigureEphemeralMessagesClickListener { - // TODO: go to configure ephemeral messages + if (findNavController().currentDestination?.id == R.id.conversationFragment) { + val currentValue = viewModel.ephemeralLifetime.value ?: 0L + Log.i("$TAG Going to ephemeral lifetime fragment (currently [$currentValue])") + val action = + ConversationFragmentDirections.actionConversationFragmentToConversationEphemeralLifetimeFragment( + currentValue + ) + findNavController().navigate(action) + } popupWindow.dismiss() } diff --git a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationInfoViewModel.kt b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationInfoViewModel.kt index c926717bd..029e6b85e 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationInfoViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationInfoViewModel.kt @@ -431,28 +431,10 @@ class ConversationInfoViewModel @UiThread constructor() : AbstractConversationVi @UiThread fun updateEphemeralLifetime(lifetime: Long) { coreContext.postOnCoreThread { - if (lifetime == 0L) { - if (chatRoom.isEphemeralEnabled) { - Log.i("$TAG Disabling ephemeral messages") - chatRoom.isEphemeralEnabled = false - } - } else { - if (!chatRoom.isEphemeralEnabled) { - Log.i("$TAG Enabling ephemeral messages") - chatRoom.isEphemeralEnabled = true - } - - if (chatRoom.ephemeralLifetime != lifetime) { - Log.i("$TAG Updating lifetime to [$lifetime]") - chatRoom.ephemeralLifetime = lifetime - } - } + LinphoneUtils.chatRoomConfigureEphemeralMessagesLifetime(chatRoom, lifetime) ephemeralLifetime.postValue( if (!chatRoom.isEphemeralEnabled) 0L else chatRoom.ephemeralLifetime ) - Log.i( - "$TAG Ephemeral messages are [${if (chatRoom.isEphemeralEnabled) "enabled" else "disabled"}], lifetime is [${chatRoom.ephemeralLifetime}]" - ) } } 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 f51d0f6bf..fa5a6e3de 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 @@ -424,6 +424,16 @@ class ConversationViewModel @UiThread constructor() : AbstractConversationViewMo } } + @UiThread + fun updateEphemeralLifetime(lifetime: Long) { + coreContext.postOnCoreThread { + LinphoneUtils.chatRoomConfigureEphemeralMessagesLifetime(chatRoom, lifetime) + ephemeralLifetime.postValue( + if (!chatRoom.isEphemeralEnabled) 0L else chatRoom.ephemeralLifetime + ) + } + } + @UiThread fun loadMoreData(totalItemsCount: Int) { coreContext.postOnCoreThread { diff --git a/app/src/main/java/org/linphone/utils/LinphoneUtils.kt b/app/src/main/java/org/linphone/utils/LinphoneUtils.kt index 901daddfc..81c0ad02d 100644 --- a/app/src/main/java/org/linphone/utils/LinphoneUtils.kt +++ b/app/src/main/java/org/linphone/utils/LinphoneUtils.kt @@ -353,6 +353,29 @@ class LinphoneUtils { return text } + @WorkerThread + fun chatRoomConfigureEphemeralMessagesLifetime(chatRoom: ChatRoom, lifetime: Long) { + if (lifetime == 0L) { + if (chatRoom.isEphemeralEnabled) { + Log.i("$TAG Disabling ephemeral messages") + chatRoom.isEphemeralEnabled = false + } + } else { + if (!chatRoom.isEphemeralEnabled) { + Log.i("$TAG Enabling ephemeral messages") + chatRoom.isEphemeralEnabled = true + } + + if (chatRoom.ephemeralLifetime != lifetime) { + Log.i("$TAG Updating lifetime to [$lifetime]") + chatRoom.ephemeralLifetime = lifetime + } + } + Log.i( + "$TAG Ephemeral messages are [${if (chatRoom.isEphemeralEnabled) "enabled" else "disabled"}], lifetime is [${chatRoom.ephemeralLifetime}]" + ) + } + @WorkerThread fun getAvatarModelForConferenceInfo(conferenceInfo: ConferenceInfo): ContactAvatarModel { val fakeFriend = coreContext.core.createFriend() diff --git a/app/src/main/res/navigation/chat_nav_graph.xml b/app/src/main/res/navigation/chat_nav_graph.xml index 767dac75c..c31d70c73 100644 --- a/app/src/main/res/navigation/chat_nav_graph.xml +++ b/app/src/main/res/navigation/chat_nav_graph.xml @@ -51,6 +51,14 @@ app:exitAnim="@anim/slide_out_left" app:popEnterAnim="@anim/slide_in_left" app:popExitAnim="@anim/slide_out_right" /> +