mirror of
https://github.com/oxen-io/session-android.git
synced 2025-08-12 16:37:41 +00:00
fix: compile issues and dependencies resolved to use shared configs throughout apps
This commit is contained in:
@@ -16,11 +16,11 @@ import dagger.hilt.android.AndroidEntryPoint
|
||||
import network.loki.messenger.R
|
||||
import network.loki.messenger.databinding.ViewConversationActionBarBinding
|
||||
import network.loki.messenger.databinding.ViewConversationSettingBinding
|
||||
import network.loki.messenger.libsession_util.util.ExpiryMode
|
||||
import org.session.libsession.messaging.messages.ExpirationConfiguration
|
||||
import org.session.libsession.messaging.open_groups.OpenGroup
|
||||
import org.session.libsession.utilities.ExpirationUtil
|
||||
import org.session.libsession.utilities.recipients.Recipient
|
||||
import org.session.libsignal.protos.SignalServiceProtos
|
||||
import org.thoughtcrime.securesms.conversation.v2.utilities.MentionManagerUtilities
|
||||
import org.thoughtcrime.securesms.database.GroupDatabase
|
||||
import org.thoughtcrime.securesms.database.LokiAPIDatabase
|
||||
@@ -111,14 +111,14 @@ class ConversationActionBarView : LinearLayout {
|
||||
fun updateSubtitle(recipient: Recipient, openGroup: OpenGroup? = null, config: ExpirationConfiguration? = null) {
|
||||
val settings = mutableListOf<ConversationSetting>()
|
||||
if (config?.isEnabled == true) {
|
||||
val prefix = if (config.expirationType == SignalServiceProtos.Content.ExpirationType.DELETE_AFTER_READ) {
|
||||
val prefix = if (config.expiryMode is ExpiryMode.AfterRead) {
|
||||
context.getString(R.string.expiration_type_disappear_after_read)
|
||||
} else {
|
||||
context.getString(R.string.expiration_type_disappear_after_send)
|
||||
}
|
||||
settings.add(
|
||||
ConversationSetting(
|
||||
"$prefix - ${ExpirationUtil.getExpirationAbbreviatedDisplayValue(context, config.durationSeconds)}" ,
|
||||
"$prefix - ${ExpirationUtil.getExpirationAbbreviatedDisplayValue(context, config.expiryMode?.expirySeconds!!)}" ,
|
||||
ConversationSettingType.EXPIRATION,
|
||||
R.drawable.ic_timer
|
||||
)
|
||||
|
@@ -12,18 +12,22 @@ import kotlinx.coroutines.flow.mapLatest
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import kotlinx.coroutines.flow.update
|
||||
import kotlinx.coroutines.launch
|
||||
import network.loki.messenger.libsession_util.util.ExpiryMode
|
||||
import org.session.libsession.messaging.messages.ExpirationConfiguration
|
||||
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.SSKEnvironment.MessageExpirationManagerProtocol
|
||||
import org.session.libsession.utilities.TextSecurePreferences
|
||||
import org.session.libsession.utilities.expiryType
|
||||
import org.session.libsession.utilities.recipients.Recipient
|
||||
import org.session.libsession.utilities.typeRadioIndex
|
||||
import org.session.libsignal.protos.SignalServiceProtos.Content.ExpirationType
|
||||
import org.thoughtcrime.securesms.database.GroupDatabase
|
||||
import org.thoughtcrime.securesms.database.Storage
|
||||
import org.thoughtcrime.securesms.database.ThreadDatabase
|
||||
import org.thoughtcrime.securesms.preferences.RadioOption
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
class ExpirationSettingsViewModel(
|
||||
private val threadId: Long,
|
||||
@@ -56,6 +60,7 @@ class ExpirationSettingsViewModel(
|
||||
init {
|
||||
viewModelScope.launch {
|
||||
expirationConfig = storage.getExpirationConfiguration(threadId)
|
||||
val expirationType = expirationConfig?.expiryMode
|
||||
val recipient = threadDb.getRecipientForThreadId(threadId)
|
||||
_recipient.value = recipient
|
||||
val groupInfo = if (recipient?.isClosedGroupRecipient == true) {
|
||||
@@ -71,14 +76,14 @@ class ExpirationSettingsViewModel(
|
||||
if (recipient?.isLocalNumber == true || recipient?.isClosedGroupRecipient == true) {
|
||||
ExpirationType.DELETE_AFTER_SEND.number
|
||||
} else {
|
||||
expirationConfig?.typeRadioIndex() ?: -1
|
||||
expirationType?.typeRadioIndex() ?: -1
|
||||
}
|
||||
} else {
|
||||
expirationConfig?.expirationTypeValue?.let { 0 /* Legacy */ } ?: -1
|
||||
if (expirationType != null) 0 else -1
|
||||
}
|
||||
_selectedExpirationTimer.value = when(expirationConfig?.expirationType) {
|
||||
null, ExpirationType.DELETE_AFTER_SEND -> afterSendOptions.find { it.value.toIntOrNull() == expirationConfig?.durationSeconds }
|
||||
ExpirationType.DELETE_AFTER_READ -> afterReadOptions.find { it.value.toIntOrNull() == expirationConfig?.durationSeconds }
|
||||
_selectedExpirationTimer.value = when(expirationType) {
|
||||
is ExpiryMode.AfterSend -> afterSendOptions.find { it.value.toIntOrNull() == expirationType.expirySeconds.toInt() }
|
||||
is ExpiryMode.AfterRead -> afterReadOptions.find { it.value.toIntOrNull() == expirationType.expirySeconds.toInt() }
|
||||
else -> afterSendOptions.firstOrNull()
|
||||
}
|
||||
}
|
||||
@@ -106,15 +111,22 @@ class ExpirationSettingsViewModel(
|
||||
_selectedExpirationTimer.value = option
|
||||
}
|
||||
|
||||
private fun KClass<out ExpiryMode>?.withTime(expirationTimer: Long) = when(this) {
|
||||
ExpiryMode.AfterRead::class -> ExpiryMode.AfterRead(expirationTimer)
|
||||
ExpiryMode.AfterSend::class -> ExpiryMode.AfterSend(expirationTimer)
|
||||
else -> ExpiryMode.NONE
|
||||
}
|
||||
|
||||
fun onSetClick() = viewModelScope.launch {
|
||||
var typeValue = _selectedExpirationType.value
|
||||
if (typeValue == 0) {
|
||||
typeValue = ExpirationType.DELETE_AFTER_READ_VALUE
|
||||
}
|
||||
val expiryType = typeValue.expiryType()
|
||||
val expirationTimer = _selectedExpirationTimer.value?.value?.toIntOrNull() ?: 0
|
||||
val expiryTypeClass = typeValue.expiryType()
|
||||
val expiryMode = expiryTypeClass?.withTime(expirationTimer.toLong())
|
||||
val address = recipient.value?.address
|
||||
if (address == null || (expirationConfig?.typeRadioIndex() == typeValue && expirationConfig?.durationSeconds == expirationTimer)) {
|
||||
if (address == null || (expirationConfig?.expiryMode?.javaClass == expiryTypeClass && expirationConfig?.expiryMode?.expirySeconds?.toInt() == expirationTimer)) {
|
||||
_uiState.update {
|
||||
it.copy(settingsSaved = false)
|
||||
}
|
||||
@@ -122,13 +134,13 @@ class ExpirationSettingsViewModel(
|
||||
}
|
||||
|
||||
val expiryChangeTimestampMs = SnodeAPI.nowWithOffset
|
||||
storage.setExpirationConfiguration(ExpirationConfiguration(threadId, expirationTimer, expiryType, expiryChangeTimestampMs))
|
||||
storage.setExpirationConfiguration(ExpirationConfiguration(threadId, expiryMode, expiryChangeTimestampMs))
|
||||
|
||||
val message = ExpirationTimerUpdate(expirationTimer)
|
||||
message.sender = textSecurePreferences.getLocalNumber()
|
||||
message.recipient = address.serialize()
|
||||
message.sentTimestamp = expiryChangeTimestampMs
|
||||
messageExpirationManager.setExpirationTimer(message, expiryType)
|
||||
messageExpirationManager.setExpirationTimer(message, expiryMode)
|
||||
|
||||
MessageSender.send(message, address)
|
||||
_uiState.update {
|
||||
@@ -177,18 +189,3 @@ data class ExpirationSettingsUiState(
|
||||
val showExpirationTypeSelector: Boolean = false,
|
||||
val settingsSaved: Boolean? = null
|
||||
)
|
||||
|
||||
fun ExpirationConfiguration?.typeRadioIndex(): Int {
|
||||
if (this == null || expirationType == null) return -1
|
||||
return when {
|
||||
expirationType == ExpirationType.DELETE_AFTER_READ -> ExpirationType.DELETE_AFTER_READ_VALUE
|
||||
else -> -1
|
||||
}
|
||||
|
||||
return if (expirationType == )
|
||||
}
|
||||
|
||||
fun Int.expiryType(): ExpirationType? {
|
||||
if (this == -1) return null
|
||||
TODO()
|
||||
}
|
@@ -62,6 +62,7 @@ import kotlinx.coroutines.withContext
|
||||
import network.loki.messenger.R
|
||||
import network.loki.messenger.databinding.ActivityConversationV2Binding
|
||||
import network.loki.messenger.databinding.ViewVisibleMessageBinding
|
||||
import network.loki.messenger.libsession_util.util.ExpiryMode
|
||||
import nl.komponents.kovenant.ui.successUi
|
||||
import org.session.libsession.messaging.MessagingModuleConfiguration
|
||||
import org.session.libsession.messaging.contacts.Contact
|
||||
@@ -94,7 +95,6 @@ import org.session.libsession.utilities.recipients.Recipient
|
||||
import org.session.libsession.utilities.recipients.Recipient.DisappearingState
|
||||
import org.session.libsession.utilities.recipients.RecipientModifiedListener
|
||||
import org.session.libsignal.crypto.MnemonicCodec
|
||||
import org.session.libsignal.protos.SignalServiceProtos.Content.ExpirationType
|
||||
import org.session.libsignal.utilities.IdPrefix
|
||||
import org.session.libsignal.utilities.ListenableFuture
|
||||
import org.session.libsignal.utilities.Log
|
||||
@@ -1574,8 +1574,8 @@ class ConversationActivityV2 : PassphraseRequiredActionBarActivity(), InputBarDe
|
||||
val message = VisibleMessage()
|
||||
message.sentTimestamp = sentTimestamp
|
||||
message.text = text
|
||||
val expiresInMillis = (viewModel.expirationConfiguration?.durationSeconds ?: 0) * 1000L
|
||||
val expireStartedAt = if (viewModel.expirationConfiguration?.expirationType == ExpirationType.DELETE_AFTER_SEND) {
|
||||
val expiresInMillis = (viewModel.expirationConfiguration?.expiryMode?.expirySeconds ?: 0) * 1000L
|
||||
val expireStartedAt = if (viewModel.expirationConfiguration?.expiryMode is ExpiryMode.AfterSend) {
|
||||
message.sentTimestamp!!
|
||||
} else 0
|
||||
val outgoingTextMessage = OutgoingTextMessage.from(message, recipient, expiresInMillis, expireStartedAt)
|
||||
@@ -1617,8 +1617,8 @@ class ConversationActivityV2 : PassphraseRequiredActionBarActivity(), InputBarDe
|
||||
else it.individualRecipient.address
|
||||
quote?.copy(author = sender)
|
||||
}
|
||||
val expiresInMs = (viewModel.expirationConfiguration?.durationSeconds ?: 0) * 1000L
|
||||
val expireStartedAtMs = if (viewModel.expirationConfiguration?.expirationType == ExpirationType.DELETE_AFTER_SEND) {
|
||||
val expiresInMs = (viewModel.expirationConfiguration?.expiryMode?.expirySeconds ?: 0) * 1000L
|
||||
val expireStartedAtMs = if (viewModel.expirationConfiguration?.expiryMode is ExpiryMode.AfterSend) {
|
||||
sentTimestamp
|
||||
} else 0
|
||||
val outgoingTextMessage = OutgoingMediaMessage.from(message, recipient, attachments, localQuote, linkPreview, expiresInMs, expireStartedAtMs)
|
||||
|
@@ -72,7 +72,6 @@ import org.session.libsignal.crypto.ecc.DjbECPublicKey
|
||||
import org.session.libsignal.crypto.ecc.ECKeyPair
|
||||
import org.session.libsignal.messages.SignalServiceAttachmentPointer
|
||||
import org.session.libsignal.messages.SignalServiceGroup
|
||||
import org.session.libsignal.protos.SignalServiceProtos.Content.ExpirationType
|
||||
import org.session.libsignal.utilities.Base64
|
||||
import org.session.libsignal.utilities.Hex
|
||||
import org.session.libsignal.utilities.IdPrefix
|
||||
@@ -320,8 +319,9 @@ open class Storage(context: Context, helper: SQLCipherOpenHelper, private val co
|
||||
message.threadID = getOrCreateThreadIdFor(targetAddress)
|
||||
}
|
||||
val expirationConfig = getExpirationConfiguration(message.threadID ?: -1)
|
||||
val expiresInMillis = (expirationConfig?.durationSeconds ?: 0) * 1000L
|
||||
val expireStartedAt = if (expirationConfig?.expirationType == ExpirationType.DELETE_AFTER_SEND) message.sentTimestamp!! else 0
|
||||
val expiryMode = expirationConfig?.expiryMode
|
||||
val expiresInMillis = (expiryMode?.expirySeconds ?: 0) * 1000L
|
||||
val expireStartedAt = if (expiryMode is ExpiryMode.AfterSend) message.sentTimestamp!! else 0
|
||||
if (message.isMediaMessage() || attachments.isNotEmpty()) {
|
||||
val quote: Optional<QuoteModel> = if (quotes != null) Optional.of(quotes) else Optional.absent()
|
||||
val linkPreviews: Optional<List<LinkPreview>> = if (linkPreview.isEmpty()) Optional.absent() else Optional.of(linkPreview.mapNotNull { it!! })
|
||||
@@ -371,7 +371,7 @@ open class Storage(context: Context, helper: SQLCipherOpenHelper, private val co
|
||||
DatabaseComponent.get(context).lokiMessageDatabase().setMessageServerHash(id, serverHash)
|
||||
}
|
||||
}
|
||||
if (expirationConfig?.expirationType == ExpirationType.DELETE_AFTER_SEND) {
|
||||
if (expiryMode is ExpiryMode.AfterSend) {
|
||||
SSKEnvironment.shared.messageExpirationManager.startAnyExpiration(message.sentTimestamp!!, message.sender!!, expireStartedAt)
|
||||
}
|
||||
return messageID
|
||||
@@ -878,8 +878,6 @@ open class Storage(context: Context, helper: SQLCipherOpenHelper, private val co
|
||||
override fun updateGroupConfig(groupPublicKey: String) {
|
||||
val groupID = GroupUtil.doubleEncodeGroupID(groupPublicKey)
|
||||
val groupAddress = fromSerialized(groupID)
|
||||
// TODO: probably add a check in here for isActive?
|
||||
// TODO: also check if local user is a member / maybe run delete otherwise?
|
||||
val existingGroup = getGroup(groupID)
|
||||
?: return Log.w("Loki-DBG", "No existing group for ${groupPublicKey.take(4)}} when updating group config")
|
||||
val userGroups = configFactory.userGroups ?: return
|
||||
@@ -936,14 +934,15 @@ open class Storage(context: Context, helper: SQLCipherOpenHelper, private val co
|
||||
val recipient = Recipient.from(context, fromSerialized(groupID), false)
|
||||
val threadId = DatabaseComponent.get(context).threadDatabase().getOrCreateThreadIdFor(recipient)
|
||||
val expirationConfig = getExpirationConfiguration(threadId)
|
||||
val expiresInMillis = (expirationConfig?.durationSeconds ?: 0) * 100L
|
||||
val expireStartedAt = if (expirationConfig?.expirationType == ExpirationType.DELETE_AFTER_SEND) sentTimestamp else 0
|
||||
val expiryMode = expirationConfig?.expiryMode
|
||||
val expiresInMillis = (expiryMode?.expirySeconds ?: 0) * 1000L
|
||||
val expireStartedAt = if (expiryMode is ExpiryMode.AfterSend) sentTimestamp else 0
|
||||
val m = IncomingTextMessage(fromSerialized(senderPublicKey), 1, sentTimestamp, "", Optional.of(group), expiresInMillis, expireStartedAt, true, false)
|
||||
val updateData = UpdateMessageData.buildGroupUpdate(type, name, members)?.toJSON()
|
||||
val infoMessage = IncomingGroupMessage(m, groupID, updateData, true)
|
||||
val smsDB = DatabaseComponent.get(context).smsDatabase()
|
||||
smsDB.insertMessageInbox(infoMessage, true)
|
||||
if (expirationConfig?.expirationType == ExpirationType.DELETE_AFTER_SEND) {
|
||||
if (expiryMode is ExpiryMode.AfterSend) {
|
||||
SSKEnvironment.shared.messageExpirationManager.startAnyExpiration(sentTimestamp, senderPublicKey, expireStartedAt)
|
||||
}
|
||||
}
|
||||
@@ -953,8 +952,9 @@ open class Storage(context: Context, helper: SQLCipherOpenHelper, private val co
|
||||
val recipient = Recipient.from(context, fromSerialized(groupID), false)
|
||||
val threadId = DatabaseComponent.get(context).threadDatabase().getOrCreateThreadIdFor(recipient)
|
||||
val expirationConfig = getExpirationConfiguration(threadId)
|
||||
val expiresInMillis = (expirationConfig?.durationSeconds ?: 0) * 100L
|
||||
val expireStartedAt = if (expirationConfig?.expirationType == ExpirationType.DELETE_AFTER_SEND) sentTimestamp else 0
|
||||
val expiryMode = expirationConfig?.expiryMode
|
||||
val expiresInMillis = (expiryMode?.expirySeconds ?: 0) * 1000L
|
||||
val expireStartedAt = if (expiryMode is ExpiryMode.AfterSend) sentTimestamp else 0
|
||||
val updateData = UpdateMessageData.buildGroupUpdate(type, name, members)?.toJSON() ?: ""
|
||||
val infoMessage = OutgoingGroupMediaMessage(recipient, updateData, groupID, null, sentTimestamp, expiresInMillis, expireStartedAt, true, null, listOf(), listOf())
|
||||
val mmsDB = DatabaseComponent.get(context).mmsDatabase()
|
||||
@@ -962,7 +962,7 @@ open class Storage(context: Context, helper: SQLCipherOpenHelper, private val co
|
||||
if (mmsSmsDB.getMessageFor(sentTimestamp, userPublicKey) != null) return
|
||||
val infoMessageID = mmsDB.insertMessageOutbox(infoMessage, threadID, false, null, runThreadUpdate = true)
|
||||
mmsDB.markAsSent(infoMessageID, true)
|
||||
if (expirationConfig?.expirationType == ExpirationType.DELETE_AFTER_SEND) {
|
||||
if (expiryMode is ExpiryMode.AfterSend) {
|
||||
SSKEnvironment.shared.messageExpirationManager.startAnyExpiration(sentTimestamp, userPublicKey!!, expireStartedAt)
|
||||
}
|
||||
}
|
||||
@@ -1021,7 +1021,7 @@ open class Storage(context: Context, helper: SQLCipherOpenHelper, private val co
|
||||
val recipient = Recipient.from(context, fromSerialized(address), false)
|
||||
val threadId = DatabaseComponent.get(context).threadDatabase().getOrCreateThreadIdFor(recipient)
|
||||
DatabaseComponent.get(context).expirationConfigurationDatabase().setExpirationConfiguration(
|
||||
ExpirationConfiguration(threadId, duration, ExpirationType.DELETE_AFTER_SEND.number, System.currentTimeMillis())
|
||||
ExpirationConfiguration(threadId, ExpiryMode.AfterSend(duration.toLong()), SnodeAPI.nowWithOffset)
|
||||
)
|
||||
if (recipient.isContactRecipient && !recipient.isLocalNumber) {
|
||||
configFactory.contacts?.upsertContact(address) {
|
||||
@@ -1364,8 +1364,9 @@ open class Storage(context: Context, helper: SQLCipherOpenHelper, private val co
|
||||
if (recipient.isBlocked) return
|
||||
val threadId = getThreadId(recipient) ?: return
|
||||
val expirationConfig = getExpirationConfiguration(threadId)
|
||||
val expiresInMillis = (expirationConfig?.durationSeconds ?: 0) * 100L
|
||||
val expireStartedAt = if (expirationConfig?.expirationType == ExpirationType.DELETE_AFTER_SEND) sentTimestamp else 0
|
||||
val expiryMode = expirationConfig?.expiryMode
|
||||
val expiresInMillis = (expiryMode?.expirySeconds ?: 0) * 1000L
|
||||
val expireStartedAt = if (expiryMode is ExpiryMode.AfterSend) sentTimestamp else 0
|
||||
val mediaMessage = IncomingMediaMessage(
|
||||
address,
|
||||
sentTimestamp,
|
||||
@@ -1386,7 +1387,7 @@ open class Storage(context: Context, helper: SQLCipherOpenHelper, private val co
|
||||
)
|
||||
|
||||
database.insertSecureDecryptedMessageInbox(mediaMessage, threadId, runThreadUpdate = true)
|
||||
if (expirationConfig?.expirationType == ExpirationType.DELETE_AFTER_SEND) {
|
||||
if (expiryMode is ExpiryMode.AfterSend) {
|
||||
SSKEnvironment.shared.messageExpirationManager.startAnyExpiration(sentTimestamp, senderPublicKey, expireStartedAt)
|
||||
}
|
||||
}
|
||||
@@ -1470,8 +1471,9 @@ open class Storage(context: Context, helper: SQLCipherOpenHelper, private val co
|
||||
recipientDb.setApproved(sender, true)
|
||||
recipientDb.setApprovedMe(sender, true)
|
||||
val expirationConfig = getExpirationConfiguration(threadId)
|
||||
val expiresInMillis = (expirationConfig?.durationSeconds ?: 0) * 100L
|
||||
val expireStartedAt = if (expirationConfig?.expirationType == ExpirationType.DELETE_AFTER_SEND) {
|
||||
val expiryMode = expirationConfig?.expiryMode
|
||||
val expiresInMillis = (expiryMode?.expirySeconds ?: 0) * 1000L
|
||||
val expireStartedAt = if (expiryMode is ExpiryMode.AfterSend) {
|
||||
response.sentTimestamp!!
|
||||
} else 0
|
||||
val message = IncomingMediaMessage(
|
||||
@@ -1522,11 +1524,12 @@ open class Storage(context: Context, helper: SQLCipherOpenHelper, private val co
|
||||
val recipient = Recipient.from(context, address, false)
|
||||
val threadId = DatabaseComponent.get(context).threadDatabase().getOrCreateThreadIdFor(recipient)
|
||||
val expirationConfig = getExpirationConfiguration(threadId)
|
||||
val expiresInMillis = (expirationConfig?.durationSeconds ?: 0) * 100L
|
||||
val expireStartedAt = if (expirationConfig?.expirationType == ExpirationType.DELETE_AFTER_SEND) sentTimestamp else 0
|
||||
val expiryMode = expirationConfig?.expiryMode
|
||||
val expiresInMillis = (expiryMode?.expirySeconds ?: 0) * 1000L
|
||||
val expireStartedAt = if (expiryMode is ExpiryMode.AfterSend) sentTimestamp else 0
|
||||
val callMessage = IncomingTextMessage.fromCallInfo(callMessageType, address, Optional.absent(), sentTimestamp, expiresInMillis, expireStartedAt)
|
||||
database.insertCallMessage(callMessage)
|
||||
if (expirationConfig?.expirationType == ExpirationType.DELETE_AFTER_SEND) {
|
||||
if (expiryMode is ExpiryMode.AfterSend) {
|
||||
SSKEnvironment.shared.messageExpirationManager.startAnyExpiration(sentTimestamp, senderPublicKey, expireStartedAt)
|
||||
}
|
||||
}
|
||||
|
@@ -34,7 +34,6 @@ 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.recipients.Recipient;
|
||||
import org.session.libsignal.protos.SignalServiceProtos;
|
||||
import org.session.libsignal.utilities.Log;
|
||||
import org.thoughtcrime.securesms.ApplicationContext;
|
||||
import org.thoughtcrime.securesms.database.MessagingDatabase.MarkedMessageInfo;
|
||||
@@ -44,6 +43,8 @@ import org.thoughtcrime.securesms.mms.MmsException;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import network.loki.messenger.libsession_util.util.ExpiryMode;
|
||||
|
||||
/**
|
||||
* Get the response text from the Android Auto and sends an message as a reply
|
||||
*/
|
||||
@@ -87,9 +88,10 @@ public class AndroidAutoReplyReceiver extends BroadcastReceiver {
|
||||
message.setText(responseText.toString());
|
||||
message.setSentTimestamp(SnodeAPI.getNowWithOffset());
|
||||
MessageSender.send(message, recipient.getAddress());
|
||||
ExpirationConfiguration config = DatabaseComponent.get(context).expirationConfigurationDatabase().getExpirationConfiguration(threadId);
|
||||
long expiresInMillis = config == null ? 0 : config.getDurationSeconds() * 1000L;
|
||||
long expireStartedAt = config.getExpirationType() == SignalServiceProtos.Content.ExpirationType.DELETE_AFTER_SEND ? message.getSentTimestamp() : 0L;
|
||||
ExpirationConfiguration config = DatabaseComponent.get(context).storage().getExpirationConfiguration(threadId);
|
||||
ExpiryMode expiryMode = config == null ? null : config.getExpiryMode();
|
||||
long expiresInMillis = expiryMode == null ? 0 : expiryMode.getExpirySeconds() * 1000L;
|
||||
long expireStartedAt = expiryMode instanceof ExpiryMode.AfterSend ? message.getSentTimestamp() : 0L;
|
||||
|
||||
if (recipient.isGroupRecipient()) {
|
||||
Log.w("AndroidAutoReplyReceiver", "GroupRecipient, Sending media message");
|
||||
|
@@ -34,7 +34,6 @@ 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.recipients.Recipient;
|
||||
import org.session.libsignal.protos.SignalServiceProtos.Content.ExpirationType;
|
||||
import org.session.libsignal.utilities.Log;
|
||||
import org.thoughtcrime.securesms.ApplicationContext;
|
||||
import org.thoughtcrime.securesms.database.MessagingDatabase.MarkedMessageInfo;
|
||||
@@ -50,6 +49,7 @@ import java.util.List;
|
||||
import javax.inject.Inject;
|
||||
|
||||
import dagger.hilt.android.AndroidEntryPoint;
|
||||
import network.loki.messenger.libsession_util.util.ExpiryMode;
|
||||
|
||||
/**
|
||||
* Get the response text from the Wearable Device and sends an message as a reply
|
||||
@@ -97,9 +97,10 @@ public class RemoteReplyReceiver extends BroadcastReceiver {
|
||||
message.setSentTimestamp(SnodeAPI.getNowWithOffset());
|
||||
message.setText(responseText.toString());
|
||||
ExpirationConfiguration config = storage.getExpirationConfiguration(threadId);
|
||||
ExpiryMode expiryMode = config == null ? null : config.getExpiryMode();
|
||||
|
||||
long expiresInMillis = config == null ? 0 : config.getDurationSeconds() * 1000L;
|
||||
long expireStartedAt = config.getExpirationType() == ExpirationType.DELETE_AFTER_SEND ? message.getSentTimestamp() : 0L;
|
||||
long expiresInMillis = expiryMode == null ? 0 : expiryMode.getExpirySeconds() * 1000L;
|
||||
long expireStartedAt = expiryMode instanceof ExpiryMode.AfterSend ? message.getSentTimestamp() : 0L;
|
||||
switch (replyMethod) {
|
||||
case GroupMessage: {
|
||||
OutgoingMediaMessage reply = OutgoingMediaMessage.from(message, recipient, Collections.emptyList(), null, null, expiresInMillis, 0);
|
||||
|
@@ -1,5 +1,6 @@
|
||||
package org.thoughtcrime.securesms.repository
|
||||
|
||||
import network.loki.messenger.libsession_util.util.ExpiryMode
|
||||
import org.session.libsession.database.MessageDataProvider
|
||||
import org.session.libsession.messaging.messages.Destination
|
||||
import org.session.libsession.messaging.messages.control.MessageRequestResponse
|
||||
@@ -14,7 +15,6 @@ import org.session.libsession.utilities.Address
|
||||
import org.session.libsession.utilities.GroupUtil
|
||||
import org.session.libsession.utilities.TextSecurePreferences
|
||||
import org.session.libsession.utilities.recipients.Recipient
|
||||
import org.session.libsignal.protos.SignalServiceProtos.Content.ExpirationType
|
||||
import org.session.libsignal.utilities.toHexString
|
||||
import org.thoughtcrime.securesms.database.DraftDatabase
|
||||
import org.thoughtcrime.securesms.database.ExpirationConfigurationDatabase
|
||||
@@ -122,9 +122,9 @@ class DefaultConversationRepository @Inject constructor(
|
||||
openGroupInvitation.name = openGroup.name
|
||||
openGroupInvitation.url = openGroup.joinURL
|
||||
message.openGroupInvitation = openGroupInvitation
|
||||
val expirationConfig = configDb.getExpirationConfiguration(threadId)
|
||||
val expiresInMillis = (expirationConfig?.durationSeconds ?: 0) * 1000L
|
||||
val expireStartedAt = if (expirationConfig?.expirationType == ExpirationType.DELETE_AFTER_SEND) message.sentTimestamp!! else 0
|
||||
val expirationConfig = storage.getExpirationConfiguration(threadId)
|
||||
val expiresInMillis = (expirationConfig?.expiryMode?.expirySeconds ?: 0) * 1000L
|
||||
val expireStartedAt = if (expirationConfig?.expiryMode is ExpiryMode.AfterSend) message.sentTimestamp!! else 0
|
||||
val outgoingTextMessage = OutgoingTextMessage.fromOpenGroupInvitation(
|
||||
openGroupInvitation,
|
||||
contact,
|
||||
|
@@ -15,7 +15,6 @@ import org.session.libsession.utilities.SSKEnvironment;
|
||||
import org.session.libsession.utilities.TextSecurePreferences;
|
||||
import org.session.libsession.utilities.recipients.Recipient;
|
||||
import org.session.libsignal.messages.SignalServiceGroup;
|
||||
import org.session.libsignal.protos.SignalServiceProtos.Content.ExpirationType;
|
||||
import org.session.libsignal.utilities.Log;
|
||||
import org.session.libsignal.utilities.guava.Optional;
|
||||
import org.thoughtcrime.securesms.database.MmsDatabase;
|
||||
@@ -31,6 +30,8 @@ import java.util.TreeSet;
|
||||
import java.util.concurrent.Executor;
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
import network.loki.messenger.libsession_util.util.ExpiryMode;
|
||||
|
||||
public class ExpiringMessageManager implements SSKEnvironment.MessageExpirationManagerProtocol {
|
||||
|
||||
private static final String TAG = ExpiringMessageManager.class.getSimpleName();
|
||||
@@ -73,11 +74,12 @@ public class ExpiringMessageManager implements SSKEnvironment.MessageExpirationM
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setExpirationTimer(@NotNull ExpirationTimerUpdate message, int expiryType) {
|
||||
public void setExpirationTimer(@NotNull ExpirationTimerUpdate message, ExpiryMode expiryMode) {
|
||||
String userPublicKey = TextSecurePreferences.getLocalNumber(context);
|
||||
String senderPublicKey = message.getSender();
|
||||
long expireStartedAt = expiryType == ExpirationType.DELETE_AFTER_SEND_VALUE
|
||||
? message.getSentTimestamp() : 0;
|
||||
long sentTimestamp = message.getSentTimestamp() == null ? 0 : message.getSentTimestamp();
|
||||
long expireStartedAt = (expiryMode instanceof ExpiryMode.AfterSend)
|
||||
? sentTimestamp : 0;
|
||||
|
||||
// Notify the user
|
||||
if (senderPublicKey == null || userPublicKey.equals(senderPublicKey)) {
|
||||
@@ -86,7 +88,7 @@ public class ExpiringMessageManager implements SSKEnvironment.MessageExpirationM
|
||||
} else {
|
||||
insertIncomingExpirationTimerMessage(message, expireStartedAt);
|
||||
}
|
||||
if (expiryType == ExpirationType.DELETE_AFTER_SEND_VALUE && message.getSentTimestamp() != null && senderPublicKey != null) {
|
||||
if (expiryMode instanceof ExpiryMode.AfterSend && message.getSentTimestamp() != null && senderPublicKey != null) {
|
||||
startAnyExpiration(message.getSentTimestamp(), senderPublicKey, expireStartedAt);
|
||||
}
|
||||
}
|
||||
@@ -171,14 +173,15 @@ public class ExpiringMessageManager implements SSKEnvironment.MessageExpirationM
|
||||
MessageRecord messageRecord = mmsSmsDatabase.getMessageFor(timestamp, author);
|
||||
if (messageRecord != null) {
|
||||
boolean mms = messageRecord.isMms();
|
||||
ExpirationConfiguration config = DatabaseComponent.get(context).expirationConfigurationDatabase().getExpirationConfiguration(messageRecord.getThreadId());
|
||||
ExpirationConfiguration config = DatabaseComponent.get(context).storage().getExpirationConfiguration(messageRecord.getThreadId());
|
||||
if (config == null || !config.isEnabled()) return;
|
||||
ExpiryMode mode = config.getExpiryMode();
|
||||
if (mms) {
|
||||
mmsDatabase.markExpireStarted(messageRecord.getId(), expireStartedAt);
|
||||
} else {
|
||||
smsDatabase.markExpireStarted(messageRecord.getId(), expireStartedAt);
|
||||
}
|
||||
scheduleDeletion(messageRecord.getId(), mms, expireStartedAt, config.getDurationSeconds() * 1000L);
|
||||
scheduleDeletion(messageRecord.getId(), mms, expireStartedAt, (mode != null ? mode.getExpirySeconds() : 0) * 1000L);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user