Skip to content
Snippets Groups Projects
Commit ca231031 authored by Kamal Bramwell's avatar Kamal Bramwell
Browse files

WIP: BindingsAdapter

parent 8511e65f
Branches
No related tags found
No related merge requests found
Showing
with 246 additions and 2 deletions
package io.elixxir.dapp.bindings.data
internal interface Backup {
}
\ No newline at end of file
package io.elixxir.dapp.bindings.data
@JvmInline
internal value class BackupAdapter(val backup: bindings.Backup) : Backup
\ No newline at end of file
package io.elixxir.dapp.bindings.data
import io.elixxir.dapp.bindings.model.*
import io.elixxir.dapp.bindings.model.E2eParams
import io.elixxir.dapp.logger.model.LoggerConfig
import io.elixxir.dapp.session.model.SessionPassword
internal interface Bindings {
val defaultE2eParams: E2eParams
val defaultCmixParams: CmixParams
val defaultFileTransferParams: FileTransferParams
val gitVersion: String
fun generateSecret(byteLength: Long): SessionPassword
fun loadCmix(): Cmix
fun login(): E2e
fun getOrCreateUd(): UserDiscovery
fun newUdFromBackup(): UserDiscovery
fun newDummyTrafficManager(): DummyTrafficManager
fun registerLogger(loggerConfig: LoggerConfig)
fun initializeBackup(): Backup
fun resumeBackup(): Backup
fun fetchSignedNdf(): SignedNdf
fun getReceptionIdentity(): ReceptionIdentity
}
package io.elixxir.dapp.bindings.data
import io.elixxir.dapp.bindings.model.*
import io.elixxir.dapp.bindings.model.E2eParams
import io.elixxir.dapp.bindings.model.ReceptionIdentity
import io.elixxir.dapp.logger.model.LoggerConfig
import io.elixxir.dapp.session.model.SessionPassword
import bindings.Bindings as CoreBindings
internal class BindingsAdapter: Bindings {
override val defaultE2eParams: E2eParams
get() = E2eParams(CoreBindings.getDefaultE2EParams())
override val defaultCmixParams: CmixParams
get() = CmixParams(CoreBindings.getDefaultCMixParams())
override val defaultFileTransferParams: FileTransferParams
get() = FileTransferParams(CoreBindings.getDefaultFileTransferParams())
override val gitVersion: String
get() = CoreBindings.getGitVersion()
override fun generateSecret(byteLength: Long): SessionPassword {
return SessionPassword(CoreBindings.generateSecret(byteLength))
}
override fun loadCmix(): Cmix {
TODO("Not yet implemented")
}
override fun login(): E2e {
TODO("Not yet implemented")
}
override fun getOrCreateUd(): UserDiscovery {
TODO("Not yet implemented")
}
override fun newUdFromBackup(): UserDiscovery {
TODO("Not yet implemented")
}
override fun newDummyTrafficManager(): DummyTrafficManager {
TODO("Not yet implemented")
}
override fun registerLogger(loggerConfig: LoggerConfig) {
TODO("Not yet implemented")
}
override fun initializeBackup(): Backup {
TODO("Not yet implemented")
}
override fun resumeBackup(): Backup {
TODO("Not yet implemented")
}
override fun fetchSignedNdf(): SignedNdf {
TODO("Not yet implemented")
}
override fun getReceptionIdentity(): ReceptionIdentity {
TODO("Not yet implemented")
}
}
\ No newline at end of file
package io.elixxir.dapp.bindings.data
interface DummyTrafficManager {
}
\ No newline at end of file
......@@ -4,6 +4,7 @@ import io.elixxir.dapp.bindings.model.ConfirmationCode
import io.elixxir.dapp.bindings.model.ConfirmationId
import io.elixxir.dapp.bindings.model.Contact
import io.elixxir.dapp.bindings.model.FactsList
import io.elixxir.dapp.user.model.UserId
internal interface UserDiscovery {
fun getContact(): Contact
......@@ -26,4 +27,12 @@ internal interface UserDiscovery {
fun removePhone()
fun deleteUser()
fun findUserById(userId: UserId): Result<Contact>
fun usernameSearch(username: String): Result<Contact>
fun phoneSearch(phone: String): Result<Contact>
fun emailSearch(email: String): Result<Contact>
}
\ No newline at end of file
package io.elixxir.dapp.bindings.data
import bindings.Bindings
import io.elixxir.dapp.bindings.model.*
import io.elixxir.dapp.bindings.model.Contact
import io.elixxir.dapp.bindings.model.Fact
import io.elixxir.dapp.bindings.model.FactsList
import io.elixxir.dapp.user.model.UserId
import bindings.UserDiscovery as CoreUserDiscovery
@JvmInline
......@@ -54,4 +56,48 @@ internal value class UserDiscoveryAdapter(private val ud: CoreUserDiscovery) : U
override fun deleteUser() {
ud.permanentDeleteAccount(ud.contact)
}
override fun findUserById(userId: UserId): Result<Contact> {
Bindings.lookupUD(
E2eId.placeholder,
userId.value,
UdSearchResultListener.placeholder,
LookupId.placeholder,
SearchParams.placeholder
)
return Result.success(Contact(byteArrayOf()))
}
override fun usernameSearch(username: String): Result<Contact> {
Bindings.searchUD(
E2eId.placeholder,
Contact.placeholder,
UdSearchResultListener.placeholder,
FactsList.placeholder,
SearchParams.placeholder,
)
return Result.success(Contact(byteArrayOf()))
}
override fun phoneSearch(phone: String): Result<Contact> {
Bindings.searchUD(
E2eId.placeholder,
Contact.placeholder,
UdSearchResultListener.placeholder,
FactsList.placeholder,
SearchParams.placeholder,
)
return Result.success(Contact(byteArrayOf()))
}
override fun emailSearch(email: String): Result<Contact> {
Bindings.searchUD(
E2eId.placeholder,
Contact.placeholder,
UdSearchResultListener.placeholder,
FactsList.placeholder,
SearchParams.placeholder,
)
return Result.success(Contact(byteArrayOf()))
}
}
\ No newline at end of file
package io.elixxir.dapp.bindings.model
@JvmInline
value class CmixParams(val value: ByteArray) {
companion object {
val placeholder = byteArrayOf()
}
}
\ No newline at end of file
package io.elixxir.dapp.bindings.model
@JvmInline
internal value class Contact(val value: ByteArray)
\ No newline at end of file
internal value class Contact(val value: ByteArray) {
companion object {
val placeholder: ByteArray = byteArrayOf()
}
}
\ No newline at end of file
package io.elixxir.dapp.bindings.model
@JvmInline
internal value class E2eId(val value: Long) {
companion object {
val placeholder: Long = 0
}
}
\ No newline at end of file
package io.elixxir.dapp.bindings.model
@JvmInline
internal value class FactsList(val value: ByteArray)
\ No newline at end of file
internal value class FactsList(val value: ByteArray) {
companion object {
val placeholder: ByteArray = byteArrayOf()
}
}
\ No newline at end of file
package io.elixxir.dapp.bindings.model
@JvmInline
value class FileTransferParams(val value: ByteArray) {
companion object {
val plaeholder = byteArrayOf()
}
}
\ No newline at end of file
package io.elixxir.dapp.bindings.model
@JvmInline
value class LookupId(val value: ByteArray) {
companion object {
val placeholder: ByteArray = byteArrayOf()
}
}
\ No newline at end of file
package io.elixxir.dapp.bindings.model
@JvmInline
internal value class SearchParams(val value: ByteArray) {
companion object {
val placeholder: ByteArray = byteArrayOf()
}
}
\ No newline at end of file
package io.elixxir.dapp.bindings.model
@JvmInline
value class SignedNdf(val value: ByteArray) {
companion object {
val placeholder = byteArrayOf()
}
}
\ No newline at end of file
package io.elixxir.dapp.bindings.model
internal interface UdListener {
val onComplete: (Contact?, Exception?) -> Unit
}
internal class UdSearchResultListener(
private val listener: UdListener
) : bindings.UdSearchCallback,
bindings.UdLookupCallback,
UdListener by listener
{
override fun callback(
contactData: ByteArray?,
error: java.lang.Exception?
) {
onComplete(
Contact(contactData ?: byteArrayOf()),
error
)
}
companion object {
val placeholder: UdSearchResultListener =
UdSearchResultListener(
object : UdListener {
override val onComplete: (Contact?, Exception?) -> Unit
= { _, _, -> }
}
)
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment