mirror of
https://github.com/oxen-io/session-android.git
synced 2025-02-18 23:38:27 +00:00
refactor: revert expiry to be recipient based instead of message based
This commit is contained in:
parent
ef3bef787d
commit
196a0205ae
@ -30,7 +30,6 @@ import org.session.libsignal.libsignal.util.guava.Optional
|
|||||||
import org.session.libsignal.service.api.messages.SignalServiceAttachmentPointer
|
import org.session.libsignal.service.api.messages.SignalServiceAttachmentPointer
|
||||||
import org.session.libsignal.service.api.messages.SignalServiceGroup
|
import org.session.libsignal.service.api.messages.SignalServiceGroup
|
||||||
import org.session.libsignal.service.internal.push.SignalServiceProtos
|
import org.session.libsignal.service.internal.push.SignalServiceProtos
|
||||||
import org.session.libsignal.utilities.logging.Log
|
|
||||||
import org.thoughtcrime.securesms.database.helpers.SQLCipherOpenHelper
|
import org.thoughtcrime.securesms.database.helpers.SQLCipherOpenHelper
|
||||||
import org.thoughtcrime.securesms.loki.database.LokiThreadDatabase
|
import org.thoughtcrime.securesms.loki.database.LokiThreadDatabase
|
||||||
import org.thoughtcrime.securesms.loki.protocol.SessionMetaProtocol
|
import org.thoughtcrime.securesms.loki.protocol.SessionMetaProtocol
|
||||||
@ -95,7 +94,6 @@ class Storage(context: Context, helper: SQLCipherOpenHelper) : Database(context,
|
|||||||
override fun persist(message: VisibleMessage, quotes: QuoteModel?, linkPreview: List<LinkPreview?>, groupPublicKey: String?, openGroupID: String?, attachments: List<Attachment>): Long? {
|
override fun persist(message: VisibleMessage, quotes: QuoteModel?, linkPreview: List<LinkPreview?>, groupPublicKey: String?, openGroupID: String?, attachments: List<Attachment>): Long? {
|
||||||
var messageID: Long? = null
|
var messageID: Long? = null
|
||||||
val senderAddress = Address.fromSerialized(message.sender!!)
|
val senderAddress = Address.fromSerialized(message.sender!!)
|
||||||
val senderRecipient = Recipient.from(context, senderAddress, false)
|
|
||||||
val group: Optional<SignalServiceGroup> = when {
|
val group: Optional<SignalServiceGroup> = when {
|
||||||
openGroupID != null -> Optional.of(SignalServiceGroup(openGroupID.toByteArray(), SignalServiceGroup.GroupType.PUBLIC_CHAT))
|
openGroupID != null -> Optional.of(SignalServiceGroup(openGroupID.toByteArray(), SignalServiceGroup.GroupType.PUBLIC_CHAT))
|
||||||
groupPublicKey != null -> {
|
groupPublicKey != null -> {
|
||||||
@ -107,23 +105,22 @@ class Storage(context: Context, helper: SQLCipherOpenHelper) : Database(context,
|
|||||||
val pointerAttachments = attachments.mapNotNull {
|
val pointerAttachments = attachments.mapNotNull {
|
||||||
it.toSignalAttachment()
|
it.toSignalAttachment()
|
||||||
}
|
}
|
||||||
|
val targetAddress = if (senderAddress.serialize() == getUserPublicKey() && message.syncTarget != null) {
|
||||||
|
Address.fromSerialized(message.syncTarget!!)
|
||||||
|
} else if (group.isPresent) {
|
||||||
|
Address.fromSerialized(GroupUtil.getEncodedId(group.get()))
|
||||||
|
} else {
|
||||||
|
senderAddress
|
||||||
|
}
|
||||||
|
val targetRecipient = Recipient.from(context, targetAddress, false)
|
||||||
|
|
||||||
if (message.isMediaMessage() || attachments.isNotEmpty()) {
|
if (message.isMediaMessage() || attachments.isNotEmpty()) {
|
||||||
val quote: Optional<QuoteModel> = if (quotes != null) Optional.of(quotes) else Optional.absent()
|
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!! })
|
val linkPreviews: Optional<List<LinkPreview>> = if (linkPreview.isEmpty()) Optional.absent() else Optional.of(linkPreview.mapNotNull { it!! })
|
||||||
val mmsDatabase = DatabaseFactory.getMmsDatabase(context)
|
val mmsDatabase = DatabaseFactory.getMmsDatabase(context)
|
||||||
val insertResult = if (message.sender == getUserPublicKey()) {
|
val insertResult = if (message.sender == getUserPublicKey()) {
|
||||||
val targetAddress = if (message.syncTarget != null) {
|
|
||||||
Address.fromSerialized(message.syncTarget!!)
|
|
||||||
} else {
|
|
||||||
if (group.isPresent) {
|
|
||||||
Address.fromSerialized(GroupUtil.getEncodedId(group.get()))
|
|
||||||
} else {
|
|
||||||
Log.d("Loki", "Cannot handle message from self.")
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
val mediaMessage = OutgoingMediaMessage.from(message, Recipient.from(context, targetAddress, false), pointerAttachments, quote.orNull(), linkPreviews.orNull().firstOrNull())
|
val mediaMessage = OutgoingMediaMessage.from(message, targetRecipient, pointerAttachments, quote.orNull(), linkPreviews.orNull().firstOrNull())
|
||||||
mmsDatabase.beginTransaction()
|
mmsDatabase.beginTransaction()
|
||||||
mmsDatabase.insertSecureDecryptedMessageOutbox(mediaMessage, message.threadID ?: -1, message.sentTimestamp!!)
|
mmsDatabase.insertSecureDecryptedMessageOutbox(mediaMessage, message.threadID ?: -1, message.sentTimestamp!!)
|
||||||
} else {
|
} else {
|
||||||
@ -131,7 +128,7 @@ class Storage(context: Context, helper: SQLCipherOpenHelper) : Database(context,
|
|||||||
val signalServiceAttachments = attachments.mapNotNull {
|
val signalServiceAttachments = attachments.mapNotNull {
|
||||||
it.toSignalPointer()
|
it.toSignalPointer()
|
||||||
}
|
}
|
||||||
val mediaMessage = IncomingMediaMessage.from(message, senderAddress, message.expiry * 1000L, group, signalServiceAttachments, quote, linkPreviews)
|
val mediaMessage = IncomingMediaMessage.from(message, senderAddress, targetRecipient.expireMessages * 1000L, group, signalServiceAttachments, quote, linkPreviews)
|
||||||
mmsDatabase.beginTransaction()
|
mmsDatabase.beginTransaction()
|
||||||
mmsDatabase.insertSecureDecryptedMessageInbox(mediaMessage, message.threadID ?: -1, message.sentTimestamp ?: 0)
|
mmsDatabase.insertSecureDecryptedMessageInbox(mediaMessage, message.threadID ?: -1, message.sentTimestamp ?: 0)
|
||||||
}
|
}
|
||||||
@ -143,20 +140,10 @@ class Storage(context: Context, helper: SQLCipherOpenHelper) : Database(context,
|
|||||||
} else {
|
} else {
|
||||||
val smsDatabase = DatabaseFactory.getSmsDatabase(context)
|
val smsDatabase = DatabaseFactory.getSmsDatabase(context)
|
||||||
val insertResult = if (message.sender == getUserPublicKey()) {
|
val insertResult = if (message.sender == getUserPublicKey()) {
|
||||||
val targetAddress = if (message.syncTarget != null) {
|
val textMessage = OutgoingTextMessage.from(message, targetRecipient)
|
||||||
Address.fromSerialized(message.syncTarget!!)
|
|
||||||
} else {
|
|
||||||
if (group.isPresent) {
|
|
||||||
Address.fromSerialized(GroupUtil.getEncodedId(group.get()))
|
|
||||||
} else {
|
|
||||||
Log.d("Loki", "Cannot handle message from self.")
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
val textMessage = OutgoingTextMessage.from(message, Recipient.from(context, targetAddress, false))
|
|
||||||
smsDatabase.insertMessageOutbox(message.threadID ?: -1, textMessage, message.sentTimestamp!!)
|
smsDatabase.insertMessageOutbox(message.threadID ?: -1, textMessage, message.sentTimestamp!!)
|
||||||
} else {
|
} else {
|
||||||
val textMessage = IncomingTextMessage.from(message, senderAddress, group, message.expiry * 1000L)
|
val textMessage = IncomingTextMessage.from(message, senderAddress, group, targetRecipient.expireMessages * 1000L)
|
||||||
val encrypted = IncomingEncryptedMessage(textMessage, textMessage.messageBody)
|
val encrypted = IncomingEncryptedMessage(textMessage, textMessage.messageBody)
|
||||||
smsDatabase.insertMessageInbox(encrypted, message.sentTimestamp ?: 0)
|
smsDatabase.insertMessageInbox(encrypted, message.sentTimestamp ?: 0)
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,6 @@ class VisibleMessage : Message() {
|
|||||||
var linkPreview: LinkPreview? = null
|
var linkPreview: LinkPreview? = null
|
||||||
var contact: Contact? = null
|
var contact: Contact? = null
|
||||||
var profile: Profile? = null
|
var profile: Profile? = null
|
||||||
var expiry: Int = 0
|
|
||||||
|
|
||||||
override val isSelfSendValid: Boolean = true
|
override val isSelfSendValid: Boolean = true
|
||||||
|
|
||||||
@ -48,9 +47,6 @@ class VisibleMessage : Message() {
|
|||||||
// TODO Contact
|
// TODO Contact
|
||||||
val profile = Profile.fromProto(dataMessage)
|
val profile = Profile.fromProto(dataMessage)
|
||||||
profile?.let { result.profile = profile }
|
profile?.let { result.profile = profile }
|
||||||
if (dataMessage.hasExpireTimer()) {
|
|
||||||
result.expiry = dataMessage.expireTimer
|
|
||||||
}
|
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user