From dc46b9f7fbc0a1a3af8967ab47186cb27bad0212 Mon Sep 17 00:00:00 2001 From: Kamal Bramwell <kamal@elixxir.io> Date: Thu, 27 Oct 2022 14:02:30 -0400 Subject: [PATCH] Implemented GroupChatMessage and GroupMessageListener --- .../xxclient/callbacks/GroupMessageListener.kt | 17 +++++++++++++---- .../java/io/elixxir/xxclient/group/Group.kt | 10 ++++++---- .../elixxir/xxclient/models/GroupChatMessage.kt | 12 ++++++++++++ .../io/elixxir/xxclient/models/GroupMember.kt | 12 ++++++++++++ 4 files changed, 43 insertions(+), 8 deletions(-) create mode 100644 xxclient/src/main/java/io/elixxir/xxclient/models/GroupChatMessage.kt create mode 100644 xxclient/src/main/java/io/elixxir/xxclient/models/GroupMember.kt diff --git a/xxclient/src/main/java/io/elixxir/xxclient/callbacks/GroupMessageListener.kt b/xxclient/src/main/java/io/elixxir/xxclient/callbacks/GroupMessageListener.kt index 4947c26..c08dcd1 100644 --- a/xxclient/src/main/java/io/elixxir/xxclient/callbacks/GroupMessageListener.kt +++ b/xxclient/src/main/java/io/elixxir/xxclient/callbacks/GroupMessageListener.kt @@ -1,16 +1,20 @@ package io.elixxir.xxclient.callbacks import bindings.GroupChatProcessor +import io.elixxir.xxclient.models.BindingsModel.Companion.decode +import io.elixxir.xxclient.models.GroupChatMessage +import io.elixxir.xxclient.utils.ReceptionId +import io.elixxir.xxclient.utils.RoundId interface GroupMessageListener { val name: String fun onMessageReceived( - decryptedMessage: ByteArray?, + decryptedMessage: GroupChatMessage?, message: ByteArray?, - receptionId: ByteArray?, + receptionId: ReceptionId?, ephemeralId: Long, - roundId: Long, + roundId: RoundId, error: Exception? ) } @@ -27,7 +31,12 @@ open class GroupChatProcessorAdapter( error: Exception? ) { listener.onMessageReceived( - decryptedMessage, message, receptionId, ephemeralId, roundId, error + decode<GroupChatMessage>(decryptedMessage), + message, + receptionId, + ephemeralId, + roundId, + error ) } diff --git a/xxclient/src/main/java/io/elixxir/xxclient/group/Group.kt b/xxclient/src/main/java/io/elixxir/xxclient/group/Group.kt index ee3d291..a174b49 100644 --- a/xxclient/src/main/java/io/elixxir/xxclient/group/Group.kt +++ b/xxclient/src/main/java/io/elixxir/xxclient/group/Group.kt @@ -1,13 +1,15 @@ package io.elixxir.xxclient.group +import io.elixxir.xxclient.models.BindingsModel.Companion.decodeArray +import io.elixxir.xxclient.models.GroupMember import bindings.Group as GroupBindings interface Group { val createdMs: Long - val createdNano:Long + val createdNano: Long val id: ByteArray val initMessage: ByteArray - val membership:ByteArray + val membership: List<GroupMember> val name: ByteArray val serialize: ByteArray } @@ -23,8 +25,8 @@ open class GroupAdapter( get() = group.id override val initMessage: ByteArray get() = group.initMessage - override val membership: ByteArray - get() = group.membership + override val membership: List<GroupMember> + get() = decodeArray(group.membership) override val name: ByteArray get() = group.name override val serialize: ByteArray diff --git a/xxclient/src/main/java/io/elixxir/xxclient/models/GroupChatMessage.kt b/xxclient/src/main/java/io/elixxir/xxclient/models/GroupChatMessage.kt new file mode 100644 index 0000000..d28624e --- /dev/null +++ b/xxclient/src/main/java/io/elixxir/xxclient/models/GroupChatMessage.kt @@ -0,0 +1,12 @@ +package io.elixxir.xxclient.models + +import io.elixxir.xxclient.utils.Payload +import io.elixxir.xxclient.utils.UserId + +data class GroupChatMessage( + val groupId: ByteArray, + val senderId: UserId, + val messageId: ByteArray, + val payload: Payload, + val timestamp: Long +) : BindingsModel \ No newline at end of file diff --git a/xxclient/src/main/java/io/elixxir/xxclient/models/GroupMember.kt b/xxclient/src/main/java/io/elixxir/xxclient/models/GroupMember.kt new file mode 100644 index 0000000..153fea7 --- /dev/null +++ b/xxclient/src/main/java/io/elixxir/xxclient/models/GroupMember.kt @@ -0,0 +1,12 @@ +package io.elixxir.xxclient.models + + +data class GroupMember( + val id: ByteArray, + val dhKey: DHKey +) : BindingsModel + +data class DHKey( + val value: String, + val fingerprint: Int +) : BindingsModel \ No newline at end of file -- GitLab