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 4947c26694d7f262c9dbfcee8d92a0733e3fed0f..c08dcd1f8ffb8f7272526ec4e8872d0d1eb910ba 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 ee3d291133ca0d6141af7f603a7d53406bacde58..a174b490375670dc740ce7ca0dd74daa1cb9c565 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 0000000000000000000000000000000000000000..d28624e58e99280882e7d6fdd13962c7fb7e85d9 --- /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 0000000000000000000000000000000000000000..153fea7ace518d2a438a7787b123ed8e277cf540 --- /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