42 lines
1.3 KiB
Kotlin
42 lines
1.3 KiB
Kotlin
package org.session.libsession.messaging.messages
|
|
|
|
import com.google.protobuf.ByteString
|
|
import org.session.libsession.utilities.GroupUtil
|
|
import org.session.libsignal.service.internal.push.SignalServiceProtos
|
|
|
|
abstract class Message {
|
|
|
|
var id: Long? = null
|
|
var threadID: Long? = null
|
|
var sentTimestamp: Long? = null
|
|
var receivedTimestamp: Long? = null
|
|
var recipient: String? = null
|
|
var sender: String? = null
|
|
var groupPublicKey: String? = null
|
|
var openGroupServerMessageID: Long? = null
|
|
|
|
open val ttl: Long = 14 * 24 * 60 * 60 * 1000
|
|
open val isSelfSendValid: Boolean = false
|
|
|
|
// validation
|
|
open fun isValid(): Boolean {
|
|
sentTimestamp?.let {
|
|
if (it <= 0) return false
|
|
}
|
|
receivedTimestamp?.let {
|
|
if (it <= 0) return false
|
|
}
|
|
return sender != null && recipient != null
|
|
}
|
|
|
|
abstract fun toProto(): SignalServiceProtos.Content?
|
|
|
|
fun setGroupContext(dataMessage: SignalServiceProtos.DataMessage.Builder) {
|
|
val groupProto = SignalServiceProtos.GroupContext.newBuilder()
|
|
val groupID = GroupUtil.doubleEncodeGroupID(recipient!!)
|
|
groupProto.id = ByteString.copyFrom(GroupUtil.getDecodedGroupIDAsData(groupID))
|
|
groupProto.type = SignalServiceProtos.GroupContext.Type.DELIVER
|
|
dataMessage.group = groupProto.build()
|
|
}
|
|
|
|
} |