mirror of
https://github.com/oxen-io/session-android.git
synced 2025-08-12 13:37:56 +00:00
Add follow setting button
This commit is contained in:
@@ -105,7 +105,7 @@ class SessionDialogBuilder(val context: Context) {
|
||||
|
||||
fun destructiveButton(
|
||||
@StringRes text: Int,
|
||||
@StringRes contentDescription: Int,
|
||||
@StringRes contentDescription: Int = text,
|
||||
listener: () -> Unit = {}
|
||||
) = button(
|
||||
text,
|
||||
|
@@ -10,7 +10,13 @@ import androidx.core.view.isVisible
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import network.loki.messenger.R
|
||||
import network.loki.messenger.databinding.ViewControlMessageBinding
|
||||
import org.session.libsession.messaging.messages.ExpirationConfiguration
|
||||
import org.session.libsession.utilities.ExpirationUtil.getExpirationDisplayValue
|
||||
import org.session.libsession.utilities.getExpirationTypeDisplayValue
|
||||
import org.thoughtcrime.securesms.database.model.MessageRecord
|
||||
import org.thoughtcrime.securesms.showSessionDialog
|
||||
import kotlin.time.Duration.Companion.milliseconds
|
||||
import kotlin.time.Duration.Companion.seconds
|
||||
|
||||
class ControlMessageView : LinearLayout {
|
||||
|
||||
@@ -31,15 +37,33 @@ class ControlMessageView : LinearLayout {
|
||||
binding.expirationTimerView.isGone = true
|
||||
binding.followSetting.isGone = true
|
||||
var messageBody: CharSequence = message.getDisplayBody(context)
|
||||
binding.root.contentDescription= null
|
||||
binding.root.contentDescription = null
|
||||
when {
|
||||
message.isExpirationTimerUpdate -> {
|
||||
binding.expirationTimerView.apply {
|
||||
isVisible = true
|
||||
setExpirationTime(message.expireStarted, message.expiresIn)
|
||||
binding.apply {
|
||||
expirationTimerView.isVisible = true
|
||||
expirationTimerView.setExpirationTime(message.expireStarted, message.expiresIn)
|
||||
followSetting.isVisible = ExpirationConfiguration.isNewConfigEnabled && !message.isOutgoing
|
||||
followSetting.setOnClickListener {
|
||||
context.showSessionDialog {
|
||||
val isOff = message.expiresIn == 0L
|
||||
title(R.string.dialog_disappearing_messages_follow_setting_title)
|
||||
if (isOff) {
|
||||
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.expireStarted == message.timestamp)
|
||||
)
|
||||
)
|
||||
}
|
||||
destructiveButton(if (isOff) R.string.dialog_disappearing_messages_follow_setting_confirm else R.string.dialog_disappearing_messages_follow_setting_set) { }
|
||||
cancelButton()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
binding.followSetting.isGone = message.isOutgoing
|
||||
}
|
||||
message.isMediaSavedNotification -> {
|
||||
binding.iconImageView.apply {
|
||||
|
@@ -25,6 +25,7 @@ import com.google.android.mms.pdu_alt.PduHeaders
|
||||
import org.json.JSONArray
|
||||
import org.json.JSONException
|
||||
import org.json.JSONObject
|
||||
import org.session.libsession.messaging.messages.ExpirationConfiguration
|
||||
import org.session.libsession.messaging.messages.signal.IncomingMediaMessage
|
||||
import org.session.libsession.messaging.messages.signal.OutgoingGroupMediaMessage
|
||||
import org.session.libsession.messaging.messages.signal.OutgoingMediaMessage
|
||||
@@ -1170,7 +1171,7 @@ class MmsDatabase(context: Context, databaseHelper: SQLCipherOpenHelper) : Messa
|
||||
* @param outgoing if true only delete outgoing messages, if false only delete incoming messages, if null delete both.
|
||||
*/
|
||||
private fun deleteExpirationTimerMessages(threadId: Long, outgoing: Boolean? = null) {
|
||||
val outgoingClause = outgoing?.let {
|
||||
val outgoingClause = outgoing?.takeIf { ExpirationConfiguration.isNewConfigEnabled }?.let {
|
||||
val comparison = if (it) "IN" else "NOT IN"
|
||||
" AND $MESSAGE_BOX & ${MmsSmsColumns.Types.BASE_TYPE_MASK} $comparison (${MmsSmsColumns.Types.OUTGOING_MESSAGE_TYPES.joinToString()})"
|
||||
} ?: ""
|
||||
|
@@ -116,7 +116,7 @@ public abstract class MessageRecord extends DisplayRecord {
|
||||
return new SpannableString(UpdateMessageBuilder.INSTANCE.buildGroupUpdateMessage(context, updateMessageData, getIndividualRecipient().getAddress().serialize(), isOutgoing()));
|
||||
} else if (isExpirationTimerUpdate()) {
|
||||
int seconds = (int) (getExpiresIn() / 1000);
|
||||
return new SpannableString(UpdateMessageBuilder.INSTANCE.buildExpirationTimerMessage(context, seconds, getIndividualRecipient().getAddress().serialize(), getThreadId(), isOutgoing()));
|
||||
return new SpannableString(UpdateMessageBuilder.INSTANCE.buildExpirationTimerMessage(context, seconds, getIndividualRecipient().getAddress().serialize(), getThreadId(), isOutgoing(), getTimestamp(), expireStarted));
|
||||
} else if (isDataExtractionNotification()) {
|
||||
if (isScreenshotNotification()) return new SpannableString((UpdateMessageBuilder.INSTANCE.buildDataExtractionMessage(context, DataExtractionNotificationInfoMessage.Kind.SCREENSHOT, getIndividualRecipient().getAddress().serialize())));
|
||||
else if (isMediaSavedNotification()) return new SpannableString((UpdateMessageBuilder.INSTANCE.buildDataExtractionMessage(context, DataExtractionNotificationInfoMessage.Kind.MEDIA_SAVED, getIndividualRecipient().getAddress().serialize())));
|
||||
|
@@ -906,6 +906,11 @@
|
||||
<string name="dialog_join_open_group_explanation">Are you sure you want to join the %s open group?</string>
|
||||
<string name="dialog_open_url_title">Open URL?</string>
|
||||
<string name="dialog_open_url_explanation">Are you sure you want to open %s?</string>
|
||||
<string name="dialog_disappearing_messages_follow_setting_title">Follow Setting</string>
|
||||
<string name="dialog_disappearing_messages_follow_setting_off_body">Messages you send will no longer disappear. Are you sure you want to turn off disappearing messages?</string>
|
||||
<string name="dialog_disappearing_messages_follow_setting_on_body">Set your messages to disappear %1$s after they have been %2$s?</string>
|
||||
<string name="dialog_disappearing_messages_follow_setting_set">Set</string>
|
||||
<string name="dialog_disappearing_messages_follow_setting_confirm">Confirm</string>
|
||||
<string name="open">Open</string>
|
||||
<string name="copy_url">Copy URL</string>
|
||||
<string name="dialog_link_preview_title">Enable Link Previews?</string>
|
||||
|
Reference in New Issue
Block a user