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" />
+