code review, minor changes

This commit is contained in:
Brice 2020-12-02 16:21:38 +11:00
parent aefe721fa4
commit a699168956
10 changed files with 27 additions and 21 deletions

View File

@ -6,4 +6,7 @@ sealed class Destination {
class ClosedGroup(val groupPublicKey: String)
class OpenGroup(val channel: Long, val server: String)
companion object {
//TODO need to implement the equivalent to TSThread and then implement from(...)
}
}

View File

@ -16,10 +16,9 @@ abstract class Message {
companion object {
@JvmStatic
val ttl = 2 * 24 * 60 * 60 * 1000 //TODO not sure about that declaration
//TODO how to declare fromProto?
}
// validation
open fun isValid(): Boolean {
sentTimestamp = if (sentTimestamp!! > 0) sentTimestamp else return false
receivedTimestamp = if (receivedTimestamp!! > 0) receivedTimestamp else return false

View File

@ -7,6 +7,8 @@ import org.session.libsignal.service.loki.protocol.closedgroups.ClosedGroupSende
class ClosedGroupUpdate() : ControlMessage() {
var kind: Kind? = null
// Kind enum
sealed class Kind {
class New(val groupPublicKey: ByteArray, val name: String, val groupPrivateKey: ByteArray, val senderKeys: Collection<org.session.libsignal.service.loki.protocol.closedgroups.ClosedGroupSenderKey>, val members: Collection<ByteArray>, val admins: Collection<ByteArray>) : Kind()
@ -15,15 +17,13 @@ class ClosedGroupUpdate() : ControlMessage() {
class SenderKey(val groupPublicKey: ByteArray, val senderKey: org.session.libsignal.service.loki.protocol.closedgroups.ClosedGroupSenderKey) : Kind()
}
var kind: Kind? = null
companion object {
const val TAG = "ClosedGroupUpdate"
fun fromProto(proto: SignalServiceProtos.Content): ClosedGroupUpdate? {
val closedGroupUpdateProto = proto.dataMessage?.closedGroupUpdate ?: return null
val groupPublicKey = closedGroupUpdateProto.groupPublicKey
var kind: Kind? = null
var kind: Kind
when(closedGroupUpdateProto.type) {
SignalServiceProtos.ClosedGroupUpdate.Type.NEW -> {
val name = closedGroupUpdateProto.name ?: return null
@ -71,7 +71,7 @@ class ClosedGroupUpdate() : ControlMessage() {
// validation
override fun isValid(): Boolean {
if (!super.isValid() || kind == null) return false
if (!super.isValid()) return false
val kind = kind ?: return false
when(kind) {
is Kind.New -> {

View File

@ -12,7 +12,7 @@ class ExpirationTimerUpdate() : ControlMessage() {
fun fromProto(proto: SignalServiceProtos.Content): ExpirationTimerUpdate? {
val dataMessageProto = proto.dataMessage ?: return null
val isExpirationTimerUpdate = (dataMessageProto.flags and SignalServiceProtos.DataMessage.Flags.EXPIRATION_TIMER_UPDATE_VALUE) != 0
val isExpirationTimerUpdate = (dataMessageProto.flags and SignalServiceProtos.DataMessage.Flags.EXPIRATION_TIMER_UPDATE_VALUE) != 0 //TODO validate that 'and' operator equivalent to Swift '&'
if (!isExpirationTimerUpdate) return null
val duration = dataMessageProto.expireTimer
return ExpirationTimerUpdate(duration)

View File

@ -33,7 +33,7 @@ class SessionRequest() : ControlMessage() {
null, //TODO preKeyBundleProto.signedKeyId,
preKeyBundleProto.signature.toByteArray(),
null, //TODO preKeyBundleProto.identityKey
) ?: return null
)
return SessionRequest(preKeyBundle)
}
}

View File

@ -33,7 +33,7 @@ class Attachment : VisibleMessage<SignalServiceProtos.AttachmentPointer?>() {
result.key = proto.key.toByteArray()
result.digest = proto.digest.toByteArray()
val kind: Kind
if (proto.hasFlags() && (proto.flags and SignalServiceProtos.AttachmentPointer.Flags.VOICE_MESSAGE_VALUE) > 0) {
if (proto.hasFlags() && (proto.flags and SignalServiceProtos.AttachmentPointer.Flags.VOICE_MESSAGE_VALUE) > 0) { //TODO validate that 'and' operator = swift '&'
kind = Kind.VOICEMESSAGE
} else {
kind = Kind.GENERIC

View File

@ -21,14 +21,18 @@ class BaseVisibleMessage() : VisibleMessage<SignalServiceProtos.Content?>() {
result.text = dataMessage.body
// Attachments are handled in MessageReceiver
val quoteProto = dataMessage.quote
quoteProto?.let {
val quote = Quote.fromProto(quoteProto)
quote?.let { result.quote = quote }
}
val linkPreviewProto = dataMessage.previewList.first()
linkPreviewProto?.let {
val linkPreview = LinkPreview.fromProto(linkPreviewProto)
linkPreview?.let { result.linkPreview = linkPreview }
}
// TODO Contact
val profile = Profile.fromProto(dataMessage)
if (profile != null) { result.profile = profile }
profile?.let { result.profile = profile }
return result
}
}
@ -38,7 +42,7 @@ class BaseVisibleMessage() : VisibleMessage<SignalServiceProtos.Content?>() {
if (!super.isValid()) return false
if (attachmentIDs.isNotEmpty()) return true
val text = text?.trim() ?: return false
if (text.isEmpty()) return true
if (text.isNotEmpty()) return true
return false
}
@ -48,7 +52,7 @@ class BaseVisibleMessage() : VisibleMessage<SignalServiceProtos.Content?>() {
val dataMessage: SignalServiceProtos.DataMessage.Builder
// Profile
val profile = profile
val profileProto = profile?.toProto("") //TODO
val profileProto = profile?.toSSProto()
if (profileProto != null) {
dataMessage = profileProto.toBuilder()
} else {
@ -84,7 +88,7 @@ class BaseVisibleMessage() : VisibleMessage<SignalServiceProtos.Content?>() {
// TODO I'm blocking on that one...
//swift: let attachments = attachmentIDs.compactMap { TSAttachmentStream.fetch(uniqueId: $0, transaction: transaction) }
// TODO Contact
// Build
try {
proto.dataMessage = dataMessage.build()

View File

@ -42,7 +42,7 @@ class LinkPreview() : VisibleMessage<SignalServiceProtos.DataMessage.Preview?>()
}
val linkPreviewProto = SignalServiceProtos.DataMessage.Preview.newBuilder()
linkPreviewProto.url = url
title?. let { linkPreviewProto.title = title }
title?.let { linkPreviewProto.title = title }
val attachmentID = attachmentID
attachmentID?.let {
//TODO database stuff

View File

@ -47,7 +47,7 @@ class Quote() : VisibleMessage<SignalServiceProtos.DataMessage.Quote?>() {
quoteProto.id = timestamp
quoteProto.author = publicKey
text?.let { quoteProto.text = text }
//TODO addAttachmentsIfNeeded(quoteProto, transaction)
addAttachmentsIfNeeded(quoteProto, transaction)
// Build
try {
return quoteProto.build()

View File

@ -9,7 +9,7 @@ abstract class VisibleMessage<out T: com.google.protobuf.MessageOrBuilder?> : Me
final override fun toProto(): SignalServiceProtos.Content? {
//we don't need to implement this method in subclasses
//TODO it just needs an equivalent to swift: preconditionFailure("Use toProto(using:) instead.")
TODO("Not yet implemented")
//TODO it just needs an equivalent to swift: preconditionFailure("Use toProto(using:) if that exists...
TODO("Not implemented")
}
}