mirror of
https://github.com/oxen-io/session-android.git
synced 2025-02-20 05:38:26 +00:00
Cleanup closedGroupMessage serialisation
This commit is contained in:
parent
54b7e116ca
commit
7c4060a8c4
@ -53,8 +53,8 @@ abstract class Message {
|
|||||||
|
|
||||||
abstract fun toProto(): SignalServiceProtos.Content?
|
abstract fun toProto(): SignalServiceProtos.Content?
|
||||||
|
|
||||||
fun setGroupContext(dataMessage: SignalServiceProtos.DataMessage.Builder) {
|
fun SignalServiceProtos.DataMessage.Builder.setGroupContext() {
|
||||||
dataMessage.group = SignalServiceProtos.GroupContext.newBuilder().apply {
|
group = SignalServiceProtos.GroupContext.newBuilder().apply {
|
||||||
id = GroupUtil.doubleEncodeGroupID(recipient!!).let(GroupUtil::getDecodedGroupIDAsData).let(ByteString::copyFrom)
|
id = GroupUtil.doubleEncodeGroupID(recipient!!).let(GroupUtil::getDecodedGroupIDAsData).let(ByteString::copyFrom)
|
||||||
type = SignalServiceProtos.GroupContext.Type.DELIVER
|
type = SignalServiceProtos.GroupContext.Type.DELIVER
|
||||||
}.build()
|
}.build()
|
||||||
|
@ -141,10 +141,10 @@ class ClosedGroupControlMessage() : ControlMessage() {
|
|||||||
closedGroupControlMessage.type = DataMessage.ClosedGroupControlMessage.Type.NEW
|
closedGroupControlMessage.type = DataMessage.ClosedGroupControlMessage.Type.NEW
|
||||||
closedGroupControlMessage.publicKey = kind.publicKey
|
closedGroupControlMessage.publicKey = kind.publicKey
|
||||||
closedGroupControlMessage.name = kind.name
|
closedGroupControlMessage.name = kind.name
|
||||||
val encryptionKeyPair = SignalServiceProtos.KeyPair.newBuilder()
|
closedGroupControlMessage.encryptionKeyPair = SignalServiceProtos.KeyPair.newBuilder().also {
|
||||||
encryptionKeyPair.publicKey = ByteString.copyFrom(kind.encryptionKeyPair!!.publicKey.serialize().removingIdPrefixIfNeeded())
|
it.publicKey = ByteString.copyFrom(kind.encryptionKeyPair!!.publicKey.serialize().removingIdPrefixIfNeeded())
|
||||||
encryptionKeyPair.privateKey = ByteString.copyFrom(kind.encryptionKeyPair!!.privateKey.serialize())
|
it.privateKey = ByteString.copyFrom(kind.encryptionKeyPair!!.privateKey.serialize())
|
||||||
closedGroupControlMessage.encryptionKeyPair = encryptionKeyPair.build()
|
}.build()
|
||||||
closedGroupControlMessage.addAllMembers(kind.members)
|
closedGroupControlMessage.addAllMembers(kind.members)
|
||||||
closedGroupControlMessage.addAllAdmins(kind.admins)
|
closedGroupControlMessage.addAllAdmins(kind.admins)
|
||||||
closedGroupControlMessage.expirationTimer = kind.expirationTimer
|
closedGroupControlMessage.expirationTimer = kind.expirationTimer
|
||||||
@ -170,16 +170,14 @@ class ClosedGroupControlMessage() : ControlMessage() {
|
|||||||
closedGroupControlMessage.type = DataMessage.ClosedGroupControlMessage.Type.MEMBER_LEFT
|
closedGroupControlMessage.type = DataMessage.ClosedGroupControlMessage.Type.MEMBER_LEFT
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
val contentProto = SignalServiceProtos.Content.newBuilder()
|
return SignalServiceProtos.Content.newBuilder().apply {
|
||||||
val dataMessageProto = DataMessage.newBuilder()
|
dataMessage = DataMessage.newBuilder().also {
|
||||||
dataMessageProto.closedGroupControlMessage = closedGroupControlMessage.build()
|
it.closedGroupControlMessage = closedGroupControlMessage.build()
|
||||||
// Group context
|
it.setGroupContext()
|
||||||
setGroupContext(dataMessageProto)
|
}.build()
|
||||||
contentProto.dataMessage = dataMessageProto.build()
|
// Expiration timer
|
||||||
// Expiration timer
|
applyExpiryMode()
|
||||||
val threadId = groupID?.let { MessagingModuleConfiguration.shared.storage.getOrCreateThreadIdFor(Address.fromSerialized(it)) }
|
}.build()
|
||||||
contentProto.applyExpiryMode()
|
|
||||||
return contentProto.build()
|
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
Log.w(TAG, "Couldn't construct closed group control message proto from: $this.")
|
Log.w(TAG, "Couldn't construct closed group control message proto from: $this.")
|
||||||
return null
|
return null
|
||||||
@ -200,11 +198,9 @@ class ClosedGroupControlMessage() : ControlMessage() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun toProto(): DataMessage.ClosedGroupControlMessage.KeyPairWrapper? {
|
fun toProto(): DataMessage.ClosedGroupControlMessage.KeyPairWrapper? {
|
||||||
val publicKey = publicKey ?: return null
|
|
||||||
val encryptedKeyPair = encryptedKeyPair ?: return null
|
|
||||||
val result = DataMessage.ClosedGroupControlMessage.KeyPairWrapper.newBuilder()
|
val result = DataMessage.ClosedGroupControlMessage.KeyPairWrapper.newBuilder()
|
||||||
result.publicKey = ByteString.copyFrom(Hex.fromStringCondensed(publicKey))
|
result.publicKey = ByteString.copyFrom(Hex.fromStringCondensed(publicKey ?: return null))
|
||||||
result.encryptedKeyPair = encryptedKeyPair
|
result.encryptedKeyPair = encryptedKeyPair ?: return null
|
||||||
return try {
|
return try {
|
||||||
result.build()
|
result.build()
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
@ -213,4 +209,4 @@ class ClosedGroupControlMessage() : ControlMessage() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -33,7 +33,7 @@ data class ExpirationTimerUpdate(var syncTarget: String? = null, val isGroup: Bo
|
|||||||
// Group context
|
// Group context
|
||||||
if (storage.isClosedGroup(recipient!!)) {
|
if (storage.isClosedGroup(recipient!!)) {
|
||||||
try {
|
try {
|
||||||
setGroupContext(dataMessageProto)
|
dataMessageProto.setGroupContext()
|
||||||
} catch(e: Exception) {
|
} catch(e: Exception) {
|
||||||
Log.w(TAG, "Couldn't construct visible message proto from: $this", e)
|
Log.w(TAG, "Couldn't construct visible message proto from: $this", e)
|
||||||
return null
|
return null
|
||||||
|
@ -103,7 +103,7 @@ data class VisibleMessage(
|
|||||||
val storage = MessagingModuleConfiguration.shared.storage
|
val storage = MessagingModuleConfiguration.shared.storage
|
||||||
if (storage.isClosedGroup(recipient!!)) {
|
if (storage.isClosedGroup(recipient!!)) {
|
||||||
try {
|
try {
|
||||||
setGroupContext(dataMessage)
|
dataMessage.setGroupContext()
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
Log.w(TAG, "Couldn't construct visible message proto from: $this")
|
Log.w(TAG, "Couldn't construct visible message proto from: $this")
|
||||||
return null
|
return null
|
||||||
|
Loading…
x
Reference in New Issue
Block a user