From a3b6f685c0ebd959af9a0c72d9410b624350e126 Mon Sep 17 00:00:00 2001 From: Andrew Date: Mon, 18 Dec 2023 09:40:06 +1030 Subject: [PATCH] Refactor follow setting dialog --- .../DisappearingMessages.kt | 33 ++++++++++++++++++- .../v2/messages/ControlMessageView.kt | 31 ++--------------- 2 files changed, 34 insertions(+), 30 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/disappearingmessages/DisappearingMessages.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/disappearingmessages/DisappearingMessages.kt index da0786906d..ed4fe5defd 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/disappearingmessages/DisappearingMessages.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/disappearingmessages/DisappearingMessages.kt @@ -2,6 +2,7 @@ package org.thoughtcrime.securesms.conversation.disappearingmessages import android.content.Context import dagger.hilt.android.qualifiers.ApplicationContext +import network.loki.messenger.R import network.loki.messenger.libsession_util.util.ExpiryMode import org.session.libsession.messaging.MessagingModuleConfiguration import org.session.libsession.messaging.messages.ExpirationConfiguration @@ -9,11 +10,15 @@ import org.session.libsession.messaging.messages.control.ExpirationTimerUpdate import org.session.libsession.messaging.sending_receiving.MessageSender import org.session.libsession.snode.SnodeAPI import org.session.libsession.utilities.Address -import org.session.libsession.utilities.SSKEnvironment +import org.session.libsession.utilities.ExpirationUtil import org.session.libsession.utilities.SSKEnvironment.MessageExpirationManagerProtocol import org.session.libsession.utilities.TextSecurePreferences +import org.session.libsession.utilities.getExpirationTypeDisplayValue +import org.thoughtcrime.securesms.database.model.MessageRecord +import org.thoughtcrime.securesms.showSessionDialog import org.thoughtcrime.securesms.util.ConfigurationMessageUtilities import javax.inject.Inject +import kotlin.time.Duration.Companion.milliseconds class DisappearingMessages @Inject constructor( @ApplicationContext private val context: Context, @@ -35,4 +40,30 @@ class DisappearingMessages @Inject constructor( MessageSender.send(message, address) ConfigurationMessageUtilities.forceSyncConfigurationNowIfNeeded(context) } + + fun showFollowSettingDialog(context: Context, message: MessageRecord) = context.showSessionDialog { + title(R.string.dialog_disappearing_messages_follow_setting_title) + if (message.expiresIn == 0L) { + text(R.string.dialog_disappearing_messages_follow_setting_off_body) + } else { + text( + context.getString( + R.string.dialog_disappearing_messages_follow_setting_on_body, + ExpirationUtil.getExpirationDisplayValue( + context, + message.expiresIn.milliseconds + ), + context.getExpirationTypeDisplayValue(message.isNotDisappearAfterRead) + ) + ) + } + destructiveButton(if (message.expiresIn == 0L) R.string.dialog_disappearing_messages_follow_setting_confirm else R.string.dialog_disappearing_messages_follow_setting_set) { + set(message.threadId, message.recipient.address, message.expiryMode) + } + cancelButton() + } } + +val MessageRecord.expiryMode get() = if (expiresIn <= 0) ExpiryMode.NONE + else if (expireStarted == timestamp) ExpiryMode.AfterSend(expiresIn / 1000) + else ExpiryMode.AfterRead(expiresIn / 1000) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/messages/ControlMessageView.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/messages/ControlMessageView.kt index 473c1c497b..97b1ef9a05 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/messages/ControlMessageView.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/messages/ControlMessageView.kt @@ -14,18 +14,10 @@ import network.loki.messenger.databinding.ViewControlMessageBinding import network.loki.messenger.libsession_util.util.ExpiryMode import org.session.libsession.messaging.MessagingModuleConfiguration import org.session.libsession.messaging.messages.ExpirationConfiguration -import org.session.libsession.utilities.ExpirationUtil.getExpirationDisplayValue -import org.session.libsession.utilities.getExpirationTypeDisplayValue import org.thoughtcrime.securesms.conversation.disappearingmessages.DisappearingMessages +import org.thoughtcrime.securesms.conversation.disappearingmessages.expiryMode import org.thoughtcrime.securesms.database.model.MessageRecord -import org.thoughtcrime.securesms.showSessionDialog import javax.inject.Inject -import kotlin.time.Duration.Companion.milliseconds -import kotlin.time.Duration.Companion.seconds - -private val MessageRecord.expiryMode get() = if (expiresIn <= 0) ExpiryMode.NONE - else if (expireStarted == timestamp) ExpiryMode.AfterSend(expiresIn / 1000) - else ExpiryMode.AfterRead(expiresIn / 1000) @AndroidEntryPoint class ControlMessageView : LinearLayout { @@ -62,26 +54,7 @@ class ControlMessageView : LinearLayout { && !message.isOutgoing && message.expiryMode != (MessagingModuleConfiguration.shared.storage.getExpirationConfiguration(message.threadId)?.expiryMode ?: ExpiryMode.NONE) - followSetting.setOnClickListener { - context.showSessionDialog { - title(R.string.dialog_disappearing_messages_follow_setting_title) - if (message.expiresIn == 0L) { - text(R.string.dialog_disappearing_messages_follow_setting_off_body) - } else { - text( - context.getString( - R.string.dialog_disappearing_messages_follow_setting_on_body, - getExpirationDisplayValue(context, message.expiresIn.milliseconds), - context.getExpirationTypeDisplayValue(message.isNotDisappearAfterRead) - ) - ) - } - destructiveButton(if (message.expiresIn == 0L) R.string.dialog_disappearing_messages_follow_setting_confirm else R.string.dialog_disappearing_messages_follow_setting_set) { - disappearingMessages.set(message.threadId, message.recipient.address, message.expiryMode) - } - cancelButton() - } - } + followSetting.setOnClickListener { disappearingMessages.showFollowSettingDialog(context, message) } } } message.isMediaSavedNotification -> {