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

Create bindings package to hold adapter classes

parent 879d1fd0
No related branches found
No related tags found
No related merge requests found
Showing
with 129 additions and 31 deletions
package io.elixxir.dapp.bindings.data
import bindings.AuthCallbacks
@JvmInline
internal value class AuthCallbacksAdapter(val value: AuthCallbacks)
\ No newline at end of file
package io.elixxir.dapp.bindings.data
interface Bindings {
}
package io.elixxir.dapp.bindings.data
import bindings.Bindings as CoreBindings
@JvmInline
value class BindingsAdapter(private val bindings: CoreBindings): Bindings
\ No newline at end of file
package io.elixxir.dapp.bindings.data
interface Cmix {
}
package io.elixxir.dapp.bindings.data
import bindings.Cmix as CoreCmix
@JvmInline
internal value class CmixAdapter(private val cmix: CoreCmix) : Cmix
\ No newline at end of file
package io.elixxir.dapp.bindings.data
interface E2e {
}
package io.elixxir.dapp.bindings.data
import bindings.E2e as CoreE2e
import io.elixxir.dapp.bindings.model.ReceptionIdentity
@JvmInline
internal value class E2eAdapter(private val e2e: CoreE2e) : E2e {
fun confirm(userId: ByteArray) {
e2e.confirm(userId)
}
fun deleteAllRequests() {
e2e.deleteAllRequests()
}
fun deleteReceivedRequests() {
e2e.deleteReceiveRequests()
}
fun getReceptionId(): ReceptionIdentity {
return ReceptionIdentity(e2e.receptionID)
}
}
\ No newline at end of file
package io.elixxir.dapp.bindings.data
interface UserDiscovery {
}
\ No newline at end of file
package io.elixxir.dapp.bindings.data
import bindings.UserDiscovery as CoreUserDiscovery
@JvmInline
value class UserDiscoveryAdapter(private val ud: CoreUserDiscovery) : UserDiscovery
\ No newline at end of file
package io.elixxir.dapp.network.model
package io.elixxir.dapp.bindings.model
@JvmInline
internal value class E2eParams(val value: ByteArray)
\ No newline at end of file
package io.elixxir.dapp.network.model
package io.elixxir.dapp.bindings.model
internal enum class NetworkFollowerStatus(val code: Long) {
STOPPED(0),
......
package io.elixxir.dapp.network.model
package io.elixxir.dapp.bindings.model
@JvmInline
internal value class ReceptionIdentity(val value: ByteArray)
......@@ -2,6 +2,12 @@ package io.elixxir.dapp.network.data
import bindings.Bindings
import bindings.Cmix
import io.elixxir.dapp.bindings.data.AuthCallbacksAdapter
import io.elixxir.dapp.bindings.data.CmixAdapter
import io.elixxir.dapp.bindings.data.E2e
import io.elixxir.dapp.bindings.data.E2eAdapter
import io.elixxir.dapp.bindings.model.E2eParams
import io.elixxir.dapp.bindings.model.ReceptionIdentity
import io.elixxir.dapp.model.CommonProperties
import io.elixxir.dapp.network.model.*
import io.elixxir.dapp.network.repository.NdfDataSource
......@@ -27,11 +33,11 @@ internal class DappNetworkManager private constructor(
fun login(
cmixId: Long,
authCallbacks: AuthCallbacksMediator,
authCallbacks: AuthCallbacksAdapter,
identity: ReceptionIdentity,
e2eParamsJson: E2eParams
): E2eMediator {
return E2eMediator(
): E2e {
return E2eAdapter(
Bindings.login(cmixId, authCallbacks.value, identity.value, e2eParamsJson.value)
)
}
......@@ -54,8 +60,8 @@ internal class DappNetworkManager private constructor(
sessionFolderPath: String,
sessionPassword: SessionPassword,
cmixParamsJson: E2eParams
): CmixMediator = withContext(dispatcher) {
CmixMediator(
): CmixAdapter = withContext(dispatcher) {
CmixAdapter(
Bindings.loadCmix(sessionFolderPath, sessionPassword.value, cmixParamsJson.value)
)
}
......
package io.elixxir.dapp.network.model
import bindings.AuthCallbacks
@JvmInline
internal value class AuthCallbacksMediator(val value: AuthCallbacks)
\ No newline at end of file
package io.elixxir.dapp.network.model
import bindings.Cmix
@JvmInline
internal value class CmixMediator(private val value: Cmix)
\ No newline at end of file
package io.elixxir.dapp.network.model
import bindings.E2e
@JvmInline
internal value class E2eMediator(private val value: E2e)
\ No newline at end of file
package io.elixxir.dapp.ud.repository
interface UserDataSource {
fun createUser(username: String)
}
\ No newline at end of file
package io.elixxir.dapp.user.model
interface User {
val userId: Long
val username: String
val phone: String
val email: String
}
\ No newline at end of file
package io.elixxir.dapp.user.repository
import io.elixxir.dapp.bindings.data.UserDiscovery
import io.elixxir.dapp.model.CommonProperties
import io.elixxir.dapp.user.model.User
interface UserDataSource {
suspend fun createUser(username: String): Result<User>
suspend fun updateProfile(): Result<User>
suspend fun deleteProfile(): Result<Unit>
}
internal class RemoteUserDataSource private constructor(
properties: CommonProperties,
private val ud: UserDiscovery
) : UserDataSource, CommonProperties by properties {
override suspend fun createUser(username: String): Result<User> {
TODO("Not yet implemented")
}
override suspend fun updateProfile(): Result<User> {
TODO("Not yet implemented")
}
override suspend fun deleteProfile(): Result<Unit> {
TODO("Not yet implemented")
}
companion object {
internal fun newInstance(
properties: CommonProperties,
ud: UserDiscovery
) = RemoteUserDataSource(properties, ud)
}
}
\ 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