Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • bindings-update
  • development
  • master
  • project_setup
  • xxclient
5 results

Target

Select target project
  • mobile/android/elixxir-dapps-sdk-kotlin
1 result
Select Git revision
  • bindings-update
  • development
  • master
  • project_setup
  • xxclient
5 results
Show changes

Commits on Source 2

package io.elixxir.xxclient.group
import io.elixxir.xxclient.models.BindingsModel.Companion.decodeArray
import io.elixxir.xxclient.models.GroupMember
import io.elixxir.xxclient.models.BindingsModel.Companion.decode
import io.elixxir.xxclient.models.GroupMembersList
import bindings.Group as GroupBindings
interface Group {
......@@ -9,7 +9,7 @@ interface Group {
val createdNano: Long
val id: ByteArray
val initMessage: ByteArray
val membership: List<GroupMember>
val membership: GroupMembersList
val name: ByteArray
val serialize: ByteArray
}
......@@ -25,11 +25,10 @@ open class GroupAdapter(
get() = group.id
override val initMessage: ByteArray
get() = group.initMessage
override val membership: List<GroupMember>
get() = decodeArray(group.membership)
override val membership: GroupMembersList
get() = decode(group.membership) ?: GroupMembersList(listOf())
override val name: ByteArray
get() = group.name
override val serialize: ByteArray
get() = group.serialize()
override val serialize: ByteArray by lazy { group.serialize() }
}
......@@ -13,8 +13,11 @@ interface BindingsModel {
}
inline fun <reified T> encodeArray(list: List<T>): ByteArray {
val data = list.map {
(it as? ByteArray)?.toBase64String() ?: it
}
val typeToken = object : TypeToken<Array<T>>() {}.type
return Gson().toJson(list.toTypedArray(), typeToken).encodeToByteArray()
return Gson().toJson(data.toTypedArray(), typeToken).encodeToByteArray()
}
inline fun <reified T> decode(data: ByteArray?): T? {
......
package io.elixxir.xxclient.models
import com.google.gson.annotations.SerializedName
data class GroupMembersList(
val members: List<GroupMember>
) : BindingsModel
data class GroupMember(
@SerializedName("ID")
val id: ByteArray,
@SerializedName("DHKey")
val dhKey: DHKey
) : BindingsModel
) : BindingsModel {
data class DHKey(
@SerializedName("Value")
val value: String,
@SerializedName("Fingerprint")
val fingerprint: Int
) : BindingsModel
}
\ No newline at end of file