diff --git a/.idea/.name b/.idea/.name deleted file mode 100644 index d2977f17643b9f3c5633d2d202a10818309e62b5..0000000000000000000000000000000000000000 --- a/.idea/.name +++ /dev/null @@ -1 +0,0 @@ -Elixxir dApps SDK Kotlin \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 87661f1a8d2ef94de076d3fbe07df8ea24519988..8df5c6f8c92e611466f8a96b19c77202e159bb24 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -1,20 +1,15 @@ <?xml version="1.0" encoding="UTF-8"?> <project version="4"> - <component name="GradleMigrationSettings" migrationVersion="1" /> <component name="GradleSettings"> <option name="linkedExternalProjectsSettings"> <GradleProjectSettings> <option name="testRunner" value="GRADLE" /> <option name="distributionType" value="DEFAULT_WRAPPED" /> <option name="externalProjectPath" value="$PROJECT_DIR$" /> - <option name="gradleJvm" value="11" /> <option name="modules"> <set> <option value="$PROJECT_DIR$" /> - <option value="$PROJECT_DIR$/app" /> - <option value="$PROJECT_DIR$/buildSrc" /> <option value="$PROJECT_DIR$/cmix" /> - <option value="$PROJECT_DIR$/depconstraints" /> <option value="$PROJECT_DIR$/xxclient" /> </set> </option> diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 94a25f7f4cb416c083d265558da75d457237d671..35eb1ddfbbc029bcab630581847471d7f238ec53 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <project version="4"> <component name="VcsDirectoryMappings"> - <mapping directory="$PROJECT_DIR$" vcs="Git" /> + <mapping directory="" vcs="Git" /> </component> </project> \ No newline at end of file diff --git a/app/.gitignore b/app/.gitignore deleted file mode 100644 index 42afabfd2abebf31384ca7797186a27a4b7dbee8..0000000000000000000000000000000000000000 --- a/app/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts deleted file mode 100644 index f743aa5b102586b6b100fde7f485ca1c59fa940d..0000000000000000000000000000000000000000 --- a/app/build.gradle.kts +++ /dev/null @@ -1,52 +0,0 @@ -plugins { - id("com.android.library") - kotlin("android") - kotlin("kapt") -} - -android { - compileSdk = Config.COMPILE_SDK - - defaultConfig { - minSdk = Config.MIN_SDK - targetSdk = Config.TARGET_SDK - - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - } - - buildTypes { - release { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro" - ) - } - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 - } - kotlinOptions { - jvmTarget = "1.8" - } -} - -dependencies { - implementation(fileTree(mapOf("include" to listOf("*.jar"), "dir" to "libs"))) - implementation((project(":cmix"))) - - api(platform(project(":depconstraints"))) - kapt(platform(project(":depconstraints"))) - androidTestApi(platform(project(":depconstraints"))) - - implementation(Libs.CORE_KTX) - implementation(Libs.COROUTINES) - implementation(Libs.TIMBER) - - testImplementation(Libs.JUNIT) - testImplementation(Libs.TRUTH) - - androidTestImplementation(Libs.ESPRESSO_CORE) - androidTestImplementation(Libs.EXT_JUNIT) -} \ No newline at end of file diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro deleted file mode 100644 index ff59496d81a770a6b7632f753f0e526b5eeffd13..0000000000000000000000000000000000000000 --- a/app/proguard-rules.pro +++ /dev/null @@ -1,21 +0,0 @@ -# Add project specific ProGuard rules here. -# You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle.kts. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/app/src/androidTest/java/io/elixxir/dapp/ExampleInstrumentedTest.kt b/app/src/androidTest/java/io/elixxir/dapp/ExampleInstrumentedTest.kt deleted file mode 100644 index ed82cb2247ee0560717445dfbc212c90e28188c7..0000000000000000000000000000000000000000 --- a/app/src/androidTest/java/io/elixxir/dapp/ExampleInstrumentedTest.kt +++ /dev/null @@ -1,24 +0,0 @@ -package io.elixxir.dapp - -import androidx.test.platform.app.InstrumentationRegistry -import androidx.test.ext.junit.runners.AndroidJUnit4 - -import org.junit.Test -import org.junit.runner.RunWith - -import org.junit.Assert.* - -/** - * Instrumented test, which will execute on an Android device. - * - * See [testing documentation](http://d.android.com/tools/testing). - */ -@RunWith(AndroidJUnit4::class) -class ExampleInstrumentedTest { - @Test - fun useAppContext() { - // Context of the app under test. - val appContext = InstrumentationRegistry.getInstrumentation().targetContext - assertEquals("io.elixxir.dapp", appContext.packageName) - } -} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml deleted file mode 100644 index a923d86e3e4f194d0795e71efbb75826bc2cb809..0000000000000000000000000000000000000000 --- a/app/src/main/AndroidManifest.xml +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<manifest xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" - package="io.elixxir.dapp"> - - <application - android:allowBackup="true" - android:dataExtractionRules="@xml/data_extraction_rules" - android:fullBackupContent="@xml/backup_rules" - android:icon="@mipmap/ic_launcher" - android:roundIcon="@mipmap/ic_launcher_round" - android:supportsRtl="true" - tools:targetApi="31" /> - -</manifest> \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/DappModule.kt b/app/src/main/java/io/elixxir/dapp/DappModule.kt deleted file mode 100644 index 392a4e138c8801fd4a8fbcf560c172b3b14cbd24..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/DappModule.kt +++ /dev/null @@ -1,43 +0,0 @@ -package io.elixxir.dapp - -import io.elixxir.dapp.android.model.AndroidConfig -import io.elixxir.dapp.api.model.* -import io.elixxir.dapp.logger.data.Logger -import io.elixxir.dapp.api.model.CommonProperties -import io.elixxir.dapp.api.model.DappConfig - -/** - * Singleton entry point to modules provided by the dApp SDK. - */ -class DappModule private constructor( - config: DappConfig, - logger: Logger = Logger.newInstance(config.loggerConfig) -) : DappApi, - AndroidConfig by config.androidConfig, - Logger by logger, - CommonProperties -{ - override val accountApi: AccountApi - get() = TODO("Not yet implemented") - override val directoryApi: DirectoryApi - get() = TODO("Not yet implemented") - override val messagesApi: MessagesApi - get() = TODO("Not yet implemented") - override val networkApi: NetworkApi - get() = TODO("Not yet implemented") - override val requestsApi: RequestsApi - get() = TODO("Not yet implemented") - override val groupsApi: GroupsApi - get() = TODO("Not yet implemented") - - companion object { - @Volatile - private var instance: DappModule? = null - - fun getInstance(config: DappConfig): DappModule { - return instance ?: DappModule(config).apply { - instance = this - } - } - } -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/android/data/DefaultAndroidConfig.kt b/app/src/main/java/io/elixxir/dapp/android/data/DefaultAndroidConfig.kt deleted file mode 100644 index 62a36d55c9c6ac48014a0bb470a8dc78b530ac2b..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/android/data/DefaultAndroidConfig.kt +++ /dev/null @@ -1,11 +0,0 @@ -package io.elixxir.dapp.android.data - -import android.content.Context -import io.elixxir.dapp.android.model.AndroidConfig -import kotlinx.coroutines.CoroutineDispatcher -import kotlinx.coroutines.Dispatchers - -data class DefaultAndroidConfig( - override val context: () -> Context, - override val dispatcher: CoroutineDispatcher = Dispatchers.IO, -) : AndroidConfig \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/android/model/AndroidConfig.kt b/app/src/main/java/io/elixxir/dapp/android/model/AndroidConfig.kt deleted file mode 100644 index e31adddda82f68e0d92abac2931cf8587ff907f4..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/android/model/AndroidConfig.kt +++ /dev/null @@ -1,12 +0,0 @@ -package io.elixxir.dapp.android.model - -import android.content.Context -import kotlinx.coroutines.CoroutineDispatcher - -/** - * Android-specific properties used at runtime. - */ -interface AndroidConfig { - val context: () -> Context - val dispatcher: CoroutineDispatcher -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/api/data/AccountModule.kt b/app/src/main/java/io/elixxir/dapp/api/data/AccountModule.kt deleted file mode 100644 index b6e0c2ada41f78220bb78f7fe29ea30cf5e3acd0..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/api/data/AccountModule.kt +++ /dev/null @@ -1,42 +0,0 @@ -package io.elixxir.dapp.api.data - -import io.elixxir.dapp.api.model.AccountApi -import io.elixxir.dapp.backup.model.Backup -import io.elixxir.dapp.session.repository.SessionDataSource -import io.elixxir.dapp.user.model.User -import io.elixxir.dapp.user.model.UserUpdateData -import kotlinx.coroutines.* - -internal class AccountModule( - private val sessionManager: SessionDataSource -) : AccountApi { - private val scope: CoroutineScope = CoroutineScope( - CoroutineName("AccountModule") - + Job() - + Dispatchers.Default - ) - - override fun getCurrentUser(): User { - TODO("Not yet implemented") - } - - override fun createAccount(username: String) { - scope.launch { - sessionManager.createSession() - } - } - - override fun restoreAccount(backup: Backup) { - TODO("Not yet implemented") - } - - override fun updateAccount(updateData: UserUpdateData) { - TODO("Not yet implemented") - } - - override fun deleteAccount() { - scope.launch { - sessionManager.deleteSession() - } - } -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/api/data/NetworkModule.kt b/app/src/main/java/io/elixxir/dapp/api/data/NetworkModule.kt deleted file mode 100644 index 7a0e356035c5ffe383f84e43874074fc274b17f3..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/api/data/NetworkModule.kt +++ /dev/null @@ -1,30 +0,0 @@ -package io.elixxir.dapp.api.data - -import io.elixxir.dapp.api.model.NetworkApi -import io.elixxir.dapp.network.model.ConnectionStatus -import io.elixxir.dapp.network.data.NetworkManager -import kotlinx.coroutines.CoroutineName -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.Job -import kotlinx.coroutines.flow.Flow - -internal class NetworkModule( - private val networkManager: NetworkManager -) : NetworkApi { - private val scope: CoroutineScope = CoroutineScope( - CoroutineName("AccountModule") - + Job() - + Dispatchers.Default - ) - - override val connectionStatus: Flow<ConnectionStatus> by networkManager::connectionStatus - - override fun connect(): Result<ConnectionStatus> { - TODO("Not yet implemented") - } - - override fun disconnect(): Result<ConnectionStatus> { - TODO("Not yet implemented") - } -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/api/model/AccountApi.kt b/app/src/main/java/io/elixxir/dapp/api/model/AccountApi.kt deleted file mode 100644 index 8b231f83ef9ddeb4aefe7a63f7b9266d938f93e2..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/api/model/AccountApi.kt +++ /dev/null @@ -1,13 +0,0 @@ -package io.elixxir.dapp.api.model - -import io.elixxir.dapp.backup.model.Backup -import io.elixxir.dapp.user.model.User -import io.elixxir.dapp.user.model.UserUpdateData - -interface AccountApi { - fun getCurrentUser(): User - fun createAccount(username: String) - fun restoreAccount(backup: Backup) - fun updateAccount(updateData: UserUpdateData) - fun deleteAccount() -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/api/model/CommonProperties.kt b/app/src/main/java/io/elixxir/dapp/api/model/CommonProperties.kt deleted file mode 100644 index ced9abdb6078976c3d4b926ced42177f47fbb6a4..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/api/model/CommonProperties.kt +++ /dev/null @@ -1,6 +0,0 @@ -package io.elixxir.dapp.api.model - -import io.elixxir.dapp.android.model.AndroidConfig -import io.elixxir.dapp.logger.data.Logger - -internal interface CommonProperties : Logger, AndroidConfig \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/api/model/DappApi.kt b/app/src/main/java/io/elixxir/dapp/api/model/DappApi.kt deleted file mode 100644 index e6998cad67d8104c89cf580211247446c419ebc8..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/api/model/DappApi.kt +++ /dev/null @@ -1,10 +0,0 @@ -package io.elixxir.dapp.api.model - -interface DappApi { - val accountApi: AccountApi - val directoryApi: DirectoryApi - val messagesApi: MessagesApi - val networkApi: NetworkApi - val requestsApi: RequestsApi - val groupsApi: GroupsApi -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/api/model/DappConfig.kt b/app/src/main/java/io/elixxir/dapp/api/model/DappConfig.kt deleted file mode 100644 index 6b56f69920fb0acda678828b3e76e654f6004b46..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/api/model/DappConfig.kt +++ /dev/null @@ -1,15 +0,0 @@ -package io.elixxir.dapp.api.model - -import io.elixxir.dapp.android.model.AndroidConfig -import io.elixxir.dapp.logger.model.LoggerConfig -import io.elixxir.dapp.network.model.NetworkConfig - -/** - * Describes configurable options, and satisfies dependencies for, - * modules exposed by the dApps Kotlin SDK. - */ -interface DappConfig { - val androidConfig: AndroidConfig - val loggerConfig: LoggerConfig - val networkConfig: NetworkConfig -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/api/model/DirectoryApi.kt b/app/src/main/java/io/elixxir/dapp/api/model/DirectoryApi.kt deleted file mode 100644 index 6ff493985951db5c1b246c0e1d6ecdad4e079dcf..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/api/model/DirectoryApi.kt +++ /dev/null @@ -1,10 +0,0 @@ -package io.elixxir.dapp.api.model - -import io.elixxir.dapp.user.model.User -import io.elixxir.dapp.user.model.UserQuery - -interface DirectoryApi { - fun getContacts(): List<User> - fun findUser(params: UserQuery): User? - fun blockUser(user: User) -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/api/model/GroupsApi.kt b/app/src/main/java/io/elixxir/dapp/api/model/GroupsApi.kt deleted file mode 100644 index 8cbccf2ab4afc5fa70f24307cbfdeef64ef5a5a7..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/api/model/GroupsApi.kt +++ /dev/null @@ -1,16 +0,0 @@ -package io.elixxir.dapp.api.model - -import io.elixxir.dapp.group.model.Group -import io.elixxir.dapp.messaging.model.Message -import io.elixxir.dapp.user.model.User -import kotlinx.coroutines.flow.Flow - -interface GroupsApi { - val groupMessages: Flow<Message> - fun sendInvitation(group: Group) - fun resendInvitation(member: User) - fun joinGroup(group: Group) - fun leaveGroup(group: Group) - fun sendMessage(message: Message, group: Group) - fun retryMessage(message: Message, group: Group) -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/api/model/MessagesApi.kt b/app/src/main/java/io/elixxir/dapp/api/model/MessagesApi.kt deleted file mode 100644 index 0e7c76b6c46aefc635dc87eac9cbdcb462296cf3..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/api/model/MessagesApi.kt +++ /dev/null @@ -1,11 +0,0 @@ -package io.elixxir.dapp.api.model - -import io.elixxir.dapp.messaging.model.Message -import io.elixxir.dapp.user.model.User -import kotlinx.coroutines.flow.Flow - -interface MessagesApi { - val messages: Flow<Message> - fun sendMessage(message: Message, recipient: User) - fun retryMessage(message: Message, recipient: User) -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/api/model/NetworkApi.kt b/app/src/main/java/io/elixxir/dapp/api/model/NetworkApi.kt deleted file mode 100644 index 7313681e02fa1b707a261648a85efbe5ff1545e2..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/api/model/NetworkApi.kt +++ /dev/null @@ -1,10 +0,0 @@ -package io.elixxir.dapp.api.model - -import io.elixxir.dapp.network.model.ConnectionStatus -import kotlinx.coroutines.flow.Flow - -interface NetworkApi { - val connectionStatus: Flow<ConnectionStatus> - fun connect(): Result<ConnectionStatus> - fun disconnect(): Result<ConnectionStatus> -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/api/model/RequestsApi.kt b/app/src/main/java/io/elixxir/dapp/api/model/RequestsApi.kt deleted file mode 100644 index 154bc8b86fe01b0ca7031e88ccb3224094b9ad47..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/api/model/RequestsApi.kt +++ /dev/null @@ -1,13 +0,0 @@ -package io.elixxir.dapp.api.model - -import io.elixxir.dapp.request.model.IncomingRequest -import io.elixxir.dapp.request.model.Request -import io.elixxir.dapp.request.model.OutgoingRequest -import kotlinx.coroutines.flow.Flow - -interface RequestsApi { - val requests: Flow<Request> - fun sendRequest(request: OutgoingRequest) - fun acceptRequest(request: IncomingRequest) - fun retryRequest(request: Request) -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/api/model/RetryStrategy.kt b/app/src/main/java/io/elixxir/dapp/api/model/RetryStrategy.kt deleted file mode 100644 index 91fa23967c74f6af58bf657c8aa01ba5257d03f4..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/api/model/RetryStrategy.kt +++ /dev/null @@ -1,16 +0,0 @@ -package io.elixxir.dapp.api.model - -interface RetryStrategy { - val maxRetries: Int - val retryDelayMs: Long -} - -/** - * Remote data that is critical to the function of the SDK. - * Generally means many retries and reasonable delay to not - * overwhelm network resources. - */ -data class CriticalRemoteDataStrategy( - override val maxRetries: Int = 29, - override val retryDelayMs: Long = 1000L -) : RetryStrategy \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/backup/model/Backup.kt b/app/src/main/java/io/elixxir/dapp/backup/model/Backup.kt deleted file mode 100644 index 72bd8329420d7c2489fd5324f58cf9d1e776eb48..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/backup/model/Backup.kt +++ /dev/null @@ -1,4 +0,0 @@ -package io.elixxir.dapp.backup.model - -interface Backup { -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/bindings/data/AuthEventListener.kt b/app/src/main/java/io/elixxir/dapp/bindings/data/AuthEventListener.kt deleted file mode 100644 index 4eca68a8c98c453bff18b1d3f8a00209e5f1d5a2..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/data/AuthEventListener.kt +++ /dev/null @@ -1,14 +0,0 @@ -package io.elixxir.dapp.bindings.data - -import bindings.AuthCallbacks - -interface AuthEventListener { - fun onConfirm(var1: ByteArray?, var2: ByteArray?, var3: Long, var5: Long) - - fun onRequest(var1: ByteArray?, var2: ByteArray?, var3: Long, var5: Long) - - fun onReset(var1: ByteArray?, var2: ByteArray?, var3: Long, var5: Long) -} - -@JvmInline -internal value class AuthCallbacksAdapter(val value: AuthCallbacks) \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/bindings/data/Backup.kt b/app/src/main/java/io/elixxir/dapp/bindings/data/Backup.kt deleted file mode 100644 index 547cebe85f6d67b8b96a3e2a9e0e1d9529b474d1..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/data/Backup.kt +++ /dev/null @@ -1,4 +0,0 @@ -package io.elixxir.dapp.bindings.data - -internal interface Backup { -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/bindings/data/BackupAdapter.kt b/app/src/main/java/io/elixxir/dapp/bindings/data/BackupAdapter.kt deleted file mode 100644 index 2a3af5d63808070f60609eeb22f604cdfa429401..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/data/BackupAdapter.kt +++ /dev/null @@ -1,4 +0,0 @@ -package io.elixxir.dapp.bindings.data - -@JvmInline -internal value class BackupAdapter(val backup: bindings.Backup) : Backup \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/bindings/data/Bindings.kt b/app/src/main/java/io/elixxir/dapp/bindings/data/Bindings.kt deleted file mode 100644 index 6083e320e48cde159bdaeae4d771a6ed8e98c677..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/data/Bindings.kt +++ /dev/null @@ -1,68 +0,0 @@ -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.network.repository.Ndf -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( - sessionFileDirectory: String, - sessionPassword: SessionPassword, - cmixParams: CmixParams - ): Cmix - - fun login( - cmixId: CmixId, - authCallbacks: AuthCallbacksAdapter, - receptionIdentity: ReceptionIdentity, - e2eParams: E2eParams - ): E2e - - fun getOrCreateUd( - e2eId: E2eId, - networkFollowerStatus: NetworkFollowerStatus, - username: String, - signature: RegistrationValidationSignature, - udCert: UdCertificate, - contact: Contact, - udIpAddress: UdIpAddress - ): UserDiscovery - - fun newUdFromBackup( - e2eId: E2eId, - networkFollowerStatus: NetworkFollowerStatus, - emailFact: Fact, - phoneFact: Fact, - udCert: UdCertificate, - contact: Contact, - udAddress: UdIpAddress - ): UserDiscovery - - fun newDummyTrafficManager(): DummyTrafficManager - - fun registerLogger(loggerConfig: LoggerConfig) - - fun initializeBackup(): Backup - - fun resumeBackup(): Backup - - fun fetchSignedNdf( - url: String, - cert: String - ): Ndf - - fun getReceptionIdentity( - key: SessionPassword, - cmixId: CmixId - ): ReceptionIdentity -} - diff --git a/app/src/main/java/io/elixxir/dapp/bindings/data/BindingsAdapter.kt b/app/src/main/java/io/elixxir/dapp/bindings/data/BindingsAdapter.kt deleted file mode 100644 index 3cdfe670515414b94a50af68e78a97be7cd879b7..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/data/BindingsAdapter.kt +++ /dev/null @@ -1,140 +0,0 @@ -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.network.repository.Ndf -import io.elixxir.dapp.session.model.SessionPassword -import io.elixxir.dapp.util.toBase64String -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( - sessionFileDirectory: String, - sessionPassword: SessionPassword, - cmixParams: CmixParams - ): Cmix { - return CmixAdapter( - CoreBindings.loadCmix( - sessionFileDirectory, - sessionPassword.value, - cmixParams.value - ) - ) - } - - override fun login( - cmixId: CmixId, - authCallbacks: AuthCallbacksAdapter, - receptionIdentity: ReceptionIdentity, - e2eParams: E2eParams - ): E2e { - // TODO: Use factory method to get E2E implementation - return E2eAdapter( - CoreBindings.login( - cmixId.value, - authCallbacks.value, - receptionIdentity.value, - e2eParams.value - ) - ) - } - - override fun getOrCreateUd( - e2eId: E2eId, - networkFollowerStatus: NetworkFollowerStatus, - username: String, - signature: RegistrationValidationSignature, - udCert: UdCertificate, - contact: Contact, - udIpAddress: UdIpAddress - ): UserDiscovery { - // TODO: Use factory method to get UD implementation - return UserDiscoveryAdapter( - CoreBindings.newOrLoadUd( - e2eId.value, - { networkFollowerStatus.code }, - username, - signature.value, - udCert.value, - contact.value, - udIpAddress.value - ) - ) - } - - override fun newUdFromBackup( - e2eId: E2eId, - networkFollowerStatus: NetworkFollowerStatus, - emailFact: Fact, - phoneFact: Fact, - udCert: UdCertificate, - contact: Contact, - udIpAddress: UdIpAddress - ): UserDiscovery { - // TODO: Use factory method to get UD implementation - return UserDiscoveryAdapter( - CoreBindings.newUdManagerFromBackup( - e2eId.value, - { networkFollowerStatus.code }, - emailFact.value, - phoneFact.value, - udCert.value, - contact.value, - udIpAddress.value - ) - ) - } - - override fun newDummyTrafficManager(): DummyTrafficManager { - TODO("Not yet implemented") - } - - override fun registerLogger(loggerConfig: LoggerConfig) { - with (loggerConfig) { - CoreBindings.logLevel(logLevel.code) - CoreBindings.registerLogWriter(logWriter) - } - } - - override fun initializeBackup(): Backup { - TODO("Not yet implemented") - } - - override fun resumeBackup(): Backup { - TODO("Not yet implemented") - } - - override fun fetchSignedNdf( - url: String, - cert: String - ): Ndf { - return CoreBindings.downloadAndVerifySignedNdfWithUrl(url, cert).toBase64String() - } - - override fun getReceptionIdentity( - key: SessionPassword, - cmixId: CmixId - ): ReceptionIdentity { - return ReceptionIdentity( - CoreBindings.loadReceptionIdentity( - key.value.toBase64String(), - cmixId.value - ) - ) - } -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/bindings/data/Cmix.kt b/app/src/main/java/io/elixxir/dapp/bindings/data/Cmix.kt deleted file mode 100644 index ef91c1f5b20cf25aeb691f2a3826d611cb664be9..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/data/Cmix.kt +++ /dev/null @@ -1,31 +0,0 @@ -package io.elixxir.dapp.bindings.data - -import io.elixxir.dapp.bindings.model.* -import io.elixxir.dapp.bindings.model.Contact -import io.elixxir.dapp.bindings.model.E2eId -import io.elixxir.dapp.bindings.model.NetworkFollowerStatus - -internal interface Cmix { - fun connect( - e2eId: E2eId, - recipientContact: Contact, - e2eParams: E2eParams - ): Connection - - fun startNetworkFollower(timeoutMs: Long) - - fun stopNetworkFollower() - - fun isNetworkHealthy(): Boolean - - fun registerHealthListener(listener: NetworkHealthListener): HealthListenerId - - fun unregisterHealthListener(id: HealthListenerId) - - fun getNodeRegistrationStatus(): NodeRegistrationStatus - - fun makeReceptionIdentity(): ReceptionIdentity - - fun getNetworkFollowerStatus(): NetworkFollowerStatus -} - diff --git a/app/src/main/java/io/elixxir/dapp/bindings/data/CmixAdapter.kt b/app/src/main/java/io/elixxir/dapp/bindings/data/CmixAdapter.kt deleted file mode 100644 index 7c7203b420eee201f6b19c9062adf296b788f253..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/data/CmixAdapter.kt +++ /dev/null @@ -1,62 +0,0 @@ -package io.elixxir.dapp.bindings.data - -import io.elixxir.dapp.bindings.model.* -import io.elixxir.dapp.bindings.model.Connection -import io.elixxir.dapp.bindings.model.Contact -import io.elixxir.dapp.bindings.model.E2eId -import io.elixxir.dapp.bindings.model.E2eParams -import io.elixxir.dapp.bindings.model.NetworkFollowerStatus -import bindings.Cmix as CoreCmix - -@JvmInline -internal value class CmixAdapter(private val cmix: CoreCmix) : Cmix { - - override fun connect( - e2eId: E2eId, - recipientContact: Contact, - e2eParams: E2eParams - ): Connection { - // TODO: Use factory method to get Connection implementation - return ConnectionAdapter( - cmix.connect( - e2eId.value, - recipientContact.value, - e2eParams.value - ) - ) - } - - override fun startNetworkFollower(timeoutMs: Long) { - cmix.startNetworkFollower(timeoutMs) - } - - override fun stopNetworkFollower() { - cmix.stopNetworkFollower() - } - - override fun isNetworkHealthy(): Boolean { - return cmix.isHealthy - } - - override fun registerHealthListener(listener: NetworkHealthListener): HealthListenerId { - return HealthListenerId( - cmix.addHealthCallback(HealthCallbackAdapter.placeholder) - ) - } - - override fun unregisterHealthListener(id: HealthListenerId) { - cmix.removeHealthCallback(id.value) - } - - override fun getNodeRegistrationStatus(): NodeRegistrationStatus { - return NodeRegistrationStatus(cmix.nodeRegistrationStatus) - } - - override fun makeReceptionIdentity(): ReceptionIdentity { - return ReceptionIdentity(cmix.makeReceptionIdentity()) - } - - override fun getNetworkFollowerStatus(): NetworkFollowerStatus { - return NetworkFollowerStatus.from(cmix.networkFollowerStatus()) - } -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/bindings/data/DummyTrafficManager.kt b/app/src/main/java/io/elixxir/dapp/bindings/data/DummyTrafficManager.kt deleted file mode 100644 index 4939e23eafb11a2ecfdbc0cef9f848f02b735392..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/data/DummyTrafficManager.kt +++ /dev/null @@ -1,4 +0,0 @@ -package io.elixxir.dapp.bindings.data - -interface DummyTrafficManager { -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/bindings/data/E2e.kt b/app/src/main/java/io/elixxir/dapp/bindings/data/E2e.kt deleted file mode 100644 index ce271d3af252c4e1e45d76a9b8edae8c2d85ceed..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/data/E2e.kt +++ /dev/null @@ -1,49 +0,0 @@ -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.user.model.UserId - -internal interface E2e { - val payloadSize: Long - - fun getReceptionId(): ReceptionIdentity - fun getContact(): Contact - fun callAllReceivedRequests() - fun confirmRequest(userId: UserId) - fun deleteAllRequests() - fun deleteRequest(request: Request) - fun deleteSentRequests() - - fun getAllPartnerIds(): PartnersList - - fun hasAuthenticatedChannel(contact: Contact): Boolean - - fun registerListener( - senderId: UserId, - messageType: MessageType, - e2eListener: E2eListener - ) - - fun reset(contact: Contact): RoundId - - fun sendRequest( - contact: Contact, - myFactsList: FactsList - ): RoundId - - fun verifyOwnership( - receivedUserId: UserId, - verifiedContact: Contact, - e2eHandler: E2eHandler - ): Boolean - - fun sendE2e( - messageType: MessageType, - receiverId: UserId, - payload: Payload, - params: E2eParams - ): SendReport -} - diff --git a/app/src/main/java/io/elixxir/dapp/bindings/data/E2eAdapter.kt b/app/src/main/java/io/elixxir/dapp/bindings/data/E2eAdapter.kt deleted file mode 100644 index 588f8e95c68c54335da1ea389459fa8cab67f9e6..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/data/E2eAdapter.kt +++ /dev/null @@ -1,104 +0,0 @@ -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 bindings.E2e as CoreE2e -import io.elixxir.dapp.user.model.UserId - -@JvmInline -internal value class E2eAdapter(private val e2e: CoreE2e) : E2e { - override val payloadSize: Long - get() = e2e.payloadSize() - - override fun getReceptionId(): ReceptionIdentity { - return ReceptionIdentity(e2e.receptionID) - } - - override fun getContact(): Contact { - return Contact(e2e.contact) - } - - override fun callAllReceivedRequests() { - e2e.callAllReceivedRequests() - } - - override fun confirmRequest(userId: UserId) { - e2e.confirm(userId.value) - } - - override fun deleteAllRequests() { - e2e.deleteAllRequests() - } - - override fun deleteRequest(request: Request) { - e2e.deleteRequest(request.value) - } - - override fun deleteSentRequests() { - e2e.deleteSentRequests() - } - - override fun getAllPartnerIds(): PartnersList { - return PartnersList(e2e.allPartnerIDs) - } - - override fun hasAuthenticatedChannel(contact: Contact): Boolean { - return e2e.hasAuthenticatedChannel(contact.value) - } - - override fun registerListener( - senderId: UserId, - messageType: MessageType, - e2eListener: E2eListener - ) { - e2e.registerListener( - senderId.value, - messageType.code, - e2eListener - ) - } - - override fun reset(contact: Contact): RoundId { - return RoundId( - e2e.reset(contact.value) - ) - } - - override fun sendRequest( - contact: Contact, - myFactsList: FactsList - ): RoundId { - return RoundId( - e2e.request(contact.value, myFactsList.value) - ) - } - - override fun verifyOwnership( - receivedUserId: UserId, - verifiedContact: Contact, - e2eHandler: E2eHandler - ): Boolean { - return e2e.verifyOwnership( - receivedUserId.value, - verifiedContact.value, - e2eHandler.value - ) - } - - override fun sendE2e( - messageType: MessageType, - receiverId: UserId, - payload: Payload, - params: E2eParams - ): SendReport { - return SendReport( - e2e.sendE2E( - messageType.code, - receiverId.value, - payload.value, - params.value - ) - ) - } -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/bindings/data/GroupChat.kt b/app/src/main/java/io/elixxir/dapp/bindings/data/GroupChat.kt deleted file mode 100644 index ff2d4d85dc13963b169eca4d310649f2f3daa343..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/data/GroupChat.kt +++ /dev/null @@ -1,14 +0,0 @@ -package io.elixxir.dapp.bindings.data - -import io.elixxir.dapp.bindings.model.GroupInfo -import io.elixxir.dapp.bindings.model.GroupReport -import io.elixxir.dapp.group.model.Group -import io.elixxir.dapp.group.model.GroupId - -internal interface GroupChat { - fun getGroup(groupId: GroupId): Group - fun joinGroup(trackedGroupId: Long) - fun leaveGroup(groupId: GroupId) - fun makeGroup(info: GroupInfo): GroupReport - fun resendInvitations(group: Group): GroupReport -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/bindings/data/GroupChatAdapter.kt b/app/src/main/java/io/elixxir/dapp/bindings/data/GroupChatAdapter.kt deleted file mode 100644 index 277bc79934ddb01b67f6d5fcafd91a4b67483845..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/data/GroupChatAdapter.kt +++ /dev/null @@ -1,37 +0,0 @@ -package io.elixxir.dapp.bindings.data - -import io.elixxir.dapp.bindings.model.GroupAdapter -import io.elixxir.dapp.bindings.model.GroupInfo -import io.elixxir.dapp.bindings.model.GroupReport -import io.elixxir.dapp.group.model.Group -import io.elixxir.dapp.group.model.GroupId -import bindings.GroupChat as CoreGroupChat - -internal class GroupChatAdapter(private val groupChat: CoreGroupChat) : GroupChat { - override fun getGroup(groupId: GroupId): Group { - return GroupAdapter(groupChat.getGroup(groupId.value)) - } - - override fun joinGroup(trackedGroupId: Long) { - groupChat.joinGroup(trackedGroupId) - } - - override fun leaveGroup(groupId: GroupId) { - groupChat.leaveGroup(groupId.value) - } - - override fun makeGroup(info: GroupInfo): GroupReport { - return GroupReport( - groupChat.makeGroup( - info.membershipData.value, - info.description.toByteArray(), - info.name.toByteArray()) - ) - } - - override fun resendInvitations(group: Group): GroupReport { - return GroupReport( - groupChat.resendRequest(group.groupId.value) - ) - } -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/bindings/data/UdListener.kt b/app/src/main/java/io/elixxir/dapp/bindings/data/UdListener.kt deleted file mode 100644 index 5a5132de556ea0fca521f2d32b9921922e29a81d..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/data/UdListener.kt +++ /dev/null @@ -1,35 +0,0 @@ -package io.elixxir.dapp.bindings.data - -import io.elixxir.dapp.bindings.model.Contact - -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 diff --git a/app/src/main/java/io/elixxir/dapp/bindings/data/UserDiscovery.kt b/app/src/main/java/io/elixxir/dapp/bindings/data/UserDiscovery.kt deleted file mode 100644 index 124a9bb25130f0e64f3d1bc8cc1f5a60a85a5138..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/data/UserDiscovery.kt +++ /dev/null @@ -1,38 +0,0 @@ -package io.elixxir.dapp.bindings.data - -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 - - fun getFacts(): FactsList - - fun registerUsername(username: String) - - fun registerEmail(email: String): ConfirmationId - - fun registerPhone(phone: String): ConfirmationId - - fun confirmTwoFactorAuth( - confirmationId: ConfirmationId, - confirmationCode: ConfirmationCode - ) - - fun removeEmail() - - 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 diff --git a/app/src/main/java/io/elixxir/dapp/bindings/data/UserDiscoveryAdapter.kt b/app/src/main/java/io/elixxir/dapp/bindings/data/UserDiscoveryAdapter.kt deleted file mode 100644 index 9b1161b1a18f3c94af299ef92649e38d98006382..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/data/UserDiscoveryAdapter.kt +++ /dev/null @@ -1,103 +0,0 @@ -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 -internal value class UserDiscoveryAdapter(private val ud: CoreUserDiscovery) : UserDiscovery { - - override fun getContact(): Contact { - return Contact(ud.contact) - } - - override fun getFacts(): FactsList { - return FactsList(ud.facts) - } - - override fun registerUsername(username: String) { - TODO("Not yet implemented") - } - - override fun registerEmail(email: String): ConfirmationId{ - return ConfirmationId( - ud.sendRegisterFact(Fact.placeholder) - ) - } - - override fun registerPhone(phone: String): ConfirmationId { - return ConfirmationId( - ud.sendRegisterFact(Fact.placeholder) - ) - } - - override fun confirmTwoFactorAuth( - confirmationId: ConfirmationId, - confirmationCode: ConfirmationCode - ) { - ud.confirmFact( - confirmationId.value, - confirmationCode.value - ) - } - - override fun removeEmail() { - ud.removeFact(Fact.placeholder) - } - - override fun removePhone() { - ud.removeFact(Fact.placeholder) - } - - 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 diff --git a/app/src/main/java/io/elixxir/dapp/bindings/model/AuthenticatedConnection.kt b/app/src/main/java/io/elixxir/dapp/bindings/model/AuthenticatedConnection.kt deleted file mode 100644 index 72b5c6ae5e9791c035fa9e11b4260836416aa066..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/model/AuthenticatedConnection.kt +++ /dev/null @@ -1,5 +0,0 @@ -package io.elixxir.dapp.bindings.model - -internal interface AuthenticatedConnection : Connection { - fun isAuthenticated() -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/bindings/model/CmixId.kt b/app/src/main/java/io/elixxir/dapp/bindings/model/CmixId.kt deleted file mode 100644 index 4978a8f2da2e36bf6d08590829bed89fd01248a0..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/model/CmixId.kt +++ /dev/null @@ -1,9 +0,0 @@ -package io.elixxir.dapp.bindings.model - -@JvmInline -value class CmixId(val value: Long) { - - companion object { - val placeholder: Long = 0 - } -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/bindings/model/CmixParams.kt b/app/src/main/java/io/elixxir/dapp/bindings/model/CmixParams.kt deleted file mode 100644 index 9667fd5b108437f3b42c14ba256694d1149ce8a0..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/model/CmixParams.kt +++ /dev/null @@ -1,9 +0,0 @@ -package io.elixxir.dapp.bindings.model - -@JvmInline -value class CmixParams(val value: ByteArray) { - - companion object { - val placeholder = byteArrayOf() - } -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/bindings/model/ConfirmationCode.kt b/app/src/main/java/io/elixxir/dapp/bindings/model/ConfirmationCode.kt deleted file mode 100644 index 1ba08f6e9674a1fe1d074cd0f29cfa636f9314e3..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/model/ConfirmationCode.kt +++ /dev/null @@ -1,4 +0,0 @@ -package io.elixxir.dapp.bindings.model - -@JvmInline -value class ConfirmationCode(val value: String) \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/bindings/model/ConfirmationId.kt b/app/src/main/java/io/elixxir/dapp/bindings/model/ConfirmationId.kt deleted file mode 100644 index dee10cb12ab517d2de7313bb00202fd811c09186..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/model/ConfirmationId.kt +++ /dev/null @@ -1,4 +0,0 @@ -package io.elixxir.dapp.bindings.model - -@JvmInline -value class ConfirmationId(val value: String) \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/bindings/model/Connection.kt b/app/src/main/java/io/elixxir/dapp/bindings/model/Connection.kt deleted file mode 100644 index de4edff39b2bd0a1bf8d9ee45fc690c3da892e77..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/model/Connection.kt +++ /dev/null @@ -1,9 +0,0 @@ -package io.elixxir.dapp.bindings.model - -internal interface Connection { - fun getId(): Long - fun getPartner(): ByteArray - fun registerListener() - fun sendE2e() - fun close() -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/bindings/model/ConnectionAdapter.kt b/app/src/main/java/io/elixxir/dapp/bindings/model/ConnectionAdapter.kt deleted file mode 100644 index 28342c5b161a910f20dd4e1ac89d43662f180f3b..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/model/ConnectionAdapter.kt +++ /dev/null @@ -1,26 +0,0 @@ -package io.elixxir.dapp.bindings.model - -import bindings.Connection as CoreConnection - -@JvmInline -value class ConnectionAdapter(private val connection: CoreConnection) : Connection { - override fun getId(): Long { - TODO("Not yet implemented") - } - - override fun getPartner(): ByteArray { - TODO("Not yet implemented") - } - - override fun registerListener() { - TODO("Not yet implemented") - } - - override fun sendE2e() { - TODO("Not yet implemented") - } - - override fun close() { - TODO("Not yet implemented") - } -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/bindings/model/Contact.kt b/app/src/main/java/io/elixxir/dapp/bindings/model/Contact.kt deleted file mode 100644 index 86b5a5c6e978ba3d028bde03d307e5edfa48fac3..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/model/Contact.kt +++ /dev/null @@ -1,9 +0,0 @@ -package io.elixxir.dapp.bindings.model - -@JvmInline -internal value class Contact(val value: ByteArray) { - - companion object { - val placeholder: ByteArray = byteArrayOf() - } -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/bindings/model/E2eHandler.kt b/app/src/main/java/io/elixxir/dapp/bindings/model/E2eHandler.kt deleted file mode 100644 index c184ee9a20eb07a1dea3bcf49099191fc1fb540f..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/model/E2eHandler.kt +++ /dev/null @@ -1,4 +0,0 @@ -package io.elixxir.dapp.bindings.model - -@JvmInline -internal value class E2eHandler(val value: Long) \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/bindings/model/E2eId.kt b/app/src/main/java/io/elixxir/dapp/bindings/model/E2eId.kt deleted file mode 100644 index 2810ce3867490c0a0aad4f41086f0bb684237fe1..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/model/E2eId.kt +++ /dev/null @@ -1,9 +0,0 @@ -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 diff --git a/app/src/main/java/io/elixxir/dapp/bindings/model/E2eListener.kt b/app/src/main/java/io/elixxir/dapp/bindings/model/E2eListener.kt deleted file mode 100644 index 07f58d8c6cd8fbb571f56da39d57f1269fea8254..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/model/E2eListener.kt +++ /dev/null @@ -1,5 +0,0 @@ -package io.elixxir.dapp.bindings.model - -import bindings.Listener - -internal interface E2eListener : Listener \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/bindings/model/E2eParams.kt b/app/src/main/java/io/elixxir/dapp/bindings/model/E2eParams.kt deleted file mode 100644 index cd0fc1c3f6bffe109eb57f7c2fc1328691fdb7b3..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/model/E2eParams.kt +++ /dev/null @@ -1,4 +0,0 @@ -package io.elixxir.dapp.bindings.model - -@JvmInline -internal value class E2eParams(val value: ByteArray) \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/bindings/model/Fact.kt b/app/src/main/java/io/elixxir/dapp/bindings/model/Fact.kt deleted file mode 100644 index 86b9b915f506d762c0cc7c254a7025b33e9784ab..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/model/Fact.kt +++ /dev/null @@ -1,9 +0,0 @@ -package io.elixxir.dapp.bindings.model - -@JvmInline -internal value class Fact(val value: ByteArray) { - - companion object { - val placeholder: ByteArray = Fact(byteArrayOf()).value - } -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/bindings/model/FactsList.kt b/app/src/main/java/io/elixxir/dapp/bindings/model/FactsList.kt deleted file mode 100644 index fa3a49c24bc4a1e79f9885f26ddbb2528b08e5c9..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/model/FactsList.kt +++ /dev/null @@ -1,9 +0,0 @@ -package io.elixxir.dapp.bindings.model - -@JvmInline -internal value class FactsList(val value: ByteArray) { - - companion object { - val placeholder: ByteArray = byteArrayOf() - } -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/bindings/model/FileTransferParams.kt b/app/src/main/java/io/elixxir/dapp/bindings/model/FileTransferParams.kt deleted file mode 100644 index fc7cf4d6ebab8f04b69400d980eea505dbe3583e..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/model/FileTransferParams.kt +++ /dev/null @@ -1,9 +0,0 @@ -package io.elixxir.dapp.bindings.model - -@JvmInline -value class FileTransferParams(val value: ByteArray) { - - companion object { - val plaeholder = byteArrayOf() - } -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/bindings/model/GroupAdapter.kt b/app/src/main/java/io/elixxir/dapp/bindings/model/GroupAdapter.kt deleted file mode 100644 index 07a97a7dd461756db4966f651cd4f6e2f5ed3908..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/model/GroupAdapter.kt +++ /dev/null @@ -1,20 +0,0 @@ -package io.elixxir.dapp.bindings.model - -import io.elixxir.dapp.group.model.Group -import io.elixxir.dapp.group.model.GroupId -import io.elixxir.dapp.user.model.User -import bindings.Group as CoreGroup - -@JvmInline -internal value class GroupAdapter(val value: CoreGroup): Group { - override val groupId: GroupId - get() = GroupId(value.id) - override val name: String - get() = String(value.name) - override val description: String - get() = String(value.initMessage) - override val members: List<User> - get() = listOf() - override val creator: User - get() = User.placeholder -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/bindings/model/GroupInfo.kt b/app/src/main/java/io/elixxir/dapp/bindings/model/GroupInfo.kt deleted file mode 100644 index 84b84ddc462d0d106fa3540432617f7529acdae0..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/model/GroupInfo.kt +++ /dev/null @@ -1,7 +0,0 @@ -package io.elixxir.dapp.bindings.model - -internal data class GroupInfo( - val membershipData: GroupMembership, - val description: String, - val name: String -) \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/bindings/model/GroupMembership.kt b/app/src/main/java/io/elixxir/dapp/bindings/model/GroupMembership.kt deleted file mode 100644 index 04c32bf12a8c43c125e569625d0256a9e3c00238..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/model/GroupMembership.kt +++ /dev/null @@ -1,4 +0,0 @@ -package io.elixxir.dapp.bindings.model - -@JvmInline -internal value class GroupMembership(val value: ByteArray) \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/bindings/model/GroupReport.kt b/app/src/main/java/io/elixxir/dapp/bindings/model/GroupReport.kt deleted file mode 100644 index c70edbb833711757ee5d25fbcb4cec8cef6abc2c..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/model/GroupReport.kt +++ /dev/null @@ -1,4 +0,0 @@ -package io.elixxir.dapp.bindings.model - -@JvmInline -internal value class GroupReport(val value: ByteArray) \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/bindings/model/HealthCallback.kt b/app/src/main/java/io/elixxir/dapp/bindings/model/HealthCallback.kt deleted file mode 100644 index bc5aec42b9d98577f51da4b26cdc19228eaac4d3..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/model/HealthCallback.kt +++ /dev/null @@ -1,24 +0,0 @@ -package io.elixxir.dapp.bindings.model - -internal interface NetworkHealthListener { - fun onHealthChanged(isHealthy: Boolean) -} - -internal class HealthCallbackAdapter( - private val listener: NetworkHealthListener -) : NetworkHealthListener by listener, - bindings.NetworkHealthCallback -{ - override fun callback(isHealthy: Boolean) { - onHealthChanged(isHealthy) - } - - companion object { - val placeholder: HealthCallbackAdapter = - HealthCallbackAdapter( - object : NetworkHealthListener { - override fun onHealthChanged(isHealthy: Boolean) { } - } - ) - } -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/bindings/model/HealthListenerId.kt b/app/src/main/java/io/elixxir/dapp/bindings/model/HealthListenerId.kt deleted file mode 100644 index 5034d6810b296e4fb05643409eb1b3c8fafc07c9..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/model/HealthListenerId.kt +++ /dev/null @@ -1,4 +0,0 @@ -package io.elixxir.dapp.bindings.model - -@JvmInline -internal value class HealthListenerId(val value: Long) \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/bindings/model/LookupId.kt b/app/src/main/java/io/elixxir/dapp/bindings/model/LookupId.kt deleted file mode 100644 index 928bf0491d37544a3550318cfabdf704126824cb..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/model/LookupId.kt +++ /dev/null @@ -1,9 +0,0 @@ -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 diff --git a/app/src/main/java/io/elixxir/dapp/bindings/model/MessageType.kt b/app/src/main/java/io/elixxir/dapp/bindings/model/MessageType.kt deleted file mode 100644 index c72785377958e613dba8694708ffaf9a796d0c03..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/model/MessageType.kt +++ /dev/null @@ -1,23 +0,0 @@ -package io.elixxir.dapp.bindings.model - -internal enum class MessageType(val code: Long) { - NoType(0), - XxMessage(2), - KeyExchangeTrigger(30), - KeyExchangeConfirm(31), - KeyExchangeTriggerEphemeral(32), - KeyExchangeConfirmEphemeral(33), - E2eClose(34), - GroupCreationRequest(40), - NewFileTransfer(50), - EndFileTransfer(51), - ConnectionAuthenticationRequest(60); - - companion object { - fun from(code: Long): MessageType { - return values().firstOrNull { - it.code == code - } ?: throw(IllegalArgumentException("Invalid code")) - } - } -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/bindings/model/NetworkFollowerStatus.kt b/app/src/main/java/io/elixxir/dapp/bindings/model/NetworkFollowerStatus.kt deleted file mode 100644 index fdc5058d5782df2f9c14a203dc6a379f5afb4f04..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/model/NetworkFollowerStatus.kt +++ /dev/null @@ -1,12 +0,0 @@ -package io.elixxir.dapp.bindings.model - -internal enum class NetworkFollowerStatus(val code: Long) { - STOPPED(0), - STARTING(1000), - RUNNING(2000), - STOPPING(3000); - - companion object { - fun from(code: Long) = values().first { it.code == code } - } -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/bindings/model/NodeRegistrationStatus.kt b/app/src/main/java/io/elixxir/dapp/bindings/model/NodeRegistrationStatus.kt deleted file mode 100644 index 620eee54a3914d7de4577827aa5882f7f6a01ee7..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/model/NodeRegistrationStatus.kt +++ /dev/null @@ -1,4 +0,0 @@ -package io.elixxir.dapp.bindings.model - -@JvmInline -internal value class NodeRegistrationStatus(val value: ByteArray) \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/bindings/model/PartnersList.kt b/app/src/main/java/io/elixxir/dapp/bindings/model/PartnersList.kt deleted file mode 100644 index c040838a3ecf90d655185b1fb5205a54891501b2..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/model/PartnersList.kt +++ /dev/null @@ -1,4 +0,0 @@ -package io.elixxir.dapp.bindings.model - -@JvmInline -internal value class PartnersList(val value: ByteArray) \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/bindings/model/Payload.kt b/app/src/main/java/io/elixxir/dapp/bindings/model/Payload.kt deleted file mode 100644 index 1901047bd5ceb496bcbf16374a8bd8bdd85206f6..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/model/Payload.kt +++ /dev/null @@ -1,4 +0,0 @@ -package io.elixxir.dapp.bindings.model - -@JvmInline -internal value class Payload(val value: ByteArray) \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/bindings/model/ReceptionIdentity.kt b/app/src/main/java/io/elixxir/dapp/bindings/model/ReceptionIdentity.kt deleted file mode 100644 index 313a564aaf07e932da7ea052cb3160e3f8a2dc1e..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/model/ReceptionIdentity.kt +++ /dev/null @@ -1,4 +0,0 @@ -package io.elixxir.dapp.bindings.model - -@JvmInline -internal value class ReceptionIdentity(val value: ByteArray) diff --git a/app/src/main/java/io/elixxir/dapp/bindings/model/RegistrationValidationSignature.kt b/app/src/main/java/io/elixxir/dapp/bindings/model/RegistrationValidationSignature.kt deleted file mode 100644 index 5609b0185dfde3ba9dca9cd3e96a0101f9ed340b..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/model/RegistrationValidationSignature.kt +++ /dev/null @@ -1,4 +0,0 @@ -package io.elixxir.dapp.bindings.model - -@JvmInline -value class RegistrationValidationSignature(val value: ByteArray) \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/bindings/model/Request.kt b/app/src/main/java/io/elixxir/dapp/bindings/model/Request.kt deleted file mode 100644 index b1bc8a67e0c28e17f69407d63bc174316f992dc1..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/model/Request.kt +++ /dev/null @@ -1,4 +0,0 @@ -package io.elixxir.dapp.bindings.model - -@JvmInline -internal value class Request(val value: ByteArray) \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/bindings/model/RoundId.kt b/app/src/main/java/io/elixxir/dapp/bindings/model/RoundId.kt deleted file mode 100644 index e88ff523684c705974bbf21696564551243c70a7..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/model/RoundId.kt +++ /dev/null @@ -1,4 +0,0 @@ -package io.elixxir.dapp.bindings.model - -@JvmInline -value class RoundId(val value: Long) \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/bindings/model/SearchParams.kt b/app/src/main/java/io/elixxir/dapp/bindings/model/SearchParams.kt deleted file mode 100644 index 90cd95dc520e947d4e3d57cdfaf7aa6955bf6d97..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/model/SearchParams.kt +++ /dev/null @@ -1,9 +0,0 @@ -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 diff --git a/app/src/main/java/io/elixxir/dapp/bindings/model/SendReport.kt b/app/src/main/java/io/elixxir/dapp/bindings/model/SendReport.kt deleted file mode 100644 index 8226a6664132985184a07368cc19854c2d6d1042..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/model/SendReport.kt +++ /dev/null @@ -1,4 +0,0 @@ -package io.elixxir.dapp.bindings.model - -@JvmInline -internal value class SendReport(val value: ByteArray) \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/bindings/model/UdAddress.kt b/app/src/main/java/io/elixxir/dapp/bindings/model/UdAddress.kt deleted file mode 100644 index c0f1b03d7ca22458cc3988bcf93a12eeceefadcf..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/model/UdAddress.kt +++ /dev/null @@ -1,4 +0,0 @@ -package io.elixxir.dapp.bindings.model - -@JvmInline -value class UdIpAddress(val value: String) \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/bindings/model/UdCertificate.kt b/app/src/main/java/io/elixxir/dapp/bindings/model/UdCertificate.kt deleted file mode 100644 index f4b9aa8f64ac56913a3d2dacfb4187709d3ba5f3..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/bindings/model/UdCertificate.kt +++ /dev/null @@ -1,4 +0,0 @@ -package io.elixxir.dapp.bindings.model - -@JvmInline -value class UdCertificate(val value: ByteArray) \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/group/model/Group.kt b/app/src/main/java/io/elixxir/dapp/group/model/Group.kt deleted file mode 100644 index 6e97e6a94ce0c84a2d9c1cba75e7c31f8029a9bc..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/group/model/Group.kt +++ /dev/null @@ -1,11 +0,0 @@ -package io.elixxir.dapp.group.model - -import io.elixxir.dapp.user.model.User - -interface Group { - val groupId: GroupId - val name: String - val description: String - val members: List<User> - val creator: User -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/group/model/GroupId.kt b/app/src/main/java/io/elixxir/dapp/group/model/GroupId.kt deleted file mode 100644 index 8cd1a184f4d5ae548a42e32238e292575ff1c39b..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/group/model/GroupId.kt +++ /dev/null @@ -1,4 +0,0 @@ -package io.elixxir.dapp.group.model - -@JvmInline -value class GroupId(val value: ByteArray) \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/logger/data/Logger.kt b/app/src/main/java/io/elixxir/dapp/logger/data/Logger.kt deleted file mode 100644 index c2dd325844c7ade7fb7a03a358266dac4fb11e69..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/logger/data/Logger.kt +++ /dev/null @@ -1,23 +0,0 @@ -package io.elixxir.dapp.logger.data - -import io.elixxir.dapp.logger.model.LoggerConfig -import io.elixxir.dapp.logger.model.LogLevel - -internal interface Logger { - val config: LoggerConfig - - fun logFatal(message: String) = log(message, LogLevel.Fatal) - fun logError(message: String) = log(message, LogLevel.Error) - fun logWarn(message: String) = log(message, LogLevel.Warn) - fun log(message: String, level: LogLevel = LogLevel.Debug): () -> Unit = { - if (config.logLevel <= level) { - config.logWriter(message) - } - } - - companion object { - fun newInstance(config: LoggerConfig) = object : Logger { - override val config: LoggerConfig = config - } - } -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/logger/data/NoLogging.kt b/app/src/main/java/io/elixxir/dapp/logger/data/NoLogging.kt deleted file mode 100644 index 064485546ec7380173bdb81b54609b38c4fd9561..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/logger/data/NoLogging.kt +++ /dev/null @@ -1,9 +0,0 @@ -package io.elixxir.dapp.logger.data - -import io.elixxir.dapp.logger.model.LogLevel -import io.elixxir.dapp.logger.model.LoggerConfig - -data class NoLogging( - override val logLevel: LogLevel = LogLevel.None, - override val logWriter: (String) -> Unit = {} -) : LoggerConfig \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/logger/data/Timber.kt b/app/src/main/java/io/elixxir/dapp/logger/data/Timber.kt deleted file mode 100644 index cc1eb579fc360df1ed21976d42dcae289c31ce70..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/logger/data/Timber.kt +++ /dev/null @@ -1,10 +0,0 @@ -package io.elixxir.dapp.logger.data - -import io.elixxir.dapp.logger.model.LoggerConfig -import io.elixxir.dapp.logger.model.LogLevel -import timber.log.Timber - -internal data class Timber( - override val logLevel: LogLevel = LogLevel.Debug, - override val logWriter: (String) -> Unit = { Timber.v(it) } -) : LoggerConfig diff --git a/app/src/main/java/io/elixxir/dapp/logger/model/LoggerConfig.kt b/app/src/main/java/io/elixxir/dapp/logger/model/LoggerConfig.kt deleted file mode 100644 index ee5b449e77f1c6152394697ed546032cdcf0e3c9..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/logger/model/LoggerConfig.kt +++ /dev/null @@ -1,10 +0,0 @@ -package io.elixxir.dapp.logger.model - -/** - * Responsible for routing helpful output of [logLevel] severity or greater - * to the provided [logWriter]. - */ -interface LoggerConfig { - val logLevel: LogLevel - val logWriter: (String) -> Unit -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/messaging/model/Message.kt b/app/src/main/java/io/elixxir/dapp/messaging/model/Message.kt deleted file mode 100644 index 964cb63562895b09215faefe4d616ff62301c649..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/messaging/model/Message.kt +++ /dev/null @@ -1,4 +0,0 @@ -package io.elixxir.dapp.messaging.model - -interface Message { -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/network/data/NetworkManager.kt b/app/src/main/java/io/elixxir/dapp/network/data/NetworkManager.kt deleted file mode 100644 index 7bdcf4d1e28ddc440563e5bfdde6a113893959a6..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/network/data/NetworkManager.kt +++ /dev/null @@ -1,94 +0,0 @@ -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.api.model.CommonProperties -import io.elixxir.dapp.network.model.* -import io.elixxir.dapp.network.repository.NdfDataSource -import io.elixxir.dapp.session.model.* -import io.elixxir.dapp.session.repository.SessionKeyStore -import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.MutableStateFlow -import kotlinx.coroutines.withContext - -internal interface NetworkManager { - val connectionStatus: Flow<ConnectionStatus> -} - -internal class DappNetworkManager private constructor( - properties: CommonProperties, - keyStore: SessionKeyStore, - ndfSource: NdfDataSource -): NetworkManager, CommonProperties by properties { - - override val connectionStatus: Flow<ConnectionStatus> by ::_connectionStatus - private val _connectionStatus: MutableStateFlow<ConnectionStatus> = - MutableStateFlow(ConnectionStatus.DISCONNECTED) - - fun login( - cmixId: Long, - authCallbacks: AuthCallbacksAdapter, - identity: ReceptionIdentity, - e2eParamsJson: E2eParams - ): E2e { - return E2eAdapter( - Bindings.login(cmixId, authCallbacks.value, identity.value, e2eParamsJson.value) - ) - } - - fun newCmix( - ndfJson: String, - sessionFolderPath: String, - sessionPassword: SessionPassword, - registrationCode: String - ) { - Bindings.newCmix( - ndfJson, - sessionFolderPath, - sessionPassword.value, - registrationCode - ) - } - - suspend fun loadCmix( - sessionFolderPath: String, - sessionPassword: SessionPassword, - cmixParamsJson: E2eParams - ): CmixAdapter = withContext(dispatcher) { - CmixAdapter( - Bindings.loadCmix(sessionFolderPath, sessionPassword.value, cmixParamsJson.value) - ) - } - - fun createIdentity(): ReceptionIdentity { - return ReceptionIdentity( - Cmix().makeReceptionIdentity() - ) - } - - fun initNetworkFollower() { - - } - - fun stopNetworkFollower() { - - } - - fun initUserDiscovery() { - - } - - companion object { - internal fun newInstance( - properties: CommonProperties, - keyStore: SessionKeyStore, - ndfSource: NdfDataSource - ) = DappNetworkManager(properties, keyStore, ndfSource) - } -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/network/model/ConnectionStatus.kt b/app/src/main/java/io/elixxir/dapp/network/model/ConnectionStatus.kt deleted file mode 100644 index 39e8f6061b41f12b97efd6610d9877c3c1da9507..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/network/model/ConnectionStatus.kt +++ /dev/null @@ -1,5 +0,0 @@ -package io.elixxir.dapp.network.model - -enum class ConnectionStatus { - DISCONNECTED, CONNECTING, CONNECTED -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/network/model/NetworkConfig.kt b/app/src/main/java/io/elixxir/dapp/network/model/NetworkConfig.kt deleted file mode 100644 index 849714c06433d21bd316f5351e25e4457d0fa086..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/network/model/NetworkConfig.kt +++ /dev/null @@ -1,41 +0,0 @@ -package io.elixxir.dapp.network.model - -import androidx.annotation.RawRes -import io.elixxir.dapp.R -import io.elixxir.dapp.api.model.CriticalRemoteDataStrategy -import io.elixxir.dapp.api.model.RetryStrategy - -interface NetworkConfig { - val environment: Environment get() = Environment.MainNet - val retryStrategy: RetryStrategy get() = CriticalRemoteDataStrategy() -} - -internal abstract class NdfSettings : NetworkConfig { - abstract val ndfUrl: String - abstract val certificateRef: Int - - companion object { - fun create(config: NetworkConfig): NdfSettings { - return when (config.environment) { - Environment.MainNet -> MainNet(config.retryStrategy) - Environment.ReleaseNet -> ReleaseNet(config.retryStrategy) - } - } - } -} - -internal data class MainNet( - override val retryStrategy: RetryStrategy, - override val ndfUrl: String = - "https://elixxir-bins.s3.us-west-1.amazonaws.com/ndf/mainnet.json", - @RawRes - override val certificateRef: Int = R.raw.mainnet, -) : NdfSettings() - -internal data class ReleaseNet( - override val retryStrategy: RetryStrategy, - override val ndfUrl: String = - "https://elixxir-bins.s3.us-west-1.amazonaws.com/ndf/release.json", - @RawRes - override val certificateRef: Int = R.raw.release -) : NdfSettings() \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/network/repository/NdfDataSource.kt b/app/src/main/java/io/elixxir/dapp/network/repository/NdfDataSource.kt deleted file mode 100644 index d62d49d2fa95999033ee896c036518966ac761fb..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/network/repository/NdfDataSource.kt +++ /dev/null @@ -1,61 +0,0 @@ -package io.elixxir.dapp.network.repository - -import androidx.annotation.RawRes -import io.elixxir.dapp.api.model.CommonProperties -import io.elixxir.dapp.api.model.RetryStrategy -import io.elixxir.dapp.bindings.data.Bindings -import io.elixxir.dapp.network.model.NdfSettings -import kotlinx.coroutines.* -typealias Ndf = String - -internal interface NdfDataSource { - suspend fun fetchNdf(): Ndf -} - -internal class RemoteNdfDataSource private constructor( - properties: CommonProperties, - private val settings: NdfSettings, - private val bindings: Bindings -) : NdfDataSource, - CommonProperties by properties, - RetryStrategy by settings.retryStrategy -{ - - override suspend fun fetchNdf(): Ndf { - return retryFetchNdf() - } - - private suspend fun retryFetchNdf(retries: Int = 0): Ndf = withContext(dispatcher) { - val ndf = downloadAndVerifySignedNdfWithUrl( - settings.ndfUrl, - readCertificate(settings.certificateRef) - ) - - if (ndf.isEmpty() && retries <= maxRetries) { - ensureActive() - delay(retryDelayMs) - retryFetchNdf(retries + 1) - } else { - ndf - } - } - - private fun downloadAndVerifySignedNdfWithUrl( - url: String, - certificate: String - ): Ndf = bindings.fetchSignedNdf(url, certificate) - - private fun readCertificate(@RawRes certRef: Int): String { - val reader= context().resources.openRawResource(certRef) - .bufferedReader() - return reader.use { reader.readText() } - } - - companion object { - internal fun newInstance( - properties: CommonProperties, - settings: NdfSettings, - bindings: Bindings - ) = RemoteNdfDataSource(properties, settings, bindings) - } -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/preferences/KeyStorePreferences.kt b/app/src/main/java/io/elixxir/dapp/preferences/KeyStorePreferences.kt deleted file mode 100644 index 6ab3d5799d7bcb80bb2d7fda00321012cbbac567..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/preferences/KeyStorePreferences.kt +++ /dev/null @@ -1,5 +0,0 @@ -package io.elixxir.dapp.preferences - -interface KeyStorePreferences { - var password: String -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/request/model/Request.kt b/app/src/main/java/io/elixxir/dapp/request/model/Request.kt deleted file mode 100644 index 2d6ca6ef3e8588793ef2cf2883f48dbcd968621f..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/request/model/Request.kt +++ /dev/null @@ -1,8 +0,0 @@ -package io.elixxir.dapp.request.model - -interface Request { -} - -interface OutgoingRequest : Request -interface IncomingRequest: Request -interface RequestConfirmation: Request \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/session/model/SecureHardwareException.kt b/app/src/main/java/io/elixxir/dapp/session/model/SecureHardwareException.kt deleted file mode 100644 index 2475ec6abf4643bc691cb4d040a0937d74b6aed2..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/session/model/SecureHardwareException.kt +++ /dev/null @@ -1,6 +0,0 @@ -package io.elixxir.dapp.session.model - -class SecureHardwareException : Exception() { - override val message: String - get() = "OS is not hardware-backed and require secure hardware is enabled." -} diff --git a/app/src/main/java/io/elixxir/dapp/session/model/SessionPassword.kt b/app/src/main/java/io/elixxir/dapp/session/model/SessionPassword.kt deleted file mode 100644 index 8dfddc9fee4259416d3ffe3e1fde7cdabbdc655b..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/session/model/SessionPassword.kt +++ /dev/null @@ -1,4 +0,0 @@ -package io.elixxir.dapp.session.model - -@JvmInline -value class SessionPassword(val value: ByteArray) \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/session/repository/SessionDataSource.kt b/app/src/main/java/io/elixxir/dapp/session/repository/SessionDataSource.kt deleted file mode 100644 index 3f316d7f3800ed962dc298ed1081d614dd7d521e..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/session/repository/SessionDataSource.kt +++ /dev/null @@ -1,88 +0,0 @@ -package io.elixxir.dapp.session.repository - -import java.io.File -import io.elixxir.dapp.api.model.CommonProperties -import kotlinx.coroutines.* - -/** - * Responsible for creation, deletion & storage of folder used to persist - * Cmix session. - */ -internal interface SessionDataSource { - val sessionFolder: File - - fun doesSessionExist(): Boolean - - /** - * Only needs to be created once per app installation. - * Return the [sessionFolder] if successful. - */ - suspend fun createSession(): Result<File> - - /** - * Should be called during account deletion. - */ - suspend fun deleteSession(): Result<Unit> - - /** - * Restore session - */ - suspend fun restoreSession(): Result<Unit> -} - -internal class LocalSessionDataSource private constructor( - properties: CommonProperties -) : SessionDataSource, CommonProperties by properties { - - override val sessionFolder: File get() { - return try { - File(context().filesDir, "cmix/session") - } catch (e: Exception) { - logFatal(e.message ?: "Couldn't access filesDir.") - throw e - } - } - - override fun doesSessionExist(): Boolean = sessionFolder.exists() - - override suspend fun createSession(): Result<File> = withContext(dispatcher) { - try { - Result.success(createSessionFolder()) - } catch (e: Exception) { - Result.failure(e) - } - } - - private fun createSessionFolder(): File { - return sessionFolder.apply { - if (exists()) { - log("Session folder from previous installation was found.") - log("It contains ${listFiles()?.size ?: 0} files.") - log("Deleting!") - deleteRecursively() - } - mkdir() - log("Session folder successfully created at: $absolutePath") - } - } - - override suspend fun deleteSession(): Result<Unit> = withContext(dispatcher) { - try { - if (sessionFolder.deleteRecursively()) { - Result.success(Unit) - } else { - Result.failure(Exception("Failed to delete all files.")) - } - } catch (e: Exception) { - Result.failure(e) - } - } - - override suspend fun restoreSession(): Result<Unit> { - TODO("Not yet implemented") - } - - companion object { - internal fun newInstance(properties: CommonProperties) = LocalSessionDataSource(properties) - } -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/session/repository/SessionKeyStore.kt b/app/src/main/java/io/elixxir/dapp/session/repository/SessionKeyStore.kt deleted file mode 100644 index 0607c31fb2eb2b86c84347e4cc86a2b4bfc5dc64..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/session/repository/SessionKeyStore.kt +++ /dev/null @@ -1,238 +0,0 @@ -package io.elixxir.dapp.session.repository - -import android.os.Build -import android.security.keystore.KeyGenParameterSpec -import android.security.keystore.KeyInfo -import android.security.keystore.KeyProperties -import io.elixxir.dapp.api.model.CommonProperties -import io.elixxir.dapp.bindings.data.Bindings -import io.elixxir.dapp.preferences.KeyStorePreferences -import io.elixxir.dapp.session.model.SecureHardwareException -import io.elixxir.dapp.session.model.SessionPassword -import io.elixxir.dapp.util.fromBase64toByteArray -import io.elixxir.dapp.util.toBase64String -import kotlinx.coroutines.withContext -import java.security.* -import java.security.spec.MGF1ParameterSpec -import java.security.spec.RSAKeyGenParameterSpec -import javax.crypto.BadPaddingException -import javax.crypto.Cipher -import javax.crypto.IllegalBlockSizeException -import javax.crypto.NoSuchPaddingException -import javax.crypto.spec.OAEPParameterSpec -import javax.crypto.spec.PSource -import kotlin.system.measureTimeMillis - -internal interface SessionKeyStore { - suspend fun createSessionPassword(requireSecureHardware: Boolean): Result<Unit> - suspend fun rsaDecryptPassword(): SessionPassword -} - -internal class DappSessionKeystore private constructor( - properties: CommonProperties, - private val preferences: KeyStorePreferences, - private val bindings: Bindings -) : SessionKeyStore, CommonProperties by properties { - - override suspend fun createSessionPassword(requireSecureHardware: Boolean): Result<Unit> = - withContext(dispatcher) { - if (requireSecureHardware && !isHardwareBackedKeyStore()) { - return@withContext Result.failure(SecureHardwareException()) - } - - try { - deletePreviousKeys() - generateKeys() - generatePassword() - Result.success(Unit) - } catch (e: Exception) { - logError(e.message ?: "An error occured while creating session password.") - Result.failure(e) - } - } - - private fun generatePassword() { - val encryptionTime = measureTimeMillis { - val passwordLength = PASSWORD_LENGTH - log("Generating a password...") - log("Generating a password with $passwordLength bytes") - - var secret: SessionPassword - val generationTime = measureTimeMillis { - do { - secret = bindings.generateSecret(passwordLength) - log("Password (Bytearray): $secret") - log("Password (String64): ${secret.value.toBase64String()}") - - val isAllZeroes = byteArrayOf(passwordLength.toByte()).contentEquals(secret.value) - log("IsAllZeroes: $isAllZeroes") - } while (isAllZeroes) - } - log("Total generation time: $generationTime ms") - rsaEncryptPwd(secret.value) - } - log("Total encryption time: $encryptionTime ms") - } - - private fun deletePreviousKeys() { - val keystore = getKeystore() - if (keystore.containsAlias(KEY_ALIAS)) { - log("Deleting key alias") - keystore.deleteEntry(KEY_ALIAS) - } - } - - private fun checkGenerateKeys(): Boolean { - return try { - val areKeysGenerated = generateKeys() - if (areKeysGenerated) { - log("Keystore keys successfully generated") - true - } else { - log("Error generating keystore keys") - false - } - } catch (err: Exception) { - log("An error occured while generating keys.") - false - } - } - - private fun generateKeys(): Boolean { - val keystore = getKeystore() - if (!keystore.containsAlias(KEY_ALIAS)) { - log("Keystore alias does not exist, credentials") - val keyGenerator = getKeyPairGenerator() - keyGenerator.genKeyPair() - } else { - log("Keystore alias already exist") - } - - return true - } - - private fun getKeyPairGenerator(): KeyPairGenerator { - val keyGenerator = KeyPairGenerator.getInstance( - KeyProperties.KEY_ALGORITHM_RSA, "AndroidKeyStore" - ) - val keyGenParameterSpec = getKeygenParamSpec() - keyGenerator.initialize(keyGenParameterSpec) - return keyGenerator - } - - private fun getPrivateKey(): PrivateKey? { - val keyStore: KeyStore = getKeystore() - return keyStore.getKey(KEY_ALIAS, null) as PrivateKey? - } - - private fun getPublicKey(): PublicKey { - return getKeystore().getCertificate(KEY_ALIAS).publicKey - } - - private fun getKeystore(): KeyStore { - val keyStore = KeyStore.getInstance(ANDROID_KEYSTORE) - keyStore.load(null) - return keyStore - } - - private fun getKeygenParamSpec(): KeyGenParameterSpec { - val keyGenSpec = KeyGenParameterSpec.Builder( - KEY_ALIAS, - KEY_PURPOSE - ).setAlgorithmParameterSpec(RSAKeyGenParameterSpec(KEY_SIZE, RSAKeyGenParameterSpec.F4)) - .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_RSA_OAEP) - .setBlockModes(KeyProperties.BLOCK_MODE_ECB) - .setDigests(KeyProperties.DIGEST_SHA1) - .setRandomizedEncryptionRequired(true) - - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { - keyGenSpec.setUserAuthenticationParameters( - 1000, - KeyProperties.AUTH_BIOMETRIC_STRONG or KeyProperties.AUTH_DEVICE_CREDENTIAL - ) - } else { - keyGenSpec.setUserAuthenticationValidityDurationSeconds(1000) - } - - return keyGenSpec.build() - } - - @Throws( - NoSuchAlgorithmException::class, - NoSuchPaddingException::class, - InvalidKeyException::class, - IllegalBlockSizeException::class, - BadPaddingException::class - ) - private fun rsaEncryptPwd(pwd: ByteArray): ByteArray { - log("Bytecount: ${pwd.size}") - log("Before encryption: ${pwd.toBase64String()}") - val secretKey = getPublicKey() - - val cipher = Cipher.getInstance(KEYSTORE_ALGORITHM) - cipher.init(Cipher.ENCRYPT_MODE, secretKey, cipherMode) - val encryptedBytes = cipher.doFinal(pwd) - log("Encrypted: ${encryptedBytes.toBase64String()}") - preferences.password = encryptedBytes.toBase64String() - - return encryptedBytes - } - - @Throws( - NoSuchAlgorithmException::class, - NoSuchPaddingException::class, - InvalidKeyException::class, - IllegalBlockSizeException::class, - BadPaddingException::class - ) - override suspend fun rsaDecryptPassword(): SessionPassword = withContext(dispatcher) { - val encryptedBytes = preferences.password.fromBase64toByteArray() - val key = getPrivateKey() - val cipher1 = Cipher.getInstance(KEYSTORE_ALGORITHM) - println("Initializing Decrypt") - cipher1.init(Cipher.DECRYPT_MODE, key, cipherMode) - val decryptedBytes = cipher1.doFinal(encryptedBytes) - println("Decrypted: ${decryptedBytes.toBase64String()}") - - SessionPassword(decryptedBytes) - } - - private fun isHardwareBackedKeyStore(): Boolean { - return try { - val privateKey = getPrivateKey() - val keyFactory = KeyFactory.getInstance(privateKey?.algorithm, ANDROID_KEYSTORE) - val keyInfo: KeyInfo = keyFactory.getKeySpec(privateKey, KeyInfo::class.java) - val securityLevel = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { - (keyInfo.securityLevel == KeyProperties.SECURITY_LEVEL_TRUSTED_ENVIRONMENT || - keyInfo.securityLevel == KeyProperties.SECURITY_LEVEL_STRONGBOX) - } else { - keyInfo.isInsideSecureHardware - } - return securityLevel - } catch (e: Exception) { - logError(e.message ?: "An error occured while checking hardware backed key store.") - false - } - } - - companion object { - private const val KEY_ALIAS = "dAppSession" - private const val ANDROID_KEYSTORE = "AndroidKeyStore" - private const val KEY_PURPOSE = - KeyProperties.PURPOSE_SIGN or KeyProperties.PURPOSE_ENCRYPT or KeyProperties.PURPOSE_DECRYPT - private const val KEYSTORE_ALGORITHM = "RSA/ECB/OAEPWithSHA-1AndMGF1Padding" - private const val KEY_SIZE = 2048 - private val cipherMode = OAEPParameterSpec( - "SHA-1", "MGF1", - MGF1ParameterSpec.SHA1, PSource.PSpecified.DEFAULT - ) - private const val PASSWORD_LENGTH = 64L - - internal fun newInstance( - properties: CommonProperties, - preferences: KeyStorePreferences, - bindings: Bindings - ) = DappSessionKeystore(properties, preferences, bindings) - } -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/user/model/User.kt b/app/src/main/java/io/elixxir/dapp/user/model/User.kt deleted file mode 100644 index c24e22376e3aca42596669f4387cc917c91789d2..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/user/model/User.kt +++ /dev/null @@ -1,18 +0,0 @@ -package io.elixxir.dapp.user.model - -interface User { - val userId: Long - val username: String - val phone: String? - val email: String? - - companion object { - val placeholder = object : User { - override val userId: Long = 0 - override val username: String = "" - override val phone: String? = null - override val email: String? = null - - } - } -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/user/model/UserId.kt b/app/src/main/java/io/elixxir/dapp/user/model/UserId.kt deleted file mode 100644 index 92d92772ac1ef0ea51548c1cd2d53feec78c5436..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/user/model/UserId.kt +++ /dev/null @@ -1,4 +0,0 @@ -package io.elixxir.dapp.user.model - -@JvmInline -value class UserId(val value: ByteArray) \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/user/model/UserQuery.kt b/app/src/main/java/io/elixxir/dapp/user/model/UserQuery.kt deleted file mode 100644 index 0debdfb23fcd0d389c3c21fc4b2322e5018551b9..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/user/model/UserQuery.kt +++ /dev/null @@ -1,10 +0,0 @@ -package io.elixxir.dapp.user.model - -interface UserQuery { - val query: String - val queryType: QueryType - - enum class QueryType { - USERNAME, USERID, PHONE, EMAIL - } -} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/user/model/UserUpdateData.kt b/app/src/main/java/io/elixxir/dapp/user/model/UserUpdateData.kt deleted file mode 100644 index 0df45d32dc36cf7d20e9667e28d19b09916ac154..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/user/model/UserUpdateData.kt +++ /dev/null @@ -1,6 +0,0 @@ -package io.elixxir.dapp.user.model - -data class UserUpdateData( - val newPhone: String?, - val newEmail: String? -) \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/user/repository/UserDataSource.kt b/app/src/main/java/io/elixxir/dapp/user/repository/UserDataSource.kt deleted file mode 100644 index 037e4f40c06759d7da7c7c66f8448449c3a5f751..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/user/repository/UserDataSource.kt +++ /dev/null @@ -1,36 +0,0 @@ -package io.elixxir.dapp.user.repository - -import io.elixxir.dapp.bindings.data.UserDiscovery -import io.elixxir.dapp.api.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 diff --git a/app/src/main/java/io/elixxir/dapp/util/ByteArray.kt b/app/src/main/java/io/elixxir/dapp/util/ByteArray.kt deleted file mode 100644 index a7cd66b8448698fd37a215414766aebd25a9f02e..0000000000000000000000000000000000000000 --- a/app/src/main/java/io/elixxir/dapp/util/ByteArray.kt +++ /dev/null @@ -1,11 +0,0 @@ -package io.elixxir.dapp.util - -import android.util.Base64 - -fun ByteArray.toBase64String(): String { - return Base64.encodeToString(this, Base64.NO_WRAP) -} - -fun String.fromBase64toByteArray(): ByteArray { - return Base64.decode(this, Base64.NO_WRAP) -} \ No newline at end of file diff --git a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml deleted file mode 100644 index 2b068d11462a4b96669193de13a711a3a36220a0..0000000000000000000000000000000000000000 --- a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +++ /dev/null @@ -1,30 +0,0 @@ -<vector xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:aapt="http://schemas.android.com/aapt" - android:width="108dp" - android:height="108dp" - android:viewportWidth="108" - android:viewportHeight="108"> - <path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z"> - <aapt:attr name="android:fillColor"> - <gradient - android:endX="85.84757" - android:endY="92.4963" - android:startX="42.9492" - android:startY="49.59793" - android:type="linear"> - <item - android:color="#44000000" - android:offset="0.0" /> - <item - android:color="#00000000" - android:offset="1.0" /> - </gradient> - </aapt:attr> - </path> - <path - android:fillColor="#FFFFFF" - android:fillType="nonZero" - android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z" - android:strokeWidth="1" - android:strokeColor="#00000000" /> -</vector> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml deleted file mode 100644 index 07d5da9cbf141911847041df5d7b87f0dd5ef9d4..0000000000000000000000000000000000000000 --- a/app/src/main/res/drawable/ic_launcher_background.xml +++ /dev/null @@ -1,170 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="108dp" - android:height="108dp" - android:viewportWidth="108" - android:viewportHeight="108"> - <path - android:fillColor="#3DDC84" - android:pathData="M0,0h108v108h-108z" /> - <path - android:fillColor="#00000000" - android:pathData="M9,0L9,108" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M19,0L19,108" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M29,0L29,108" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M39,0L39,108" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M49,0L49,108" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M59,0L59,108" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M69,0L69,108" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M79,0L79,108" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M89,0L89,108" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M99,0L99,108" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M0,9L108,9" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M0,19L108,19" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M0,29L108,29" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M0,39L108,39" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M0,49L108,49" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M0,59L108,59" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M0,69L108,69" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M0,79L108,79" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M0,89L108,89" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M0,99L108,99" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M19,29L89,29" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M19,39L89,39" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M19,49L89,49" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M19,59L89,59" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M19,69L89,69" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M19,79L89,79" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M29,19L29,89" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M39,19L39,89" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M49,19L49,89" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M59,19L59,89" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M69,19L69,89" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M79,19L79,89" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> -</vector> diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml deleted file mode 100644 index eca70cfe52eac1ba66ba280a68ca7be8fcf88a16..0000000000000000000000000000000000000000 --- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> - <background android:drawable="@drawable/ic_launcher_background" /> - <foreground android:drawable="@drawable/ic_launcher_foreground" /> -</adaptive-icon> \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml deleted file mode 100644 index eca70cfe52eac1ba66ba280a68ca7be8fcf88a16..0000000000000000000000000000000000000000 --- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> - <background android:drawable="@drawable/ic_launcher_background" /> - <foreground android:drawable="@drawable/ic_launcher_foreground" /> -</adaptive-icon> \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/app/src/main/res/mipmap-hdpi/ic_launcher.webp deleted file mode 100644 index c209e78ecd372343283f4157dcfd918ec5165bb3..0000000000000000000000000000000000000000 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp deleted file mode 100644 index b2dfe3d1ba5cf3ee31b3ecc1ced89044a1f3b7a9..0000000000000000000000000000000000000000 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/app/src/main/res/mipmap-mdpi/ic_launcher.webp deleted file mode 100644 index 4f0f1d64e58ba64d180ce43ee13bf9a17835fbca..0000000000000000000000000000000000000000 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp deleted file mode 100644 index 62b611da081676d42f6c3f78a2c91e7bcedddedb..0000000000000000000000000000000000000000 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp deleted file mode 100644 index 948a3070fe34c611c42c0d3ad3013a0dce358be0..0000000000000000000000000000000000000000 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp deleted file mode 100644 index 1b9a6956b3acdc11f40ce2bb3f6efbd845cc243f..0000000000000000000000000000000000000000 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp deleted file mode 100644 index 28d4b77f9f036a47549d47db79c16788749dca10..0000000000000000000000000000000000000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp deleted file mode 100644 index 9287f5083623b375139afb391af71cc533a7dd37..0000000000000000000000000000000000000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp deleted file mode 100644 index aa7d6427e6fa1074b79ccd52ef67ac15c5637e85..0000000000000000000000000000000000000000 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp deleted file mode 100644 index 9126ae37cbc3587421d6889eadd1d91fbf1994d4..0000000000000000000000000000000000000000 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp and /dev/null differ diff --git a/app/src/main/res/raw/mainnet.crt b/app/src/main/res/raw/mainnet.crt deleted file mode 100644 index 096e3b5cda98b012d892d6531ab1a4696d13a457..0000000000000000000000000000000000000000 --- a/app/src/main/res/raw/mainnet.crt +++ /dev/null @@ -1,33 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIFqTCCA5GgAwIBAgIUO0qHXSeKrOMucO+Zz82Mf1Zlq4gwDQYJKoZIhvcNAQEL -BQAwgYAxCzAJBgNVBAYTAktZMRQwEgYDVQQHDAtHZW9yZ2UgVG93bjETMBEGA1UE -CgwKeHggbmV0d29yazEPMA0GA1UECwwGRGV2T3BzMRMwEQYDVQQDDAp4eC5uZXR3 -b3JrMSAwHgYJKoZIhvcNAQkBFhFhZG1pbnNAeHgubmV0d29yazAeFw0yMTEwMzAy -MjI5MjZaFw0zMTEwMjgyMjI5MjZaMIGAMQswCQYDVQQGEwJLWTEUMBIGA1UEBwwL -R2VvcmdlIFRvd24xEzARBgNVBAoMCnh4IG5ldHdvcmsxDzANBgNVBAsMBkRldk9w -czETMBEGA1UEAwwKeHgubmV0d29yazEgMB4GCSqGSIb3DQEJARYRYWRtaW5zQHh4 -Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQD08ixnPWwz -FtBIEWx2SnFjBsdrSWCp9NcWXRtGWeq3ACz+ixiflj/U9U4b57aULeOAvcoC7bwU -j5w3oYxRmXIV40QSevx1z9mNcW3xbbacQ+yCgPPhhj3/c285gVVOUzURLBTNAi9I -EA59zAb8Vy0E6zfq4HRAhH11Q/10QgDjEXuGXra1k3IlemVsouiJGNAtKojNDE1N -x9HnraSEiXzdnV2GDplEvMHaLd3s9vs4XsiLB3VwKyHv7EH9+LOIra6pr5BWw+kD -2qHKGmQMOQe0a7nCirW/k9axH0WiA0XWuQu3U1WfcMEfdC/xn1vtubrdYjtzpXUy -oUEX5eHfu4OlA/zoH+trocfARDyBmTVbDy0P9imH//a6GUKDui9r3fXwEy5YPMhb -dKaNc7QWLPHMh1n25h559z6PqxxPT6UqFFbZD2gTw1sbbpjyqhLbnYguurkxY3jZ -ztW337hROzQ1/abbg/P59JA95Pmhkl8nqqDEf0buOmvMazq3Lwg92nuZ8gsdMKXB -xaEtTTpxhTPOqzc1/XQgScZnc+092MBDh3C2GMxzylOIdk+yF2Gyb+VWPUe29dSa -azzxsDXzRy8y8jaOjdSUWaLa/MgS5Dg1AfHtD55bdvqYzw3NEXIVarpMlzl+Z+6w -jvuwz8GyoMSVe+YEGgvSDvlfY/z19aqneQIDAQABoxkwFzAVBgNVHREEDjAMggp4 -eC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQCp0JDub2w5vZQvFREyA+utZ/+s -XT05j1iTgIRKMa3nofDGERYJUG7FcTd373I2baS70PGx8FF1QuXhn4DNNZlW/SZt -pa1d0pAerqFrIzwOuWVDponYHQ8ayvsT7awCbwZEZE4RhooqS4LqnvtgFu/g7LuM -zkFN8TER7HAUn3P7BujLvcgtqk2LMDz+AgBRszDp/Bw7+1EJDeG9d7hC/stXgDV/ -vpD1YDpxSmW4zjezFJqV6OdMOwo9RWVIktK3RXbFc6I5UJZ5kmzPe/I2oPPCBQvD -G3VqFLQe5ik5rXP7SgAN1fL/7KuQna0s42hkV64Z2ymCX69G1ofpgpEFaQLaxLbj -QOun0r8A3NyKvHRIh4K0dFcc3FSOF60Y6k769HKbOPmSDjSSg0qO9GEONBJ8BxAT -IHcHoTAOQoqGehdzepXQSjHsPqTXv3ZFFwCCgO0toI0Qhqwo89X6R3k+i4Kaktr7 -mLiPO8s0nq1PZ1XrybKE9BCHkYH1JkUDA+M0pn4QAEx/BuM0QnGXoi1sImW3pEUG -NP7fjkISrD48P8P/TLS45sx5pB8MNGEsRw0lBKmuOdWDmdfhOltB6JxmbhpstNZp -6LVLK6SEOwE76xnHiisR2KyhTTiroUq73BgPFWkWhoJDPbmL1DHgnbdKwwstG8Qu -UGb8k8vh6tzqYZAOKg== ------END CERTIFICATE----- diff --git a/app/src/main/res/raw/release.crt b/app/src/main/res/raw/release.crt deleted file mode 100644 index b8d5847f8709d8f888f32ce2024dcffe33af4131..0000000000000000000000000000000000000000 --- a/app/src/main/res/raw/release.crt +++ /dev/null @@ -1,33 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIFtjCCA56gAwIBAgIJAJnUcpLbGSQiMA0GCSqGSIb3DQEBCwUAMIGMMQswCQYD -VQQGEwJVUzELMAkGA1UECAwCQ0ExEjAQBgNVBAcMCUNsYXJlbW9udDEQMA4GA1UE -CgwHRWxpeHhpcjEUMBIGA1UECwwLRGV2ZWxvcG1lbnQxEzARBgNVBAMMCmVsaXh4 -aXIuaW8xHzAdBgkqhkiG9w0BCQEWEGFkbWluQGVsaXh4aXIuaW8wHhcNMjAxMTE3 -MTkwMTUyWhcNMjIxMTE3MTkwMTUyWjCBjDELMAkGA1UEBhMCVVMxCzAJBgNVBAgM -AkNBMRIwEAYDVQQHDAlDbGFyZW1vbnQxEDAOBgNVBAoMB0VsaXh4aXIxFDASBgNV -BAsMC0RldmVsb3BtZW50MRMwEQYDVQQDDAplbGl4eGlyLmlvMR8wHQYJKoZIhvcN -AQkBFhBhZG1pbkBlbGl4eGlyLmlvMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC -CgKCAgEAvtByOoSS8SeMLvvHIuOGfnx0VgweveJHX93LUyJxr1RlVBXCgC5/QOQN -N3dmKWzu4YwaA2jtwaAMhkgdfyOcw6kuqfvQjxv99XRIRKM4GZQkJiym2cnorNu7 -hm2/bxmj5TjpP9+vFzbjkJrpRQ80hsV7I9+NKzIhMK4YTgte/F/q9URESlMZxTbb -MFh3s5iiBfBLRNFFsHVdy8OVH+Jv5901cLn+yowaMDLrBMOWGlRROg82ZeRAranX -9X1s+6BclJ/cBe/LcDxGso5sco6UzrWHzpDTnOTzHoamQHYCXtAZP4XbzcqI6A5i -GFM2akuG9Wv3XZZv/6eJRnKS2GLkvv7dtzv+nalxoBKtyIE8ICIVOrb+pVJvY1Id -HOXkK9MEJJ6sZhddipUaQw6hD4I0dNEt30Ugq9zTgFcEnM2R7qKpIDmxrRbcl280 -TQGNYgdidzleNdZbjcTvsMVhcxPXCY+bVX1xICD1oJiZZbZFejBvPEfLYyzSdYp+ -awX5OnLVSrQtTJu9yz5q3q5pHhxJnqS/CVGLTvzLfmk7BGwRZZuK87LnSixyYfpd -S23qI45AEUINEE0HDZsI+KBq0oVlDB0Z3AZpWauRDqY3o6JIbIOpqmZc6KntyL7j -YCAhbB1tchS47PpbIxUgMMGoR3MBkJutPqtTWCEE3l5jvv0CknUCAwEAAaMZMBcw -FQYDVR0RBA4wDIIKZWxpeHhpci5pbzANBgkqhkiG9w0BAQsFAAOCAgEACLoxE3nh -3VzXH2lQo1QzjKkG/+1m75T0l9Wn9uxa2W/90qBCfim1CPfWUstGdRLBi8gjDevV -zK5HN+Cpz2E22qByeN9fl6rJC4zd1vIdexEre5h7goWoV+qFPhOACElor1tF5UQ2 -GD+NFH+Z0ALG1u8db0hBv8NCbtD4YzcQzzINEbs9gp/Sq3cRzkz1wCufFwJwr7+R -0YqZfPj/v/w9G9wSUys1s3i4xr2u87T/bPF68VRg6r1+kXRSRevXd99wKwap52jY -zOwsDGZF9BHMpFVYR/yZhfzSK3F1DmvwuqOsfwSFIjrUjfRlwS28zyZ8rjBq1suD -EAdvYCLDmBSGssNh8E20PHmk5UROYFGEEhlK5ZKj/f1HOmMiOX461XK6HODYyitq -Six2dPi1ZlBJW83DyFqSWJaUR/CluBYmqrWoBX+chv54bU2Y9j/sA/O98wa7trsk -ctzvAcXjhXm6ESRVVD/iZvkW5MP2mkgbDpW3RP9souK5JzbcpC7i3hEcAqPSPgzL -94kHDpYNY7jcGQC4CjPdfBi+Tf6il/QLFRFgyHm2ze3+qrlPT6SQ4hSSH1iXyf4v -tlqu6u77fbF9yaHtq7dvYxH1WioIUxMqbIC1CNgGC1Y/LhzgLRKPSTBCrbQyTcGc -0b5cTzVKxdP6v6WOAXVOEkXTcBPZ4nEZxY0= ------END CERTIFICATE----- diff --git a/app/src/main/res/xml/backup_rules.xml b/app/src/main/res/xml/backup_rules.xml deleted file mode 100644 index fa0f996d2c2a6bdd11f5371de4268c8389d6c720..0000000000000000000000000000000000000000 --- a/app/src/main/res/xml/backup_rules.xml +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?><!-- - Sample backup rules file; uncomment and customize as necessary. - See https://developer.android.com/guide/topics/data/autobackup - for details. - Note: This file is ignored for devices older that API 31 - See https://developer.android.com/about/versions/12/backup-restore ---> -<full-backup-content> - <!-- - <include domain="sharedpref" path="."/> - <exclude domain="sharedpref" path="device.xml"/> ---> -</full-backup-content> \ No newline at end of file diff --git a/app/src/main/res/xml/data_extraction_rules.xml b/app/src/main/res/xml/data_extraction_rules.xml deleted file mode 100644 index 9ee9997b0b4726e57c27b2f7b21462b604ff8a88..0000000000000000000000000000000000000000 --- a/app/src/main/res/xml/data_extraction_rules.xml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?><!-- - Sample data extraction rules file; uncomment and customize as necessary. - See https://developer.android.com/about/versions/12/backup-restore#xml-changes - for details. ---> -<data-extraction-rules> - <cloud-backup> - <!-- TODO: Use <include> and <exclude> to control what is backed up. - <include .../> - <exclude .../> - --> - </cloud-backup> - <!-- - <device-transfer> - <include .../> - <exclude .../> - </device-transfer> - --> -</data-extraction-rules> \ No newline at end of file diff --git a/app/src/test/java/io/elixxir/dapp/ExampleUnitTest.kt b/app/src/test/java/io/elixxir/dapp/ExampleUnitTest.kt deleted file mode 100644 index b5073a8eae91e4baa4d894405f62d8eb4386ad26..0000000000000000000000000000000000000000 --- a/app/src/test/java/io/elixxir/dapp/ExampleUnitTest.kt +++ /dev/null @@ -1,17 +0,0 @@ -package io.elixxir.dapp - -import org.junit.Test - -import org.junit.Assert.* - -/** - * Example local unit test, which will execute on the development machine (host). - * - * See [testing documentation](http://d.android.com/tools/testing). - */ -class ExampleUnitTest { - @Test - fun addition_isCorrect() { - assertEquals(4, 2 + 2) - } -} \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index cc1e87c18bba3e644c10320c9ce6ab1c391426e8..2351bf8141529c69856e86192ddc2e859f85ac5a 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,9 +1,8 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { - id("com.android.application") version Config.ANDROID_GRADLE_PLUGIN apply false - id("com.android.library") version Config.ANDROID_GRADLE_PLUGIN apply false - id("org.jetbrains.kotlin.android") version Config.KOTLIN apply false - id("org.jetbrains.kotlin.jvm") version Config.KOTLIN apply false + id("com.android.library") version "7.2.1" apply false + id("org.jetbrains.kotlin.android") version "1.6.10" apply false + id("org.jetbrains.kotlin.jvm") version "1.6.10" apply false } tasks.register("clean", Delete::class) { diff --git a/buildSrc/.gitignore b/buildSrc/.gitignore deleted file mode 100644 index 42afabfd2abebf31384ca7797186a27a4b7dbee8..0000000000000000000000000000000000000000 --- a/buildSrc/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build \ No newline at end of file diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts deleted file mode 100644 index 6380ff2e998c21a39518185e322975c37cf3f916..0000000000000000000000000000000000000000 --- a/buildSrc/build.gradle.kts +++ /dev/null @@ -1,8 +0,0 @@ -plugins { - `kotlin-dsl` -} - -repositories { - gradlePluginPortal() - mavenCentral() -} \ No newline at end of file diff --git a/buildSrc/src/main/java/Dependencies.kt b/buildSrc/src/main/java/Dependencies.kt deleted file mode 100644 index 1946a6af69bbd3c0e12f4b7d2b94f9583a590b57..0000000000000000000000000000000000000000 --- a/buildSrc/src/main/java/Dependencies.kt +++ /dev/null @@ -1,18 +0,0 @@ -object Config { - const val ANDROID_GRADLE_PLUGIN = "7.2.1" - const val KOTLIN = "1.6.10" - const val COMPILE_SDK = 32 - const val MIN_SDK = 26 - const val TARGET_SDK = 32 -} - -object Libs { - const val CORE_KTX = "androidx.core:core-ktx" - const val COROUTINES = "org.jetbrains.kotlinx:kotlinx-coroutines-android" - const val ESPRESSO_CORE = "androidx.test.espresso:espresso-core" - const val EXT_JUNIT = "androidx.test.ext:junit" - const val GSON = "com.google.code.gson:gson" - const val JUNIT = "junit:junit" - const val TIMBER = "com.jakewharton.timber:timber" - const val TRUTH = "com.google.truth:truth" -} \ No newline at end of file diff --git a/depconstraints/build.gradle.kts b/depconstraints/build.gradle.kts deleted file mode 100644 index fa6c93a6b5d3006bf161248325ff781831b16d89..0000000000000000000000000000000000000000 --- a/depconstraints/build.gradle.kts +++ /dev/null @@ -1,34 +0,0 @@ -plugins { - id("java-platform") - id("maven-publish") -} - -val core = "1.7.0" -val coroutines = "1.3.9" -val espresso = "3.4.0" -val extJunit = "1.1.3" -val gson = "2.8.6" -val junit = "4.13.2" -val timber = "5.0.1" -val truth = "1.1.3" - -dependencies { - constraints { - api("${Libs.CORE_KTX}:$core") - api("${Libs.COROUTINES}:$coroutines") - api("${Libs.ESPRESSO_CORE}:$espresso") - api("${Libs.EXT_JUNIT}:$extJunit") - api("${Libs.GSON}:$gson") - api("${Libs.JUNIT}:$junit") - api("${Libs.TIMBER}:$timber") - api("${Libs.TRUTH}:$truth") - } -} - -publishing { - publications { - create<MavenPublication>("dAppsPlatform") { - from(components["javaPlatform"]) - } - } -} \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index e708b1c023ec8b20f512888fe07c5bd3ff77bb8f..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradlew.bat b/gradlew.bat index ac1b06f93825db68fb0c0b5150917f340eaa5d02..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,89 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/settings.gradle.kts b/settings.gradle.kts index 0063f33d4d284cc3470e4506ad860efc6658d51f..eb32f64bb5b2f329b426de63a648608e07cfb6c5 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -12,8 +12,6 @@ dependencyResolutionManagement { mavenCentral() } } -rootProject.name = "Elixxir dApps SDK Kotlin" -include(":app") -include(":depconstraints") + include(":cmix") include(":xxclient") diff --git a/xxclient/build.gradle.kts b/xxclient/build.gradle.kts index 0e3ecf87f047b3b0cec1444ac10bab03a4fa9fd3..81bee78ab9748a53ce537dd426556d53ad24f14c 100644 --- a/xxclient/build.gradle.kts +++ b/xxclient/build.gradle.kts @@ -5,11 +5,11 @@ plugins { } android { - compileSdk = Config.COMPILE_SDK + compileSdk = 32 defaultConfig { - minSdk = Config.MIN_SDK - targetSdk = Config.TARGET_SDK + minSdk = 26 + targetSdk = 32 testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } @@ -34,20 +34,12 @@ android { dependencies { implementation(fileTree(mapOf("include" to listOf("*.jar"), "dir" to "libs"))) - implementation((project(":cmix"))) + api((project(":cmix"))) - api(platform(project(":depconstraints"))) - kapt(platform(project(":depconstraints"))) - androidTestApi(platform(project(":depconstraints"))) + implementation("androidx.core:core-ktx:1.7.0") + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9") + implementation("com.google.code.gson:gson:2.8.6") - implementation(Libs.CORE_KTX) - implementation(Libs.COROUTINES) - implementation(Libs.GSON) - implementation(Libs.TIMBER) - - testImplementation(Libs.JUNIT) - testImplementation(Libs.TRUTH) - - androidTestImplementation(Libs.ESPRESSO_CORE) - androidTestImplementation(Libs.EXT_JUNIT) + testImplementation("junit:junit:4.13.2") + testImplementation("com.google.truth:truth:1.1.3") } \ No newline at end of file diff --git a/xxclient/src/main/java/io/elixxir/xxclient/bindings/Bindings.kt b/xxclient/src/main/java/io/elixxir/xxclient/bindings/Bindings.kt new file mode 100644 index 0000000000000000000000000000000000000000..54fae069d8c01abbacaf3326d4b79164f61edc6c --- /dev/null +++ b/xxclient/src/main/java/io/elixxir/xxclient/bindings/Bindings.kt @@ -0,0 +1,149 @@ +package io.elixxir.xxclient.bindings + +import io.elixxir.xxclient.backup.Backup +import io.elixxir.xxclient.callbacks.* +import io.elixxir.xxclient.channel.Channel +import io.elixxir.xxclient.cmix.CMix +import io.elixxir.xxclient.dummytraffic.DummyTraffic +import io.elixxir.xxclient.e2e.E2e +import io.elixxir.xxclient.filetransfer.FileTransfer +import io.elixxir.xxclient.models.* +import io.elixxir.xxclient.models.BackupUpdateListener +import io.elixxir.xxclient.userdiscovery.UserDiscovery +import io.elixxir.xxclient.utils.* + +interface Bindings { + val defaultCmixParams: CmixParams + val defaultE2eParams: E2eParams + val defaultE2eFileTransferParams: E2eFileTransferParams + val defaultFileTransferParams: FileTransferParams + val defaultSingleUseParams: SingleUseParams + val gitVersion: String + val dependencies: String + + fun downloadAndVerifySignedNdf( + environmentUrl: String, + certificate: Certificate, + ): Ndf + + fun generateSecret(byteLength: Long): Password + + fun loadCmix( + sessionFileDirectory: String, + sessionPassword: Password, + cmixParams: CmixParams + ): CMix + + fun login( + e2eId: E2eId, + authCallbacks: AuthEventListener, + receptionIdentity: ReceptionIdentity, + e2eParams: E2eParams + ): E2e + + fun loginEphemeral( + e2eId: E2eId, + authCallbacks: AuthEventListener, + receptionIdentity: ReceptionIdentity, + e2eParams: E2eParams + ): E2e + + fun getOrCreateUd( + e2eId: E2eId, + networkFollowerStatus: NetworkFollowerStatus, + username: String, + signature: Signature, + udCert: CertificateData, + contact: Contact, + udIpAddress: String + ): UserDiscovery + + fun newUdFromBackup( + e2eId: E2eId, + networkFollowerStatus: NetworkFollowerStatus, + emailFact: Fact, + phoneFact: Fact, + udCert: CertificateData, + contact: Contact, + udAddress: String + ): UserDiscovery + + fun newDummyTrafficManager( + cmixId: Long, + maxNumMessages: Long, + avgSendDeltaMS: Long, + randomRangeMS: Long + ): DummyTraffic + + fun registerLogger(logLevel: LogLevel, logWriter: LogWriter) + + fun initializeBackup( + e2eId: E2eId, + udId: Long, + backupPassword: String, + updateListener: BackupUpdateListener + ): Backup + + fun resumeBackup( + e2eId: E2eId, + udId: Long, + updateListener: BackupUpdateListener + ): Backup + + fun fetchSignedNdf( + url: String, + cert: String + ): Ndf + + fun getReceptionIdentity( + key: String, + e2eId: E2eId + ): ReceptionIdentity + + fun newFileTransferManager( + e2eId: E2eId, + incomingFileListener: IncomingFileListener, + e2eFileTransferParamsJson: ByteArray, + fileTransferParamsJson: ByteArray + ): FileTransfer + + fun getIdFromContact(contactData: ContactData): ByteArray + fun getPublicKeyFromContact(contactData: ContactData): ByteArray + fun getFactsFromContact(contactData: ContactData): Fact + fun setFactsOnContact(contactData: ContactData, fact: Fact): ContactData + + fun searchUd( + e2eId: E2eId, + udContact: Contact, + listener: UdSearchResultListener, + factsListJson: ByteArray, + singleRequestParamsJson: ByteArray + ): ContactList + + fun lookupUd( + e2eId: E2eId, + udContact: Contact, + listener: UdLookupResultListener, + lookupId: UserId, + singleRequestParamsJson: ByteArray + ): SingleUseReport + + fun newBroadcastChannel(cmixId: Long, channelDef: ChannelDef): Channel + + fun storeReceptionIdentity( + key: String, + identity: ReceptionIdentity, + cmixId: Long + ) + + fun transmitSingleUse( + e2eId: E2eId, + recipient: Contact, + tag: String, + payload: Payload, + paramsJson: ByteArray, + listener: SingleUseResponseListener + ): SingleUseReport + + fun updateCommonErrors(errorsJson: String) +} \ No newline at end of file diff --git a/xxclient/src/main/java/io/elixxir/xxclient/bindings/BindingsAdapter.kt b/xxclient/src/main/java/io/elixxir/xxclient/bindings/BindingsAdapter.kt new file mode 100644 index 0000000000000000000000000000000000000000..8555ec4fd1f9f930a451d4e2f2cdbb023efe3aab --- /dev/null +++ b/xxclient/src/main/java/io/elixxir/xxclient/bindings/BindingsAdapter.kt @@ -0,0 +1,310 @@ +package io.elixxir.xxclient.bindings + +import io.elixxir.xxclient.backup.Backup +import io.elixxir.xxclient.backup.BackupAdapter +import io.elixxir.xxclient.callbacks.* +import io.elixxir.xxclient.channel.Channel +import io.elixxir.xxclient.channel.ChannelAdapter +import io.elixxir.xxclient.cmix.CMix +import io.elixxir.xxclient.cmix.CMixAdapter +import io.elixxir.xxclient.dummytraffic.DummyTraffic +import io.elixxir.xxclient.dummytraffic.DummyTrafficAdapter +import io.elixxir.xxclient.e2e.E2e +import io.elixxir.xxclient.e2e.E2eAdapter +import io.elixxir.xxclient.filetransfer.FileTransfer +import io.elixxir.xxclient.filetransfer.FileTransferAdapter +import io.elixxir.xxclient.models.* +import io.elixxir.xxclient.models.BackupUpdateListener +import io.elixxir.xxclient.models.BindingsModel.Companion.decode +import io.elixxir.xxclient.models.BindingsModel.Companion.encode +import io.elixxir.xxclient.models.ReceiveFileCallbackAdapter +import io.elixxir.xxclient.models.UpdateBackupFuncAdapter +import io.elixxir.xxclient.userdiscovery.UserDiscovery +import io.elixxir.xxclient.userdiscovery.UserDiscoveryAdapter +import io.elixxir.xxclient.utils.* +import bindings.Bindings as CoreBindings + +open class BindingsAdapter : Bindings { + override val defaultCmixParams: CmixParams + get() = CoreBindings.getDefaultCMixParams() + override val defaultE2eParams: E2eParams + get() = CoreBindings.getDefaultE2EParams() + override val defaultE2eFileTransferParams: E2eFileTransferParams + get() = CoreBindings.getDefaultE2eFileTransferParams() + override val defaultFileTransferParams: FileTransferParams + get() = CoreBindings.getDefaultFileTransferParams() + override val defaultSingleUseParams: SingleUseParams + get() = CoreBindings.getDefaultSingleUseParams() + override val gitVersion: String + get() = CoreBindings.getGitVersion() + override val dependencies: String + get() = CoreBindings.getDependencies() + + override fun downloadAndVerifySignedNdf( + environmentUrl: String, + certificate: Certificate + ): Ndf { + return CoreBindings.downloadAndVerifySignedNdfWithUrl(environmentUrl, certificate) + } + + override fun generateSecret(byteLength: Long): Password { + return CoreBindings.generateSecret(byteLength) + } + + override fun loadCmix( + sessionFileDirectory: String, + sessionPassword: Password, + cmixParams: CmixParams + ): CMix { + return CMixAdapter( + CoreBindings.loadCmix(sessionFileDirectory, sessionPassword, cmixParams) + ) + } + + override fun login( + e2eId: E2eId, + authCallbacks: AuthEventListener, + receptionIdentity: ReceptionIdentity, + e2eParams: E2eParams + ): E2e { + return E2eAdapter( + CoreBindings.login( + e2eId, + AuthCallbacksAdapter(authCallbacks), + encode(receptionIdentity), + e2eParams + ) + ) + } + + override fun loginEphemeral( + e2eId: E2eId, + authCallbacks: AuthEventListener, + receptionIdentity: ReceptionIdentity, + e2eParams: E2eParams + ): E2e { + return E2eAdapter( + CoreBindings.loginEphemeral( + e2eId, + AuthCallbacksAdapter(authCallbacks), + encode(receptionIdentity), + e2eParams + ) + ) + } + + override fun getOrCreateUd( + e2eId: E2eId, + networkFollowerStatus: NetworkFollowerStatus, + username: String, + signature: Signature, + udCert: CertificateData, + contact: Contact, + udIpAddress: String + ): UserDiscovery { + return UserDiscoveryAdapter( + CoreBindings.newOrLoadUd( + e2eId, + { networkFollowerStatus.code }, + username, + signature, + udCert, + contact.encoded(), + udIpAddress + ) + ) + } + + override fun newUdFromBackup( + e2eId: E2eId, + networkFollowerStatus: NetworkFollowerStatus, + emailFact: Fact, + phoneFact: Fact, + udCert: CertificateData, + contact: Contact, + udAddress: String + ): UserDiscovery { + return UserDiscoveryAdapter( + CoreBindings.newUdManagerFromBackup( + e2eId, + { networkFollowerStatus.code }, + encode(emailFact), + encode(phoneFact), + udCert, + contact.encoded(), + udAddress + ) + ) + } + + override fun newDummyTrafficManager( + cmixId: Long, + maxNumMessages: Long, + avgSendDeltaMS: Long, + randomRangeMS: Long + ): DummyTraffic { + return DummyTrafficAdapter( + CoreBindings.newDummyTrafficManager( + cmixId, + maxNumMessages, + avgSendDeltaMS, + randomRangeMS) + ) + } + + override fun registerLogger(logLevel: LogLevel, logWriter: LogWriter) { + CoreBindings.logLevel(logLevel.code) + CoreBindings.registerLogWriter(logWriter) + } + + override fun initializeBackup( + e2eId: E2eId, + udId: Long, + backupPassword: String, + updateListener: BackupUpdateListener + ): Backup { + return BackupAdapter( + CoreBindings.initializeBackup( + e2eId, + udId, + backupPassword, + UpdateBackupFuncAdapter(updateListener) + ) + ) + } + + override fun resumeBackup( + e2eId: E2eId, + udId: Long, + updateListener: BackupUpdateListener + ): Backup { + return BackupAdapter( + CoreBindings.resumeBackup( + e2eId, + udId, + UpdateBackupFuncAdapter(updateListener) + ) + ) + } + + override fun fetchSignedNdf(url: String, cert: String): Ndf { + return CoreBindings.downloadAndVerifySignedNdfWithUrl(url, cert) + } + + override fun getReceptionIdentity(key: String, e2eId: E2eId): ReceptionIdentity { + return decode( + CoreBindings.loadReceptionIdentity(key, e2eId), + ReceptionIdentity::class.java + ) + } + + override fun newFileTransferManager( + e2eId: E2eId, + incomingFileListener: IncomingFileListener, + e2eFileTransferParamsJson: ByteArray, + fileTransferParamsJson: ByteArray + ): FileTransfer { + return FileTransferAdapter( + CoreBindings.initFileTransfer( + e2eId, + ReceiveFileCallbackAdapter(incomingFileListener), + e2eFileTransferParamsJson, + fileTransferParamsJson + ) + ) + } + + override fun getIdFromContact(contactData: ContactData): ByteArray { + return CoreBindings.getIDFromContact(contactData) + } + + override fun getPublicKeyFromContact(contactData: ContactData): ByteArray { + return CoreBindings.getPubkeyFromContact(contactData) + } + + override fun getFactsFromContact(contactData: ContactData): Fact { + return decode( + CoreBindings.getFactsFromContact(contactData), + Fact::class.java + ) + } + + override fun setFactsOnContact(contactData: ContactData, fact: Fact): ContactData { + return CoreBindings.setFactsOnContact(contactData, encode(fact)) + } + + override fun searchUd( + e2eId: E2eId, + udContact: Contact, + listener: UdSearchResultListener, + factsListJson: ByteArray, + singleRequestParamsJson: ByteArray + ): ContactList { + val result = CoreBindings.searchUD( + e2eId, + udContact.encoded(), + UdSearchCallbackAdapter(listener), + factsListJson, + singleRequestParamsJson + ) + return decode(result, ContactList::class.java) + } + + override fun lookupUd( + e2eId: E2eId, + udContact: Contact, + listener: UdLookupResultListener, + lookupId: UserId, + singleRequestParamsJson: ByteArray + ): SingleUseReport { + val result = CoreBindings.lookupUD( + e2eId, + udContact.encoded(), + UdLookupCallbackAdapter(listener), + lookupId, + singleRequestParamsJson + ) + return decode(result, SingleUseReport::class.java) + } + + override fun newBroadcastChannel(cmixId: Long, channelDef: ChannelDef): Channel { + return ChannelAdapter( + CoreBindings.newBroadcastChannel(cmixId, encode(channelDef)) + ) + } + + override fun storeReceptionIdentity( + key: String, + identity: ReceptionIdentity, + cmixId: Long + ) { + CoreBindings.storeReceptionIdentity( + key, + encode(identity), + cmixId + ) + } + + override fun transmitSingleUse( + e2eId: E2eId, + recipient: Contact, + tag: String, + payload: Payload, + paramsJson: ByteArray, + listener: SingleUseResponseListener + ): SingleUseReport { + val result = CoreBindings.transmitSingleUse( + e2eId, + recipient.encoded(), + tag, + payload, + paramsJson, + SingleUseResponseAdapter(listener) + ) + return decode(result, SingleUseReport::class.java) + } + + override fun updateCommonErrors(errorsJson: String) { + CoreBindings.updateCommonErrors(errorsJson) + } +} \ No newline at end of file diff --git a/xxclient/src/main/java/io/elixxir/xxclient/e2e/E2eAdapter.kt b/xxclient/src/main/java/io/elixxir/xxclient/e2e/E2eAdapter.kt index d34ae8b3bbbf72d9b2d061d8ce1cc99e9ad40a94..24d3de45e95489c8871d7a01ca79f834ba999e4e 100644 --- a/xxclient/src/main/java/io/elixxir/xxclient/e2e/E2eAdapter.kt +++ b/xxclient/src/main/java/io/elixxir/xxclient/e2e/E2eAdapter.kt @@ -127,7 +127,7 @@ open class E2eAdapter(protected val e2e: E2eBindings) : E2e{ messageType.code, receiverId, payload, - encode(params) + params ) return decode(reportData, SendReport::class.java) } diff --git a/xxclient/src/main/java/io/elixxir/xxclient/filetransfer/FileTransfer.kt b/xxclient/src/main/java/io/elixxir/xxclient/filetransfer/FileTransfer.kt new file mode 100644 index 0000000000000000000000000000000000000000..ee1f589ef0f63333abb02861c17097bf768796fc --- /dev/null +++ b/xxclient/src/main/java/io/elixxir/xxclient/filetransfer/FileTransfer.kt @@ -0,0 +1,9 @@ +package io.elixxir.xxclient.filetransfer + +import bindings.FileTransfer + +interface FileTransfer { + +} + +open class FileTransferAdapter(protected val binding: FileTransfer) : io.elixxir.xxclient.filetransfer.FileTransfer \ No newline at end of file diff --git a/xxclient/src/main/java/io/elixxir/xxclient/models/BackupUpdateListener.kt b/xxclient/src/main/java/io/elixxir/xxclient/models/BackupUpdateListener.kt new file mode 100644 index 0000000000000000000000000000000000000000..1097c3c903d9a17c39ea5d23562c50dfcc4c74bf --- /dev/null +++ b/xxclient/src/main/java/io/elixxir/xxclient/models/BackupUpdateListener.kt @@ -0,0 +1,13 @@ +package io.elixxir.xxclient.models + +import bindings.UpdateBackupFunc + +interface BackupUpdateListener { + fun onBackupUpdated(backupData: ByteArray?) +} + +open class UpdateBackupFuncAdapter(protected val listener: BackupUpdateListener) : UpdateBackupFunc { + override fun updateBackup(backupData: ByteArray?) { + listener.onBackupUpdated(backupData) + } +} \ No newline at end of file diff --git a/xxclient/src/main/java/io/elixxir/xxclient/models/E2eParams.kt b/xxclient/src/main/java/io/elixxir/xxclient/models/ContactList.kt similarity index 52% rename from xxclient/src/main/java/io/elixxir/xxclient/models/E2eParams.kt rename to xxclient/src/main/java/io/elixxir/xxclient/models/ContactList.kt index 5831e94831569ddb823c7ea3b93bfe4dd7b8caf6..d3a3b81034d1ab5626805b5aa7ad81d96e0f3588 100644 --- a/xxclient/src/main/java/io/elixxir/xxclient/models/E2eParams.kt +++ b/xxclient/src/main/java/io/elixxir/xxclient/models/ContactList.kt @@ -1,3 +1,3 @@ package io.elixxir.xxclient.models -class E2eParams : BindingsModel \ No newline at end of file +class ContactList : BindingsModel \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/network/model/Environment.kt b/xxclient/src/main/java/io/elixxir/xxclient/models/Environment.kt similarity index 57% rename from app/src/main/java/io/elixxir/dapp/network/model/Environment.kt rename to xxclient/src/main/java/io/elixxir/xxclient/models/Environment.kt index 03e52f196c707327935baca045b5924b6ce19f41..1af0ff9e1e038d7a158395f351805e8b4102eb92 100644 --- a/app/src/main/java/io/elixxir/dapp/network/model/Environment.kt +++ b/xxclient/src/main/java/io/elixxir/xxclient/models/Environment.kt @@ -1,4 +1,4 @@ -package io.elixxir.dapp.network.model +package io.elixxir.xxclient.models enum class Environment { MainNet, ReleaseNet diff --git a/xxclient/src/main/java/io/elixxir/xxclient/models/IncomingFileListener.kt b/xxclient/src/main/java/io/elixxir/xxclient/models/IncomingFileListener.kt new file mode 100644 index 0000000000000000000000000000000000000000..cde8a2888f61dc28dcfb2ebb874a8511b7c816d9 --- /dev/null +++ b/xxclient/src/main/java/io/elixxir/xxclient/models/IncomingFileListener.kt @@ -0,0 +1,15 @@ +package io.elixxir.xxclient.models + +import bindings.ReceiveFileCallback +import io.elixxir.xxclient.utils.parse +import java.lang.Exception + +interface IncomingFileListener { + fun onFileReceived(content: ReceivedFile) +} + +open class ReceiveFileCallbackAdapter(val listener: IncomingFileListener) : ReceiveFileCallback { + override fun callback(fileData: ByteArray?, error: Exception?) { + parse(fileData, error, ReceivedFile::class.java) + } +} \ No newline at end of file diff --git a/app/src/main/java/io/elixxir/dapp/logger/model/LogLevel.kt b/xxclient/src/main/java/io/elixxir/xxclient/models/LogLevel.kt similarity index 90% rename from app/src/main/java/io/elixxir/dapp/logger/model/LogLevel.kt rename to xxclient/src/main/java/io/elixxir/xxclient/models/LogLevel.kt index 1147f7423eab6e5f59813044e50d3aeea4067126..318b6b520cc3c9765969773656b16506d6ba4aae 100644 --- a/app/src/main/java/io/elixxir/dapp/logger/model/LogLevel.kt +++ b/xxclient/src/main/java/io/elixxir/xxclient/models/LogLevel.kt @@ -1,4 +1,4 @@ -package io.elixxir.dapp.logger.model +package io.elixxir.xxclient.models enum class LogLevel(val code: Long) { Trace(0), @@ -17,4 +17,4 @@ enum class LogLevel(val code: Long) { } ?: throw(IllegalArgumentException("Invalid code")) } } -} \ No newline at end of file +} diff --git a/xxclient/src/main/java/io/elixxir/xxclient/models/ReceivedFile.kt b/xxclient/src/main/java/io/elixxir/xxclient/models/ReceivedFile.kt new file mode 100644 index 0000000000000000000000000000000000000000..12b54adb94180fef2c9ed5dda6f843a9d4d2a2bd --- /dev/null +++ b/xxclient/src/main/java/io/elixxir/xxclient/models/ReceivedFile.kt @@ -0,0 +1,13 @@ +package io.elixxir.xxclient.models + +import io.elixxir.xxclient.utils.FileTransferId +import io.elixxir.xxclient.utils.UserId + +data class ReceivedFile( + val transferId: FileTransferId, + val senderId: UserId, + val previewData: ByteArray, + val fileName: String, + val filetype: String, + val fileSize: Long +) : BindingsModel \ No newline at end of file diff --git a/xxclient/src/main/java/io/elixxir/xxclient/utils/Logging.kt b/xxclient/src/main/java/io/elixxir/xxclient/utils/Logging.kt new file mode 100644 index 0000000000000000000000000000000000000000..413383a34507f0a2903d0c5bdc300ec1d7b2a180 --- /dev/null +++ b/xxclient/src/main/java/io/elixxir/xxclient/utils/Logging.kt @@ -0,0 +1,3 @@ +package io.elixxir.xxclient.utils + +typealias LogWriter = (String) -> Unit \ No newline at end of file diff --git a/xxclient/src/main/java/io/elixxir/xxclient/utils/TypeAlias.kt b/xxclient/src/main/java/io/elixxir/xxclient/utils/TypeAlias.kt index 3608245b8badf29c40a1f277628c7a2f9dc883e8..e061741753f339b0dc7533f67089d9a82ef4a77f 100644 --- a/xxclient/src/main/java/io/elixxir/xxclient/utils/TypeAlias.kt +++ b/xxclient/src/main/java/io/elixxir/xxclient/utils/TypeAlias.kt @@ -9,4 +9,14 @@ typealias Password = ByteArray typealias RoundId = Long typealias UserId = ByteArray typealias E2eId = Long -typealias ReceptionId = ByteArray \ No newline at end of file +typealias ReceptionId = ByteArray +typealias SingleUseParams = ByteArray +typealias FileTransferParams = ByteArray +typealias E2eParams = ByteArray +typealias E2eFileTransferParams = ByteArray +typealias CmixParams = ByteArray +typealias Certificate = String +typealias Signature = ByteArray +typealias Ndf = ByteArray +typealias CertificateData = ByteArray +typealias FileTransferId = Byte \ No newline at end of file