diff --git a/apps/flipcash/app/build.gradle.kts b/apps/flipcash/app/build.gradle.kts index 42b2d1e676..8c621ee69d 100644 --- a/apps/flipcash/app/build.gradle.kts +++ b/apps/flipcash/app/build.gradle.kts @@ -86,12 +86,18 @@ android { buildTypes { getByName("release") { resValue("string", "applicationId", appNamespace) + buildConfigField("Boolean", "NOTIFY_ERRORS", "true") isMinifyEnabled = !skipExpensiveReleaseTasks isShrinkResources = !skipExpensiveReleaseTasks proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") } getByName("debug") { resValue("string", "applicationId", appNamespace) + buildConfigField( + "Boolean", + "NOTIFY_ERRORS", + tryReadProperty(rootProject.rootDir, "NOTIFY_ERRORS", "false") + ) signingConfig = signingConfigs.getByName("contributors") val debugMinifyEnabled = tryReadProperty(rootProject.rootDir, "DEBUG_MINIFY", "false").toBooleanStrictOrNull() ?: false diff --git a/apps/flipcash/app/src/main/kotlin/com/flipcash/app/inject/AppModule.kt b/apps/flipcash/app/src/main/kotlin/com/flipcash/app/inject/AppModule.kt index cbc65b893a..1c03924035 100644 --- a/apps/flipcash/app/src/main/kotlin/com/flipcash/app/inject/AppModule.kt +++ b/apps/flipcash/app/src/main/kotlin/com/flipcash/app/inject/AppModule.kt @@ -13,6 +13,7 @@ import com.getcode.util.resources.AndroidContentReader import com.getcode.util.resources.AndroidResources import com.getcode.util.resources.AndroidSettingsHelper import com.getcode.util.resources.ContentReader +import com.getcode.util.resources.AndroidResourceHelper import com.getcode.util.resources.ResourceHelper import com.getcode.util.resources.SettingsHelper import dagger.Module @@ -43,9 +44,14 @@ object AppModule { ): ContentReader = AndroidContentReader(context) @Provides - fun providesResourceHelper( + fun providesAndroidResourceHelper( @ApplicationContext context: Context, - ): ResourceHelper = AndroidResources(context) + ): AndroidResourceHelper = AndroidResources(context) + + @Provides + fun providesResourceHelper( + resources: AndroidResourceHelper, + ): ResourceHelper = resources @Provides fun providesSettingsHelper( diff --git a/apps/flipcash/app/src/main/kotlin/com/flipcash/app/internal/startup/DiscreteBondingCurveInitializer.kt b/apps/flipcash/app/src/main/kotlin/com/flipcash/app/internal/startup/DiscreteBondingCurveInitializer.kt index f030a36544..a7dbe4dc64 100644 --- a/apps/flipcash/app/src/main/kotlin/com/flipcash/app/internal/startup/DiscreteBondingCurveInitializer.kt +++ b/apps/flipcash/app/src/main/kotlin/com/flipcash/app/internal/startup/DiscreteBondingCurveInitializer.kt @@ -3,6 +3,7 @@ package com.flipcash.app.internal.startup import android.content.Context import androidx.startup.Initializer import com.flipcash.libs.currency.math.Curves +import com.flipcash.libs.currency.math.initialize /** * Preloads the discrete bonding curve tables. diff --git a/apps/flipcash/app/src/main/kotlin/com/flipcash/app/internal/startup/MnemonicCacheInitializer.kt b/apps/flipcash/app/src/main/kotlin/com/flipcash/app/internal/startup/MnemonicCacheInitializer.kt index d5aa7f237f..824fc6a836 100644 --- a/apps/flipcash/app/src/main/kotlin/com/flipcash/app/internal/startup/MnemonicCacheInitializer.kt +++ b/apps/flipcash/app/src/main/kotlin/com/flipcash/app/internal/startup/MnemonicCacheInitializer.kt @@ -6,7 +6,8 @@ import com.getcode.crypt.MnemonicCache class MnemonicCacheInitializer: Initializer { override fun create(context: Context) { - MnemonicCache.init(context) + // Touching the cache loads the BIP39 word list at startup rather than on first use. + MnemonicCache.cachedCode } override fun dependencies(): List?>?> { diff --git a/apps/flipcash/app/src/main/kotlin/com/flipcash/app/internal/startup/TraceInitializer.kt b/apps/flipcash/app/src/main/kotlin/com/flipcash/app/internal/startup/TraceInitializer.kt index 57831c3500..667f244df9 100644 --- a/apps/flipcash/app/src/main/kotlin/com/flipcash/app/internal/startup/TraceInitializer.kt +++ b/apps/flipcash/app/src/main/kotlin/com/flipcash/app/internal/startup/TraceInitializer.kt @@ -11,8 +11,10 @@ import com.flipcash.app.internal.debug.TestLab import com.flipcash.app.internal.debug.bugsnagReleaseStage import com.flipcash.app.updates.ReleaseStage import com.flipcash.app.updates.ReleaseStageProvider +import com.getcode.utils.BuildFlags import com.getcode.utils.ErrorUtils import com.getcode.utils.TraceManager +import com.getcode.utils.initialize import dagger.hilt.EntryPoint import dagger.hilt.InstallIn import dagger.hilt.android.EntryPointAccessors @@ -28,6 +30,8 @@ class TraceInitializer: Initializer { } override fun create(context: Context) { + BuildFlags.isDebug = BuildConfig.DEBUG + BuildFlags.notifyErrors = BuildConfig.NOTIFY_ERRORS TraceManager.initialize(context) if (BuildConfig.DEBUG) { diff --git a/apps/flipcash/core/build.gradle.kts b/apps/flipcash/core/build.gradle.kts index f9e14795ad..0967c1843a 100644 --- a/apps/flipcash/core/build.gradle.kts +++ b/apps/flipcash/core/build.gradle.kts @@ -1,49 +1,72 @@ plugins { - alias(libs.plugins.flipcash.android.feature) + alias(libs.plugins.flipcash.kmp.app.library) + alias(libs.plugins.compose.compiler) + alias(libs.plugins.kotlin.ksp) } -android { - namespace = "${Gradle.flipcashNamespace}.core" -} - -dependencies { - implementation(libs.bundles.haze) - implementation(libs.zxing) - testImplementation(kotlin("test")) - testImplementation(libs.bundles.unit.testing) - testImplementation(libs.robolectric) - - implementation(libs.androidx.browser) - - implementation(libs.kotlinx.serialization.core) - implementation(libs.kotlinx.serialization.json) - - implementation(platform(libs.firebase.bom)) - implementation(libs.firebase.messaging) - - implementation(libs.androidx.localbroadcastmanager) - implementation(libs.androidx.datastore) - implementation(libs.compose.material3) +kotlin { + android { + namespace = "${Gradle.flipcashNamespace}.core" + androidResources { + enable = true + } + } - api(libs.coil3) - api(libs.coil3.network) + sourceSets { + commonMain.dependencies { + implementation(libs.kotlinx.serialization.core) + implementation(libs.kotlinx.serialization.json) + implementation(libs.jetbrains.compose.runtime) - api(project(":services:flipcash-compose")) + api(project(":services:flipcash")) + api(project(":services:opencode")) + implementation(project(":libs:encryption:keys")) + } + androidMain.dependencies { + // What flipcash.android.feature supplied before the move to KMP. + implementation(libs.bundles.hilt) + implementation(project.dependencies.platform(libs.compose.bom)) + implementation(libs.bundles.compose) + implementation(libs.rinku.compose) + implementation(project(":libs:coroutines")) + implementation(project(":libs:logging")) + implementation(project(":ui:components")) + implementation(project(":ui:navigation")) + implementation(project(":ui:resources")) + implementation(project(":ui:theme")) - api(project(":libs:reporting")) - implementation(project(":libs:messaging")) - api(project(":libs:permissions:public")) - implementation(project(":libs:vibrator:public")) - - implementation(project(":apps:flipcash:shared:userflags")) - api(project(":apps:flipcash:shared:theme")) - - api(libs.sodium.bindings) - - api(project(":vendor:kik:scanner")) - - api(project(":ui:core")) - api(libs.navigation3.runtime) + implementation(libs.bundles.haze) + implementation(libs.zxing) + implementation(libs.androidx.browser) + implementation(project.dependencies.platform(libs.firebase.bom)) + implementation(libs.firebase.messaging) + implementation(libs.androidx.localbroadcastmanager) + implementation(libs.androidx.datastore) + implementation(libs.compose.material3) + api(libs.coil3) + api(libs.coil3.network) + api(project(":services:flipcash-compose")) + api(project(":libs:reporting")) + implementation(project(":libs:messaging")) + api(project(":libs:permissions:public")) + implementation(project(":libs:vibrator:public")) + implementation(project(":apps:flipcash:shared:userflags")) + api(project(":apps:flipcash:shared:theme")) + api(libs.sodium.bindings) + api(project(":vendor:kik:scanner")) + api(project(":ui:core")) + api(libs.navigation3.runtime) + api(project(":vendor:tipkit:tipkit-m2")) + } + getByName("androidHostTest").dependencies { + implementation(kotlin("test")) + implementation(libs.bundles.unit.testing) + implementation(libs.robolectric) + } + } +} - api(project(":vendor:tipkit:tipkit-m2")) +dependencies { + add("kspAndroid", libs.hilt.android.compiler) + add("kspAndroid", libs.hilt.compiler) } diff --git a/apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/MainCoroutineRule.kt b/apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/MainCoroutineRule.kt similarity index 100% rename from apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/MainCoroutineRule.kt rename to apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/MainCoroutineRule.kt diff --git a/apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/bill/BillStateTest.kt b/apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/bill/BillStateTest.kt similarity index 100% rename from apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/bill/BillStateTest.kt rename to apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/bill/BillStateTest.kt diff --git a/apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/bill/ScannableTest.kt b/apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/bill/ScannableTest.kt similarity index 100% rename from apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/bill/ScannableTest.kt rename to apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/bill/ScannableTest.kt diff --git a/apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/cache/CachePolicyHandlerTest.kt b/apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/cache/CachePolicyHandlerTest.kt similarity index 100% rename from apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/cache/CachePolicyHandlerTest.kt rename to apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/cache/CachePolicyHandlerTest.kt diff --git a/apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/chat/ProfileOriginTest.kt b/apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/chat/ProfileOriginTest.kt similarity index 100% rename from apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/chat/ProfileOriginTest.kt rename to apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/chat/ProfileOriginTest.kt diff --git a/apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/data/LoadableTest.kt b/apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/data/LoadableTest.kt similarity index 100% rename from apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/data/LoadableTest.kt rename to apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/data/LoadableTest.kt diff --git a/apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/extensions/ListExtensionsTest.kt b/apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/extensions/ListExtensionsTest.kt similarity index 100% rename from apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/extensions/ListExtensionsTest.kt rename to apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/extensions/ListExtensionsTest.kt diff --git a/apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/feed/ActivityFeedMessageTest.kt b/apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/feed/ActivityFeedMessageTest.kt similarity index 100% rename from apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/feed/ActivityFeedMessageTest.kt rename to apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/feed/ActivityFeedMessageTest.kt diff --git a/apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/internal/bill/BillControllerTest.kt b/apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/internal/bill/BillControllerTest.kt similarity index 100% rename from apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/internal/bill/BillControllerTest.kt rename to apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/internal/bill/BillControllerTest.kt diff --git a/apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/internal/extensions/ResultExtensionsTest.kt b/apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/internal/extensions/ResultExtensionsTest.kt similarity index 100% rename from apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/internal/extensions/ResultExtensionsTest.kt rename to apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/internal/extensions/ResultExtensionsTest.kt diff --git a/apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/links/ExternalLinksTest.kt b/apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/links/ExternalLinksTest.kt similarity index 100% rename from apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/links/ExternalLinksTest.kt rename to apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/links/ExternalLinksTest.kt diff --git a/apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/links/TrustedLinksTest.kt b/apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/links/TrustedLinksTest.kt similarity index 100% rename from apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/links/TrustedLinksTest.kt rename to apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/links/TrustedLinksTest.kt diff --git a/apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/media/MediaUrlResolverTest.kt b/apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/media/MediaUrlResolverTest.kt similarity index 100% rename from apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/media/MediaUrlResolverTest.kt rename to apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/media/MediaUrlResolverTest.kt diff --git a/apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/money/FormatUtilsTest.kt b/apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/money/FormatUtilsTest.kt similarity index 100% rename from apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/money/FormatUtilsTest.kt rename to apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/money/FormatUtilsTest.kt diff --git a/apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/navigation/DeeplinkFragmentsTest.kt b/apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/navigation/DeeplinkFragmentsTest.kt similarity index 100% rename from apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/navigation/DeeplinkFragmentsTest.kt rename to apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/navigation/DeeplinkFragmentsTest.kt diff --git a/apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/navigation/DeeplinkScanPolicyTest.kt b/apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/navigation/DeeplinkScanPolicyTest.kt similarity index 100% rename from apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/navigation/DeeplinkScanPolicyTest.kt rename to apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/navigation/DeeplinkScanPolicyTest.kt diff --git a/apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/navigation/HomeRouteTest.kt b/apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/navigation/HomeRouteTest.kt similarity index 100% rename from apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/navigation/HomeRouteTest.kt rename to apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/navigation/HomeRouteTest.kt diff --git a/apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/navigation/NavBarRoutesTest.kt b/apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/navigation/NavBarRoutesTest.kt similarity index 100% rename from apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/navigation/NavBarRoutesTest.kt rename to apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/navigation/NavBarRoutesTest.kt diff --git a/apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/share/KikCodePainterTest.kt b/apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/share/KikCodePainterTest.kt similarity index 100% rename from apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/share/KikCodePainterTest.kt rename to apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/share/KikCodePainterTest.kt diff --git a/apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/share/TipCodeExportNameTest.kt b/apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/share/TipCodeExportNameTest.kt similarity index 100% rename from apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/share/TipCodeExportNameTest.kt rename to apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/share/TipCodeExportNameTest.kt diff --git a/apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/share/groupcard/GroupCardQrTest.kt b/apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/share/groupcard/GroupCardQrTest.kt similarity index 100% rename from apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/share/groupcard/GroupCardQrTest.kt rename to apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/share/groupcard/GroupCardQrTest.kt diff --git a/apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/time/FakeTimeProviderTest.kt b/apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/time/FakeTimeProviderTest.kt similarity index 100% rename from apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/time/FakeTimeProviderTest.kt rename to apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/time/FakeTimeProviderTest.kt diff --git a/apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/tokens/CompletedInPlaceTest.kt b/apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/tokens/CompletedInPlaceTest.kt similarity index 100% rename from apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/tokens/CompletedInPlaceTest.kt rename to apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/tokens/CompletedInPlaceTest.kt diff --git a/apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/tokens/TokenInfoEntryTest.kt b/apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/tokens/TokenInfoEntryTest.kt similarity index 100% rename from apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/tokens/TokenInfoEntryTest.kt rename to apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/tokens/TokenInfoEntryTest.kt diff --git a/apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/updater/NetworkUpdaterTest.kt b/apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/updater/NetworkUpdaterTest.kt similarity index 100% rename from apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/updater/NetworkUpdaterTest.kt rename to apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/updater/NetworkUpdaterTest.kt diff --git a/apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/util/AbbreviatedLinkTest.kt b/apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/util/AbbreviatedLinkTest.kt similarity index 100% rename from apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/util/AbbreviatedLinkTest.kt rename to apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/util/AbbreviatedLinkTest.kt diff --git a/apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/util/FiatTest.kt b/apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/util/FiatTest.kt similarity index 100% rename from apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/util/FiatTest.kt rename to apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/util/FiatTest.kt diff --git a/apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/util/NumberTest.kt b/apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/util/NumberTest.kt similarity index 100% rename from apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/util/NumberTest.kt rename to apps/flipcash/core/src/androidHostTest/kotlin/com/flipcash/app/core/util/NumberTest.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/AppRoute.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/AppRoute.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/AppRoute.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/AppRoute.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/Locals.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/Locals.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/Locals.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/Locals.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/android/ActivityProvider.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/android/ActivityProvider.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/android/ActivityProvider.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/android/ActivityProvider.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/android/IntentLauncher.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/android/IntentLauncher.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/android/IntentLauncher.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/android/IntentLauncher.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/android/IntentUtils.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/android/IntentUtils.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/android/IntentUtils.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/android/IntentUtils.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/android/VersionInfo.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/android/VersionInfo.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/android/VersionInfo.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/android/VersionInfo.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/android/extensions/Context.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/android/extensions/Context.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/android/extensions/Context.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/android/extensions/Context.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/android/extensions/Uri.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/android/extensions/Uri.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/android/extensions/Uri.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/android/extensions/Uri.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/annotations/AccountType.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/annotations/AccountType.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/annotations/AccountType.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/annotations/AccountType.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/bill/BillState.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/bill/BillState.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/bill/BillState.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/bill/BillState.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/bill/PaymentRequest.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/bill/PaymentRequest.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/bill/PaymentRequest.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/bill/PaymentRequest.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/bill/Scannable.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/bill/Scannable.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/bill/Scannable.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/bill/Scannable.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/cache/CacheEntry.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/cache/CacheEntry.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/cache/CacheEntry.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/cache/CacheEntry.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/cache/CachePolicy.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/cache/CachePolicy.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/cache/CachePolicy.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/cache/CachePolicy.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/cache/CachePolicyHandler.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/cache/CachePolicyHandler.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/cache/CachePolicyHandler.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/cache/CachePolicyHandler.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/chat/ChatIdentifier.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/chat/ChatIdentifier.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/chat/ChatIdentifier.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/chat/ChatIdentifier.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/chat/ChatParticipant.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/chat/ChatParticipant.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/chat/ChatParticipant.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/chat/ChatParticipant.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/chat/ChatStep.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/chat/ChatStep.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/chat/ChatStep.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/chat/ChatStep.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/chat/DmDestination.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/chat/DmDestination.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/chat/DmDestination.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/chat/DmDestination.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/chat/NewGroupStep.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/chat/NewGroupStep.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/chat/NewGroupStep.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/chat/NewGroupStep.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/chat/ProfileAddress.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/chat/ProfileAddress.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/chat/ProfileAddress.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/chat/ProfileAddress.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/chat/ReportSubject.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/chat/ReportSubject.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/chat/ReportSubject.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/chat/ReportSubject.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/chrome/ChromeTabsUtils.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/chrome/ChromeTabsUtils.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/chrome/ChromeTabsUtils.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/chrome/ChromeTabsUtils.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/contacts/DeviceContact.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/contacts/DeviceContact.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/contacts/DeviceContact.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/contacts/DeviceContact.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/data/Loadable.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/data/Loadable.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/data/Loadable.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/data/Loadable.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/deposit/DepositResult.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/deposit/DepositResult.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/deposit/DepositResult.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/deposit/DepositResult.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/deposit/DepositStep.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/deposit/DepositStep.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/deposit/DepositStep.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/deposit/DepositStep.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/encryption/Sodium.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/encryption/Sodium.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/encryption/Sodium.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/encryption/Sodium.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/extensions/Boolean.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/extensions/Boolean.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/extensions/Boolean.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/extensions/Boolean.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/extensions/Clipboard.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/extensions/Clipboard.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/extensions/Clipboard.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/extensions/Clipboard.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/extensions/CodeNavigator.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/extensions/CodeNavigator.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/extensions/CodeNavigator.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/extensions/CodeNavigator.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/extensions/Flow.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/extensions/Flow.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/extensions/Flow.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/extensions/Flow.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/extensions/List.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/extensions/List.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/extensions/List.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/extensions/List.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/extensions/Pair.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/extensions/Pair.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/extensions/Pair.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/extensions/Pair.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/extensions/Result.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/extensions/Result.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/extensions/Result.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/extensions/Result.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/internal/bill/BillController.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/internal/bill/BillController.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/internal/bill/BillController.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/internal/bill/BillController.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/internal/errors/ErrorUtil.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/internal/errors/ErrorUtil.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/internal/errors/ErrorUtil.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/internal/errors/ErrorUtil.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/internal/extensions/Bitmap.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/internal/extensions/Bitmap.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/internal/extensions/Bitmap.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/internal/extensions/Bitmap.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/internal/extensions/Result.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/internal/extensions/Result.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/internal/extensions/Result.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/internal/extensions/Result.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/internal/updater/ProfileUpdater.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/internal/updater/ProfileUpdater.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/internal/updater/ProfileUpdater.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/internal/updater/ProfileUpdater.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/links/ExternalLinks.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/links/ExternalLinks.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/links/ExternalLinks.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/links/ExternalLinks.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/links/TrustedWebsites.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/links/TrustedWebsites.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/links/TrustedWebsites.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/links/TrustedWebsites.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/media/ImageCachePresence.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/media/ImageCachePresence.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/media/ImageCachePresence.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/media/ImageCachePresence.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/media/MediaUrlResolver.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/media/MediaUrlResolver.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/media/MediaUrlResolver.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/media/MediaUrlResolver.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/media/RememberMediaUrl.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/media/RememberMediaUrl.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/media/RememberMediaUrl.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/media/RememberMediaUrl.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/moderation/ModerationMessages.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/moderation/ModerationMessages.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/moderation/ModerationMessages.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/moderation/ModerationMessages.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/money/FormatUtils.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/money/FormatUtils.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/money/FormatUtils.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/money/FormatUtils.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/navigation/DeeplinkAction.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/navigation/DeeplinkAction.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/navigation/DeeplinkAction.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/navigation/DeeplinkAction.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/navigation/DeeplinkType.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/navigation/DeeplinkType.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/navigation/DeeplinkType.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/navigation/DeeplinkType.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/navigation/HomeRoute.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/navigation/HomeRoute.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/navigation/HomeRoute.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/navigation/HomeRoute.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/navigation/LocalTabBarPadding.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/navigation/LocalTabBarPadding.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/navigation/LocalTabBarPadding.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/navigation/LocalTabBarPadding.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/navigation/NavBarButton.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/navigation/NavBarButton.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/navigation/NavBarButton.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/navigation/NavBarButton.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/navigation/NavBarRoutes.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/navigation/NavBarRoutes.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/navigation/NavBarRoutes.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/navigation/NavBarRoutes.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/navigation/SteppedFlowRoute.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/navigation/SteppedFlowRoute.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/navigation/SteppedFlowRoute.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/navigation/SteppedFlowRoute.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/navigation/TabBarVisibility.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/navigation/TabBarVisibility.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/navigation/TabBarVisibility.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/navigation/TabBarVisibility.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/onboarding/OnboardingStep.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/onboarding/OnboardingStep.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/onboarding/OnboardingStep.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/onboarding/OnboardingStep.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/onramp/deeplinks/WalletDeeplinkConnectionResult.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/onramp/deeplinks/WalletDeeplinkConnectionResult.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/onramp/deeplinks/WalletDeeplinkConnectionResult.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/onramp/deeplinks/WalletDeeplinkConnectionResult.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/onramp/ui/ConfirmInWalletButtonLabel.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/onramp/ui/ConfirmInWalletButtonLabel.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/onramp/ui/ConfirmInWalletButtonLabel.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/onramp/ui/ConfirmInWalletButtonLabel.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/onramp/ui/PhantomLabel.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/onramp/ui/PhantomLabel.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/onramp/ui/PhantomLabel.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/onramp/ui/PhantomLabel.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/reporting/ReportStep.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/reporting/ReportStep.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/reporting/ReportStep.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/reporting/ReportStep.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/share/SharePreviewImage.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/share/SharePreviewImage.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/share/SharePreviewImage.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/share/SharePreviewImage.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/share/TipCodeExport.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/share/TipCodeExport.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/share/TipCodeExport.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/share/TipCodeExport.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/share/TipCodeExporter.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/share/TipCodeExporter.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/share/TipCodeExporter.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/share/TipCodeExporter.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/share/TipCodePreview.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/share/TipCodePreview.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/share/TipCodePreview.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/share/TipCodePreview.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/share/TipCodePreviewRenderer.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/share/TipCodePreviewRenderer.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/share/TipCodePreviewRenderer.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/share/TipCodePreviewRenderer.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/share/TipCodePreviewStorage.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/share/TipCodePreviewStorage.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/share/TipCodePreviewStorage.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/share/TipCodePreviewStorage.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/share/groupcard/GroupCardExporter.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/share/groupcard/GroupCardExporter.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/share/groupcard/GroupCardExporter.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/share/groupcard/GroupCardExporter.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/share/groupcard/QrMatrix.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/share/groupcard/QrMatrix.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/share/groupcard/QrMatrix.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/share/groupcard/QrMatrix.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/share/groupcard/StyledQrGeometry.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/share/groupcard/StyledQrGeometry.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/share/groupcard/StyledQrGeometry.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/share/groupcard/StyledQrGeometry.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/share/groupcard/StyledQrRenderer.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/share/groupcard/StyledQrRenderer.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/share/groupcard/StyledQrRenderer.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/share/groupcard/StyledQrRenderer.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/storage/MediaSaver.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/storage/MediaSaver.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/storage/MediaSaver.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/storage/MediaSaver.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/time/FakeTimeProvider.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/time/FakeTimeProvider.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/time/FakeTimeProvider.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/time/FakeTimeProvider.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/time/TimeProvider.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/time/TimeProvider.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/time/TimeProvider.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/time/TimeProvider.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/tipping/OwnTipCard.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/tipping/OwnTipCard.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/tipping/OwnTipCard.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/tipping/OwnTipCard.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/tipping/TipCardOwner.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/tipping/TipCardOwner.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/tipping/TipCardOwner.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/tipping/TipCardOwner.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/tipping/TipSelection.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/tipping/TipSelection.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/tipping/TipSelection.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/tipping/TipSelection.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/toast/SystemToastController.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/toast/SystemToastController.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/toast/SystemToastController.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/toast/SystemToastController.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/toast/ToastController.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/toast/ToastController.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/toast/ToastController.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/toast/ToastController.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/tokens/CurrencyCreatorDraft.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/tokens/CurrencyCreatorDraft.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/tokens/CurrencyCreatorDraft.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/tokens/CurrencyCreatorDraft.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/tokens/CurrencyCreatorResult.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/tokens/CurrencyCreatorResult.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/tokens/CurrencyCreatorResult.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/tokens/CurrencyCreatorResult.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/tokens/CurrencyCreatorStep.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/tokens/CurrencyCreatorStep.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/tokens/CurrencyCreatorStep.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/tokens/CurrencyCreatorStep.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/tokens/SwapResult.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/tokens/SwapResult.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/tokens/SwapResult.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/tokens/SwapResult.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/tokens/SwapStep.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/tokens/SwapStep.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/tokens/SwapStep.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/tokens/SwapStep.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/tokens/TokenDisplayName.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/tokens/TokenDisplayName.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/tokens/TokenDisplayName.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/tokens/TokenDisplayName.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/tokens/TokenInfoEntry.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/tokens/TokenInfoEntry.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/tokens/TokenInfoEntry.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/tokens/TokenInfoEntry.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/tokens/TokenPurpose.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/tokens/TokenPurpose.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/tokens/TokenPurpose.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/tokens/TokenPurpose.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/tokens/TokenSwapPurpose.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/tokens/TokenSwapPurpose.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/tokens/TokenSwapPurpose.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/tokens/TokenSwapPurpose.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/updater/NetworkUpdater.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/updater/NetworkUpdater.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/updater/NetworkUpdater.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/updater/NetworkUpdater.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/userprofile/UpdateProfileResult.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/userprofile/UpdateProfileResult.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/userprofile/UpdateProfileResult.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/userprofile/UpdateProfileResult.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/userprofile/UpdateProfileStep.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/userprofile/UpdateProfileStep.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/userprofile/UpdateProfileStep.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/userprofile/UpdateProfileStep.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/util/AbbreviatedLink.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/util/AbbreviatedLink.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/util/AbbreviatedLink.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/util/AbbreviatedLink.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/util/Fiat.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/util/Fiat.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/util/Fiat.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/util/Fiat.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/util/Linkify.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/util/Linkify.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/util/Linkify.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/util/Linkify.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/util/MessagingPackages.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/util/MessagingPackages.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/util/MessagingPackages.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/util/MessagingPackages.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/util/Number.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/util/Number.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/util/Number.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/util/Number.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/verification/VerificationResult.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/verification/VerificationResult.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/verification/VerificationResult.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/verification/VerificationResult.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/verification/VerificationStep.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/verification/VerificationStep.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/verification/VerificationStep.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/verification/VerificationStep.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/verification/email/EmailCodeChannel.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/verification/email/EmailCodeChannel.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/verification/email/EmailCodeChannel.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/verification/email/EmailCodeChannel.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/verification/email/EmailDeeplinkOrigin.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/verification/email/EmailDeeplinkOrigin.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/verification/email/EmailDeeplinkOrigin.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/verification/email/EmailDeeplinkOrigin.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/verification/email/LocalEmailCodeChannel.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/verification/email/LocalEmailCodeChannel.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/verification/email/LocalEmailCodeChannel.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/verification/email/LocalEmailCodeChannel.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/withdrawal/WithdrawalResult.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/withdrawal/WithdrawalResult.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/withdrawal/WithdrawalResult.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/withdrawal/WithdrawalResult.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/withdrawal/WithdrawalStep.kt b/apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/withdrawal/WithdrawalStep.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/withdrawal/WithdrawalStep.kt rename to apps/flipcash/core/src/androidMain/kotlin/com/flipcash/app/core/withdrawal/WithdrawalStep.kt diff --git a/apps/flipcash/core/src/main/res/drawable-xxhdpi/ic_coin_dollars.webp b/apps/flipcash/core/src/androidMain/res/drawable-xxhdpi/ic_coin_dollars.webp similarity index 100% rename from apps/flipcash/core/src/main/res/drawable-xxhdpi/ic_coin_dollars.webp rename to apps/flipcash/core/src/androidMain/res/drawable-xxhdpi/ic_coin_dollars.webp diff --git a/apps/flipcash/core/src/main/res/drawable/bill_texture_1.webp b/apps/flipcash/core/src/androidMain/res/drawable/bill_texture_1.webp similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/bill_texture_1.webp rename to apps/flipcash/core/src/androidMain/res/drawable/bill_texture_1.webp diff --git a/apps/flipcash/core/src/main/res/drawable/bill_texture_2.webp b/apps/flipcash/core/src/androidMain/res/drawable/bill_texture_2.webp similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/bill_texture_2.webp rename to apps/flipcash/core/src/androidMain/res/drawable/bill_texture_2.webp diff --git a/apps/flipcash/core/src/main/res/drawable/bill_texture_3.webp b/apps/flipcash/core/src/androidMain/res/drawable/bill_texture_3.webp similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/bill_texture_3.webp rename to apps/flipcash/core/src/androidMain/res/drawable/bill_texture_3.webp diff --git a/apps/flipcash/core/src/main/res/drawable/bill_texture_4.webp b/apps/flipcash/core/src/androidMain/res/drawable/bill_texture_4.webp similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/bill_texture_4.webp rename to apps/flipcash/core/src/androidMain/res/drawable/bill_texture_4.webp diff --git a/apps/flipcash/core/src/main/res/drawable/bill_texture_5.webp b/apps/flipcash/core/src/androidMain/res/drawable/bill_texture_5.webp similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/bill_texture_5.webp rename to apps/flipcash/core/src/androidMain/res/drawable/bill_texture_5.webp diff --git a/apps/flipcash/core/src/main/res/drawable/bill_texture_6.webp b/apps/flipcash/core/src/androidMain/res/drawable/bill_texture_6.webp similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/bill_texture_6.webp rename to apps/flipcash/core/src/androidMain/res/drawable/bill_texture_6.webp diff --git a/apps/flipcash/core/src/main/res/drawable/bill_texture_7.webp b/apps/flipcash/core/src/androidMain/res/drawable/bill_texture_7.webp similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/bill_texture_7.webp rename to apps/flipcash/core/src/androidMain/res/drawable/bill_texture_7.webp diff --git a/apps/flipcash/core/src/main/res/drawable/bill_texture_8.webp b/apps/flipcash/core/src/androidMain/res/drawable/bill_texture_8.webp similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/bill_texture_8.webp rename to apps/flipcash/core/src/androidMain/res/drawable/bill_texture_8.webp diff --git a/apps/flipcash/core/src/main/res/drawable/close_right_arrow.xml b/apps/flipcash/core/src/androidMain/res/drawable/close_right_arrow.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/close_right_arrow.xml rename to apps/flipcash/core/src/androidMain/res/drawable/close_right_arrow.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_access_key_in_photos.webp b/apps/flipcash/core/src/androidMain/res/drawable/ic_access_key_in_photos.webp similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_access_key_in_photos.webp rename to apps/flipcash/core/src/androidMain/res/drawable/ic_access_key_in_photos.webp diff --git a/apps/flipcash/core/src/main/res/drawable/ic_advanced_features.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_advanced_features.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_advanced_features.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_advanced_features.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_app_update_required.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_app_update_required.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_app_update_required.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_app_update_required.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_arrow_down.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_arrow_down.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_arrow_down.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_arrow_down.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_arrow_right.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_arrow_right.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_arrow_right.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_arrow_right.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_arrow_up_large.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_arrow_up_large.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_arrow_up_large.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_arrow_up_large.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_at.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_at.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_at.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_at.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_backpack_wallet.webp b/apps/flipcash/core/src/androidMain/res/drawable/ic_backpack_wallet.webp similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_backpack_wallet.webp rename to apps/flipcash/core/src/androidMain/res/drawable/ic_backpack_wallet.webp diff --git a/apps/flipcash/core/src/main/res/drawable/ic_banknote.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_banknote.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_banknote.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_banknote.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_bill_previews.webp b/apps/flipcash/core/src/androidMain/res/drawable/ic_bill_previews.webp similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_bill_previews.webp rename to apps/flipcash/core/src/androidMain/res/drawable/ic_bill_previews.webp diff --git a/apps/flipcash/core/src/main/res/drawable/ic_biometrics.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_biometrics.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_biometrics.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_biometrics.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_bottom_navigation.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_bottom_navigation.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_bottom_navigation.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_bottom_navigation.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_bubble_outline.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_bubble_outline.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_bubble_outline.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_bubble_outline.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_buy_with_google_pay.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_buy_with_google_pay.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_buy_with_google_pay.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_buy_with_google_pay.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_callout_warning.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_callout_warning.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_callout_warning.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_callout_warning.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_camera.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_camera.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_camera.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_camera.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_camera_request.webp b/apps/flipcash/core/src/androidMain/res/drawable/ic_camera_request.webp similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_camera_request.webp rename to apps/flipcash/core/src/androidMain/res/drawable/ic_camera_request.webp diff --git a/apps/flipcash/core/src/main/res/drawable/ic_cash_bill.webp b/apps/flipcash/core/src/androidMain/res/drawable/ic_cash_bill.webp similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_cash_bill.webp rename to apps/flipcash/core/src/androidMain/res/drawable/ic_cash_bill.webp diff --git a/apps/flipcash/core/src/main/res/drawable/ic_checked.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_checked.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_checked.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_checked.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_checked_green.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_checked_green.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_checked_green.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_checked_green.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_checklist.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_checklist.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_checklist.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_checklist.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_chevron_down_small.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_chevron_down_small.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_chevron_down_small.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_chevron_down_small.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_circle_check_large.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_circle_check_large.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_circle_check_large.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_circle_check_large.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_circle_exclamation_large.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_circle_exclamation_large.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_circle_exclamation_large.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_circle_exclamation_large.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_coins.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_coins.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_coins.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_coins.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_coins_add.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_coins_add.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_coins_add.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_coins_add.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_color_tune_hsl.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_color_tune_hsl.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_color_tune_hsl.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_color_tune_hsl.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_contact_method_verification.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_contact_method_verification.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_contact_method_verification.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_contact_method_verification.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_convert.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_convert.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_convert.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_convert.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_currency_coin.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_currency_coin.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_currency_coin.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_currency_coin.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_currencycreator_cashbill.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_currencycreator_cashbill.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_currencycreator_cashbill.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_currencycreator_cashbill.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_currencycreator_description.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_currencycreator_description.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_currencycreator_description.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_currencycreator_description.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_currencycreator_gift.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_currencycreator_gift.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_currencycreator_gift.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_currencycreator_gift.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_currencycreator_icon.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_currencycreator_icon.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_currencycreator_icon.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_currencycreator_icon.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_currencycreator_name.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_currencycreator_name.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_currencycreator_name.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_currencycreator_name.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_currencycreator_purchase.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_currencycreator_purchase.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_currencycreator_purchase.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_currencycreator_purchase.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_debit_card.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_debit_card.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_debit_card.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_debit_card.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_device_frame.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_device_frame.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_device_frame.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_device_frame.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_existing_contact.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_existing_contact.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_existing_contact.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_existing_contact.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_flipcash_badge.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_flipcash_badge.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_flipcash_badge.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_flipcash_badge.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_flipcash_balance.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_flipcash_balance.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_flipcash_balance.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_flipcash_balance.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_flipcash_logo.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_flipcash_logo.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_flipcash_logo.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_flipcash_logo.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_flipcash_logo_offwhite_small.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_flipcash_logo_offwhite_small.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_flipcash_logo_offwhite_small.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_flipcash_logo_offwhite_small.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_flipcash_logo_w_name.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_flipcash_logo_w_name.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_flipcash_logo_w_name.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_flipcash_logo_w_name.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_flipcash_logo_w_name_large.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_flipcash_logo_w_name_large.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_flipcash_logo_w_name_large.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_flipcash_logo_w_name_large.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_flipcash_pools.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_flipcash_pools.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_flipcash_pools.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_flipcash_pools.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_globe.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_globe.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_globe.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_globe.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_google_pay.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_google_pay.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_google_pay.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_google_pay.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_google_pay_brand_mark.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_google_pay_brand_mark.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_google_pay_brand_mark.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_google_pay_brand_mark.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_group_3.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_group_3.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_group_3.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_group_3.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_hardware_security_key.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_hardware_security_key.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_hardware_security_key.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_hardware_security_key.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_home_options.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_home_options.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_home_options.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_home_options.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_host.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_host.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_host.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_host.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_info_bars.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_info_bars.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_info_bars.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_info_bars.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_linked_payment_method.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_linked_payment_method.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_linked_payment_method.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_linked_payment_method.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_lock.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_lock.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_lock.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_lock.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_logo_round_white.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_logo_round_white.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_logo_round_white.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_logo_round_white.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_market_cap_curve.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_market_cap_curve.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_market_cap_curve.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_market_cap_curve.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_menu_account.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_menu_account.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_menu_account.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_menu_account.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_menu_deposit.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_menu_deposit.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_menu_deposit.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_menu_deposit.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_menu_key.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_menu_key.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_menu_key.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_menu_key.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_menu_logout.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_menu_logout.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_menu_logout.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_menu_logout.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_menu_switchaccounts.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_menu_switchaccounts.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_menu_switchaccounts.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_menu_switchaccounts.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_menu_withdraw.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_menu_withdraw.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_menu_withdraw.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_menu_withdraw.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_minus.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_minus.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_minus.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_minus.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_nav_chat.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_nav_chat.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_nav_chat.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_nav_chat.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_nav_chat_selected.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_nav_chat_selected.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_nav_chat_selected.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_nav_chat_selected.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_nav_tipcard.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_nav_tipcard.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_nav_tipcard.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_nav_tipcard.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_nav_tipcard_selected.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_nav_tipcard_selected.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_nav_tipcard_selected.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_nav_tipcard_selected.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_nav_wallet.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_nav_wallet.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_nav_wallet.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_nav_wallet.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_nav_wallet_selected.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_nav_wallet_selected.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_nav_wallet_selected.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_nav_wallet_selected.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_new_email.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_new_email.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_new_email.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_new_email.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_notification_preview_icon.png b/apps/flipcash/core/src/androidMain/res/drawable/ic_notification_preview_icon.png similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_notification_preview_icon.png rename to apps/flipcash/core/src/androidMain/res/drawable/ic_notification_preview_icon.png diff --git a/apps/flipcash/core/src/main/res/drawable/ic_notification_request.webp b/apps/flipcash/core/src/androidMain/res/drawable/ic_notification_request.webp similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_notification_request.webp rename to apps/flipcash/core/src/androidMain/res/drawable/ic_notification_request.webp diff --git a/apps/flipcash/core/src/main/res/drawable/ic_pay_with_google_pay.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_pay_with_google_pay.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_pay_with_google_pay.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_pay_with_google_pay.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_people_circle.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_people_circle.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_people_circle.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_people_circle.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_people_gear.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_people_gear.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_people_gear.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_people_gear.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_phantom_buy_connect.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_phantom_buy_connect.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_phantom_buy_connect.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_phantom_buy_connect.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_phantom_connected.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_phantom_connected.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_phantom_connected.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_phantom_connected.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_phantom_wallet.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_phantom_wallet.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_phantom_wallet.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_phantom_wallet.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_plus.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_plus.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_plus.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_plus.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_qr_code.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_qr_code.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_qr_code.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_qr_code.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_screen_frame.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_screen_frame.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_screen_frame.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_screen_frame.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_send_large.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_send_large.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_send_large.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_send_large.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_send_outlined.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_send_outlined.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_send_outlined.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_send_outlined.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_social_discord.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_social_discord.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_social_discord.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_social_discord.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_social_tg.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_social_tg.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_social_tg.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_social_tg.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_social_web.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_social_web.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_social_web.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_social_web.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_social_x.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_social_x.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_social_x.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_social_x.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_solana_logo.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_solana_logo.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_solana_logo.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_solana_logo.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_solflare_wallet.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_solflare_wallet.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_solflare_wallet.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_solflare_wallet.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_tipcode.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_tipcode.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_tipcode.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_tipcode.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_tipping_hand.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_tipping_hand.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_tipping_hand.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_tipping_hand.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_transfer_deposit.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_transfer_deposit.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_transfer_deposit.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_transfer_deposit.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_transfer_withdraw.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_transfer_withdraw.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_transfer_withdraw.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_transfer_withdraw.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_trophy.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_trophy.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_trophy.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_trophy.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_unchecked.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_unchecked.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_unchecked.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_unchecked.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_undo.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_undo.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_undo.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_undo.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_unknown_contact.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_unknown_contact.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_unknown_contact.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_unknown_contact.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_usdc.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_usdc.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_usdc.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_usdc.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_usdc_on_solana.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_usdc_on_solana.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_usdc_on_solana.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_usdc_on_solana.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_wallet.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_wallet.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_wallet.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_wallet.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_warning_alert_large.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_warning_alert_large.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_warning_alert_large.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_warning_alert_large.xml diff --git a/apps/flipcash/core/src/main/res/drawable/ic_withdraw_usdf_as_usdc.xml b/apps/flipcash/core/src/androidMain/res/drawable/ic_withdraw_usdf_as_usdc.xml similarity index 100% rename from apps/flipcash/core/src/main/res/drawable/ic_withdraw_usdf_as_usdc.xml rename to apps/flipcash/core/src/androidMain/res/drawable/ic_withdraw_usdf_as_usdc.xml diff --git a/apps/flipcash/core/src/main/res/values/strings-universal.xml b/apps/flipcash/core/src/androidMain/res/values/strings-universal.xml similarity index 100% rename from apps/flipcash/core/src/main/res/values/strings-universal.xml rename to apps/flipcash/core/src/androidMain/res/values/strings-universal.xml diff --git a/apps/flipcash/core/src/main/res/values/strings.xml b/apps/flipcash/core/src/androidMain/res/values/strings.xml similarity index 100% rename from apps/flipcash/core/src/main/res/values/strings.xml rename to apps/flipcash/core/src/androidMain/res/values/strings.xml diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/blocklist/BlockedUserProfile.kt b/apps/flipcash/core/src/commonMain/kotlin/com/flipcash/app/core/blocklist/BlockedUserProfile.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/blocklist/BlockedUserProfile.kt rename to apps/flipcash/core/src/commonMain/kotlin/com/flipcash/app/core/blocklist/BlockedUserProfile.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/feed/ActivityFeedMessage.kt b/apps/flipcash/core/src/commonMain/kotlin/com/flipcash/app/core/feed/ActivityFeedMessage.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/feed/ActivityFeedMessage.kt rename to apps/flipcash/core/src/commonMain/kotlin/com/flipcash/app/core/feed/ActivityFeedMessage.kt diff --git a/apps/flipcash/features/backupkey/src/main/kotlin/com/flipcash/app/backupkey/internal/BackupKeyScreenViewModel.kt b/apps/flipcash/features/backupkey/src/main/kotlin/com/flipcash/app/backupkey/internal/BackupKeyScreenViewModel.kt index 082361df7d..ca5c97d98c 100644 --- a/apps/flipcash/features/backupkey/src/main/kotlin/com/flipcash/app/backupkey/internal/BackupKeyScreenViewModel.kt +++ b/apps/flipcash/features/backupkey/src/main/kotlin/com/flipcash/app/backupkey/internal/BackupKeyScreenViewModel.kt @@ -6,7 +6,7 @@ import com.flipcash.libs.coroutines.DispatcherProvider import com.flipcash.services.user.UserManager import com.getcode.libs.qr.QRCodeGenerator import com.getcode.opencode.managers.MnemonicManager -import com.getcode.util.resources.ResourceHelper +import com.getcode.util.resources.AndroidResourceHelper import com.getcode.view.LoadingSuccessState import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.delay @@ -16,7 +16,7 @@ import kotlin.time.Duration.Companion.seconds @HiltViewModel internal class BackupKeyScreenViewModel @Inject constructor( - resources: ResourceHelper, + resources: AndroidResourceHelper, mnemonicManager: MnemonicManager, mediaSaver: MediaSaver, userManager: UserManager, diff --git a/apps/flipcash/features/cash/build.gradle.kts b/apps/flipcash/features/cash/build.gradle.kts index 750d1d06ee..748344538f 100644 --- a/apps/flipcash/features/cash/build.gradle.kts +++ b/apps/flipcash/features/cash/build.gradle.kts @@ -9,7 +9,7 @@ android { dependencies { testImplementation(kotlin("test")) testImplementation(libs.bundles.unit.testing) - testImplementation(testFixtures(project(":ui:resources"))) + testImplementation(project(":ui:resources:test-fixtures")) testImplementation(libs.mockito.kotlin) testImplementation(libs.robolectric) diff --git a/apps/flipcash/features/contact-verification/build.gradle.kts b/apps/flipcash/features/contact-verification/build.gradle.kts index 3f36620e35..38cbfb9c12 100644 --- a/apps/flipcash/features/contact-verification/build.gradle.kts +++ b/apps/flipcash/features/contact-verification/build.gradle.kts @@ -9,7 +9,7 @@ android { dependencies { testImplementation(kotlin("test")) testImplementation(libs.bundles.unit.testing) - testImplementation(testFixtures(project(":ui:resources"))) + testImplementation(project(":ui:resources:test-fixtures")) testImplementation(libs.mockito.kotlin) implementation(libs.bundles.kotlinx.serialization) diff --git a/apps/flipcash/features/login/build.gradle.kts b/apps/flipcash/features/login/build.gradle.kts index 8b4a065713..fdc0140b53 100644 --- a/apps/flipcash/features/login/build.gradle.kts +++ b/apps/flipcash/features/login/build.gradle.kts @@ -9,7 +9,7 @@ android { dependencies { testImplementation(kotlin("test")) testImplementation(libs.bundles.unit.testing) - testImplementation(testFixtures(project(":ui:resources"))) + testImplementation(project(":ui:resources:test-fixtures")) testImplementation(libs.mockito.kotlin) testImplementation(libs.bundles.compose.ui.testing) diff --git a/apps/flipcash/features/login/src/main/kotlin/com/flipcash/app/login/internal/LoginAccessKeyViewModel.kt b/apps/flipcash/features/login/src/main/kotlin/com/flipcash/app/login/internal/LoginAccessKeyViewModel.kt index 8da7981d8e..9c7cd604ed 100644 --- a/apps/flipcash/features/login/src/main/kotlin/com/flipcash/app/login/internal/LoginAccessKeyViewModel.kt +++ b/apps/flipcash/features/login/src/main/kotlin/com/flipcash/app/login/internal/LoginAccessKeyViewModel.kt @@ -15,7 +15,7 @@ import com.flipcash.services.user.UserManager import com.getcode.libs.qr.QRCodeGenerator import com.getcode.manager.BottomBarManager import com.getcode.opencode.managers.MnemonicManager -import com.getcode.util.resources.ResourceHelper +import com.getcode.util.resources.AndroidResourceHelper import com.getcode.view.LoadingSuccessState import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.delay @@ -24,7 +24,7 @@ import javax.inject.Inject @HiltViewModel internal class LoginAccessKeyViewModel @Inject constructor( - private val resources: ResourceHelper, + private val resources: AndroidResourceHelper, mnemonicManager: MnemonicManager, qrCodeGenerator: QRCodeGenerator, mediaSaver: MediaSaver, diff --git a/apps/flipcash/features/menu/build.gradle.kts b/apps/flipcash/features/menu/build.gradle.kts index 3d8bf2d322..c4858b7a56 100644 --- a/apps/flipcash/features/menu/build.gradle.kts +++ b/apps/flipcash/features/menu/build.gradle.kts @@ -11,7 +11,7 @@ dependencies { testImplementation(libs.kotlinx.coroutines.test) testImplementation(libs.robolectric) testImplementation(libs.bundles.unit.testing) - testImplementation(testFixtures(project(":ui:resources"))) + testImplementation(project(":ui:resources:test-fixtures")) implementation(libs.bundles.haze) diff --git a/apps/flipcash/features/myaccount/build.gradle.kts b/apps/flipcash/features/myaccount/build.gradle.kts index 3362ff2d55..781f5d7348 100644 --- a/apps/flipcash/features/myaccount/build.gradle.kts +++ b/apps/flipcash/features/myaccount/build.gradle.kts @@ -10,7 +10,7 @@ dependencies { testImplementation(kotlin("test")) testImplementation(libs.bundles.unit.testing) testImplementation(libs.bundles.compose.ui.testing) - testImplementation(testFixtures(project(":ui:resources"))) + testImplementation(project(":ui:resources:test-fixtures")) implementation(libs.bundles.haze) implementation(libs.compose.paging) diff --git a/apps/flipcash/features/tipping/build.gradle.kts b/apps/flipcash/features/tipping/build.gradle.kts index db2603d881..2c4f4a7910 100644 --- a/apps/flipcash/features/tipping/build.gradle.kts +++ b/apps/flipcash/features/tipping/build.gradle.kts @@ -9,7 +9,7 @@ android { dependencies { testImplementation(kotlin("test")) testImplementation(libs.bundles.unit.testing) - testImplementation(testFixtures(project(":ui:resources"))) + testImplementation(project(":ui:resources:test-fixtures")) testImplementation(testFixtures(project(":apps:flipcash:shared:analytics"))) testImplementation(libs.robolectric) diff --git a/apps/flipcash/features/transactions/build.gradle.kts b/apps/flipcash/features/transactions/build.gradle.kts index bc4506aa2f..777a85f700 100644 --- a/apps/flipcash/features/transactions/build.gradle.kts +++ b/apps/flipcash/features/transactions/build.gradle.kts @@ -9,7 +9,7 @@ android { dependencies { testImplementation(kotlin("test")) testImplementation(libs.bundles.unit.testing) - testImplementation(testFixtures(project(":ui:resources"))) + testImplementation(project(":ui:resources:test-fixtures")) testImplementation(libs.mockito.kotlin) implementation(libs.compose.paging) diff --git a/apps/flipcash/features/user-profile/build.gradle.kts b/apps/flipcash/features/user-profile/build.gradle.kts index 07815031be..e82b55b0a1 100644 --- a/apps/flipcash/features/user-profile/build.gradle.kts +++ b/apps/flipcash/features/user-profile/build.gradle.kts @@ -9,7 +9,7 @@ android { dependencies { testImplementation(kotlin("test")) testImplementation(libs.bundles.unit.testing) - testImplementation(testFixtures(project(":ui:resources"))) + testImplementation(project(":ui:resources:test-fixtures")) testImplementation(libs.mockito.kotlin) implementation(libs.bundles.kotlinx.serialization) diff --git a/apps/flipcash/features/withdrawal/build.gradle.kts b/apps/flipcash/features/withdrawal/build.gradle.kts index a2a6ac1bfc..2d2fb40188 100644 --- a/apps/flipcash/features/withdrawal/build.gradle.kts +++ b/apps/flipcash/features/withdrawal/build.gradle.kts @@ -9,7 +9,7 @@ android { dependencies { testImplementation(kotlin("test")) testImplementation(libs.bundles.unit.testing) - testImplementation(testFixtures(project(":ui:resources"))) + testImplementation(project(":ui:resources:test-fixtures")) testImplementation(libs.bundles.compose.ui.testing) implementation(project(":apps:flipcash:shared:amount-entry")) diff --git a/apps/flipcash/shared/accesskey/src/main/kotlin/com/flipcash/app/accesskey/BaseAccessKeyViewModel.kt b/apps/flipcash/shared/accesskey/src/main/kotlin/com/flipcash/app/accesskey/BaseAccessKeyViewModel.kt index a8886ef6c9..33ef7b3f6a 100644 --- a/apps/flipcash/shared/accesskey/src/main/kotlin/com/flipcash/app/accesskey/BaseAccessKeyViewModel.kt +++ b/apps/flipcash/shared/accesskey/src/main/kotlin/com/flipcash/app/accesskey/BaseAccessKeyViewModel.kt @@ -24,7 +24,7 @@ import com.getcode.theme.Alert import com.getcode.theme.GradientSpec import com.getcode.theme.White import com.getcode.ui.utils.toAGColor -import com.getcode.util.resources.ResourceHelper +import com.getcode.util.resources.AndroidResourceHelper import com.getcode.utils.TraceType import com.getcode.utils.decodeBase64 import com.getcode.utils.trace @@ -59,7 +59,7 @@ data class AccessKeyUiModel( ) abstract class BaseAccessKeyViewModel( - private val resources: ResourceHelper, + private val resources: AndroidResourceHelper, private val mnemonicManager: MnemonicManager, private val mediaSaver: MediaSaver, userManager: UserManager, diff --git a/apps/flipcash/shared/analytics/build.gradle.kts b/apps/flipcash/shared/analytics/build.gradle.kts index 371f23ce36..c17b1a59e6 100644 --- a/apps/flipcash/shared/analytics/build.gradle.kts +++ b/apps/flipcash/shared/analytics/build.gradle.kts @@ -22,6 +22,7 @@ dependencies { implementation(libs.bugsnag) api(project(":libs:analytics-events")) + implementation(project(":libs:logging")) implementation(project(":services:flipcash")) implementation(project(":services:opencode")) diff --git a/apps/flipcash/shared/analytics/src/main/kotlin/com/flipcash/app/analytics/internal/MixpanelAnalyticsDelegate.kt b/apps/flipcash/shared/analytics/src/main/kotlin/com/flipcash/app/analytics/internal/MixpanelAnalyticsDelegate.kt index 39408e19a3..ecd4b149db 100644 --- a/apps/flipcash/shared/analytics/src/main/kotlin/com/flipcash/app/analytics/internal/MixpanelAnalyticsDelegate.kt +++ b/apps/flipcash/shared/analytics/src/main/kotlin/com/flipcash/app/analytics/internal/MixpanelAnalyticsDelegate.kt @@ -5,7 +5,7 @@ import com.flipcash.analytics.PeopleCounter import com.flipcash.app.analytics.FlipcashAnalytics import com.flipcash.analytics.PropertyValue import com.flipcash.app.analytics.TokenSymbolResolver -import com.getcode.services.flipcash.BuildConfig +import com.getcode.utils.BuildFlags import com.getcode.utils.TraceType import com.getcode.utils.trace import com.mixpanel.android.mpmetrics.MixpanelAPI @@ -20,7 +20,7 @@ internal class MixpanelAnalyticsDelegate @Inject constructor( override fun track(event: AnalyticsEvent) { val properties = event.toMixpanelProperties(tokenSymbolResolver) - if (BuildConfig.DEBUG) { + if (BuildFlags.isDebug) { val propsString = properties.entries.joinToString { "${it.key} => ${it.value}" } trace( buildString { @@ -42,7 +42,7 @@ internal class MixpanelAnalyticsDelegate @Inject constructor( // region Internal private fun increment(property: String, amount: Double) { - if (BuildConfig.DEBUG) { + if (BuildFlags.isDebug) { trace("debug increment $property by $amount", type = TraceType.Silent) return } diff --git a/apps/flipcash/shared/authentication/src/main/kotlin/com/flipcash/app/auth/internal/accounts/AccountProfileFetcher.kt b/apps/flipcash/shared/authentication/src/main/kotlin/com/flipcash/app/auth/internal/accounts/AccountProfileFetcher.kt index cc2021b058..65d997bda1 100644 --- a/apps/flipcash/shared/authentication/src/main/kotlin/com/flipcash/app/auth/internal/accounts/AccountProfileFetcher.kt +++ b/apps/flipcash/shared/authentication/src/main/kotlin/com/flipcash/app/auth/internal/accounts/AccountProfileFetcher.kt @@ -4,7 +4,7 @@ import com.flipcash.services.models.GetUserProfileError import com.flipcash.services.models.ProfileIdentifier import com.flipcash.services.repository.AccountRepository import com.flipcash.services.repository.ProfileRepository -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.model.core.ID import javax.inject.Inject diff --git a/apps/flipcash/shared/authentication/src/main/kotlin/com/flipcash/app/auth/internal/credentials/PassphraseCredentialManager.kt b/apps/flipcash/shared/authentication/src/main/kotlin/com/flipcash/app/auth/internal/credentials/PassphraseCredentialManager.kt index bfecc0d7cf..26c2f982d3 100644 --- a/apps/flipcash/shared/authentication/src/main/kotlin/com/flipcash/app/auth/internal/credentials/PassphraseCredentialManager.kt +++ b/apps/flipcash/shared/authentication/src/main/kotlin/com/flipcash/app/auth/internal/credentials/PassphraseCredentialManager.kt @@ -13,7 +13,7 @@ import com.flipcash.app.auth.internal.accounts.AccountStoreMigration import com.flipcash.services.controllers.AccountController import com.flipcash.services.user.AuthState import com.flipcash.services.user.UserManager -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.model.core.ID import com.getcode.utils.base58 import com.getcode.utils.encodeBase64 diff --git a/apps/flipcash/shared/authentication/src/test/kotlin/com/flipcash/app/auth/internal/accounts/AccountProfileFetcherTest.kt b/apps/flipcash/shared/authentication/src/test/kotlin/com/flipcash/app/auth/internal/accounts/AccountProfileFetcherTest.kt index 8900f70124..7eb7c6d3bd 100644 --- a/apps/flipcash/shared/authentication/src/test/kotlin/com/flipcash/app/auth/internal/accounts/AccountProfileFetcherTest.kt +++ b/apps/flipcash/shared/authentication/src/test/kotlin/com/flipcash/app/auth/internal/accounts/AccountProfileFetcherTest.kt @@ -5,7 +5,7 @@ import com.flipcash.services.models.ProfileIdentifier import com.flipcash.services.models.UserProfile import com.flipcash.services.repository.AccountRepository import com.flipcash.services.repository.ProfileRepository -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import io.mockk.coEvery import io.mockk.coVerify import io.mockk.mockk diff --git a/apps/flipcash/shared/chat/build.gradle.kts b/apps/flipcash/shared/chat/build.gradle.kts index fd45bb87cc..a21772a251 100644 --- a/apps/flipcash/shared/chat/build.gradle.kts +++ b/apps/flipcash/shared/chat/build.gradle.kts @@ -35,7 +35,7 @@ dependencies { implementation(project(":apps:flipcash:shared:analytics")) testImplementation(testFixtures(project(":apps:flipcash:shared:analytics"))) implementation(project(":services:flipcash")) - testImplementation(testFixtures(project(":services:flipcash"))) + testImplementation(project(":services:flipcash:test-fixtures")) implementation(project(":libs:network:connectivity:public")) implementation(project(":libs:emojis")) implementation(libs.androidx.lifecycle.process) diff --git a/apps/flipcash/shared/chat/src/test/kotlin/com/flipcash/shared/chat/FullRefreshMembersTest.kt b/apps/flipcash/shared/chat/src/test/kotlin/com/flipcash/shared/chat/FullRefreshMembersTest.kt index 44a674844b..9057715047 100644 --- a/apps/flipcash/shared/chat/src/test/kotlin/com/flipcash/shared/chat/FullRefreshMembersTest.kt +++ b/apps/flipcash/shared/chat/src/test/kotlin/com/flipcash/shared/chat/FullRefreshMembersTest.kt @@ -3,6 +3,7 @@ package com.flipcash.shared.chat import android.content.Context import androidx.test.core.app.ApplicationProvider import com.flipcash.app.persistence.FlipcashDatabase +import com.flipcash.app.persistence.init import com.flipcash.app.persistence.sources.ChatMemberDataSource import com.flipcash.app.persistence.sources.mapper.chat.ChatEntityMapper import com.flipcash.services.controllers.EventStreamingController diff --git a/apps/flipcash/shared/chat/src/test/kotlin/com/flipcash/shared/chat/RealChatArchiveStoreTest.kt b/apps/flipcash/shared/chat/src/test/kotlin/com/flipcash/shared/chat/RealChatArchiveStoreTest.kt index 819673697c..996c9270be 100644 --- a/apps/flipcash/shared/chat/src/test/kotlin/com/flipcash/shared/chat/RealChatArchiveStoreTest.kt +++ b/apps/flipcash/shared/chat/src/test/kotlin/com/flipcash/shared/chat/RealChatArchiveStoreTest.kt @@ -3,6 +3,7 @@ package com.flipcash.shared.chat import android.content.Context import androidx.test.core.app.ApplicationProvider import com.flipcash.app.persistence.FlipcashDatabase +import com.flipcash.app.persistence.init import com.flipcash.app.persistence.sources.ChatArchiveDataSource import com.flipcash.services.models.chat.ChatId import com.flipcash.shared.chat.internal.RealChatArchiveStore diff --git a/apps/flipcash/shared/persistence/db/build.gradle.kts b/apps/flipcash/shared/persistence/db/build.gradle.kts index 75f2a790f1..e3e0a706cf 100644 --- a/apps/flipcash/shared/persistence/db/build.gradle.kts +++ b/apps/flipcash/shared/persistence/db/build.gradle.kts @@ -1,32 +1,49 @@ plugins { - alias(libs.plugins.flipcash.android.feature) + alias(libs.plugins.flipcash.kmp.app.library) + alias(libs.plugins.kotlin.ksp) alias(libs.plugins.androidx.room) } -android { - namespace = "${Gradle.flipcashNamespace}.shared.persistence.db" +kotlin { + android { + namespace = "${Gradle.flipcashNamespace}.shared.persistence.db" + } - room { - schemaDirectory("$projectDir/schemas") + sourceSets { + commonMain.dependencies { + implementation(libs.bundles.kotlinx.serialization) + implementation(libs.androidx.room.runtime) + implementation(libs.androidx.room.paging) + implementation(libs.androidx.paging.common) + + implementation(project(":libs:models")) + implementation(project(":libs:encryption:base58")) + implementation(project(":libs:encryption:utils")) + implementation(project(":libs:logging")) + + implementation(project(":services:flipcash")) + } + androidMain.dependencies { + implementation(libs.androidx.room.ktx) + implementation(libs.androidx.paging.runtime) + } + jvmMain.dependencies { + implementation(libs.androidx.sqlite.bundled) + } + getByName("androidHostTest").dependencies { + implementation(kotlin("test")) + implementation(libs.bundles.unit.testing) + implementation(libs.robolectric) + implementation(libs.androidx.room.testing) + } } } -dependencies { - testImplementation(kotlin("test")) - testImplementation(libs.bundles.unit.testing) - testImplementation(libs.robolectric) - testImplementation(libs.androidx.room.testing) - - implementation(libs.bundles.kotlinx.serialization) - - implementation(libs.bundles.room) - implementation(libs.androidx.paging.runtime) - - ksp(libs.androidx.room.compiler) - - implementation(project(":libs:models")) - implementation(project(":libs:encryption:base58")) - implementation(project(":libs:encryption:utils")) +room { + schemaDirectory("$projectDir/schemas") +} - implementation(project(":services:flipcash")) +dependencies { + add("kspAndroid", libs.androidx.room.compiler) + add("kspJvm", libs.androidx.room.compiler) } diff --git a/apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/ChatFeedUpsertClampTest.kt b/apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/ChatFeedUpsertClampTest.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/ChatFeedUpsertClampTest.kt rename to apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/ChatFeedUpsertClampTest.kt diff --git a/apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/ChatMetadataCatchUpTest.kt b/apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/ChatMetadataCatchUpTest.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/ChatMetadataCatchUpTest.kt rename to apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/ChatMetadataCatchUpTest.kt diff --git a/apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/EncryptedRowMigrationTest.kt b/apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/EncryptedRowMigrationTest.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/EncryptedRowMigrationTest.kt rename to apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/EncryptedRowMigrationTest.kt diff --git a/apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/FlipcashDatabaseInitTest.kt b/apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/FlipcashDatabaseInitTest.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/FlipcashDatabaseInitTest.kt rename to apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/FlipcashDatabaseInitTest.kt diff --git a/apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/TransactionHistoryMigrationTest.kt b/apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/TransactionHistoryMigrationTest.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/TransactionHistoryMigrationTest.kt rename to apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/TransactionHistoryMigrationTest.kt diff --git a/apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/UserProfileMigrationTest.kt b/apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/UserProfileMigrationTest.kt similarity index 98% rename from apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/UserProfileMigrationTest.kt rename to apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/UserProfileMigrationTest.kt index 60042d32c1..cca91c9547 100644 --- a/apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/UserProfileMigrationTest.kt +++ b/apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/UserProfileMigrationTest.kt @@ -5,6 +5,7 @@ import androidx.room.Room import androidx.sqlite.db.SupportSQLiteDatabase import androidx.sqlite.db.SupportSQLiteOpenHelper import androidx.sqlite.db.framework.FrameworkSQLiteOpenHelperFactory +import androidx.sqlite.driver.SupportSQLiteConnection import androidx.test.core.app.ApplicationProvider import com.flipcash.app.persistence.converters.ChatTypeConverters import com.flipcash.app.persistence.converters.SocialAccountSerialized @@ -111,7 +112,7 @@ class UserProfileMigrationTest { arrayOf("u2", 111L, partialProfileJson), ) - FlipcashDatabase.MIGRATION_25_26.migrate(db) + FlipcashDatabase.MIGRATION_25_26.migrate(SupportSQLiteConnection(db)) // One profile row per user (u1 deduped across its two memberships). assertEquals(2, db.count("user_profiles")) diff --git a/apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/converters/ChatTypeConvertersTest.kt b/apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/converters/ChatTypeConvertersTest.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/converters/ChatTypeConvertersTest.kt rename to apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/converters/ChatTypeConvertersTest.kt diff --git a/apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/converters/TokenTypeConvertersTest.kt b/apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/converters/TokenTypeConvertersTest.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/converters/TokenTypeConvertersTest.kt rename to apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/converters/TokenTypeConvertersTest.kt diff --git a/apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/dao/BlockedUserDaoTest.kt b/apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/dao/BlockedUserDaoTest.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/dao/BlockedUserDaoTest.kt rename to apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/dao/BlockedUserDaoTest.kt diff --git a/apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/dao/ChatArchiveDaoTest.kt b/apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/dao/ChatArchiveDaoTest.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/dao/ChatArchiveDaoTest.kt rename to apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/dao/ChatArchiveDaoTest.kt diff --git a/apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/dao/ChatDraftDaoTest.kt b/apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/dao/ChatDraftDaoTest.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/dao/ChatDraftDaoTest.kt rename to apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/dao/ChatDraftDaoTest.kt diff --git a/apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/dao/ChatMemberDaoTest.kt b/apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/dao/ChatMemberDaoTest.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/dao/ChatMemberDaoTest.kt rename to apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/dao/ChatMemberDaoTest.kt diff --git a/apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/dao/ChatMessageDaoTest.kt b/apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/dao/ChatMessageDaoTest.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/dao/ChatMessageDaoTest.kt rename to apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/dao/ChatMessageDaoTest.kt diff --git a/apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/dao/ChatMessageUpsertGuardTest.kt b/apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/dao/ChatMessageUpsertGuardTest.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/dao/ChatMessageUpsertGuardTest.kt rename to apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/dao/ChatMessageUpsertGuardTest.kt diff --git a/apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/dao/ChatMetadataDaoTest.kt b/apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/dao/ChatMetadataDaoTest.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/dao/ChatMetadataDaoTest.kt rename to apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/dao/ChatMetadataDaoTest.kt diff --git a/apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/dao/ContactDaoTest.kt b/apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/dao/ContactDaoTest.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/dao/ContactDaoTest.kt rename to apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/dao/ContactDaoTest.kt diff --git a/apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/dao/LinkPreviewDaoTest.kt b/apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/dao/LinkPreviewDaoTest.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/dao/LinkPreviewDaoTest.kt rename to apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/dao/LinkPreviewDaoTest.kt diff --git a/apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/dao/MessageDaoTest.kt b/apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/dao/MessageDaoTest.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/dao/MessageDaoTest.kt rename to apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/dao/MessageDaoTest.kt diff --git a/apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/dao/PendingMediaDaoTest.kt b/apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/dao/PendingMediaDaoTest.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/dao/PendingMediaDaoTest.kt rename to apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/dao/PendingMediaDaoTest.kt diff --git a/apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/dao/TokenDaoTest.kt b/apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/dao/TokenDaoTest.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/dao/TokenDaoTest.kt rename to apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/dao/TokenDaoTest.kt diff --git a/apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/dao/UnreadBelowBadgeTest.kt b/apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/dao/UnreadBelowBadgeTest.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/test/kotlin/com/flipcash/app/persistence/dao/UnreadBelowBadgeTest.kt rename to apps/flipcash/shared/persistence/db/src/androidHostTest/kotlin/com/flipcash/app/persistence/dao/UnreadBelowBadgeTest.kt diff --git a/apps/flipcash/shared/persistence/db/src/androidMain/kotlin/com/flipcash/app/persistence/FlipcashDatabaseInit.kt b/apps/flipcash/shared/persistence/db/src/androidMain/kotlin/com/flipcash/app/persistence/FlipcashDatabaseInit.kt new file mode 100644 index 0000000000..339434e031 --- /dev/null +++ b/apps/flipcash/shared/persistence/db/src/androidMain/kotlin/com/flipcash/app/persistence/FlipcashDatabaseInit.kt @@ -0,0 +1,11 @@ +package com.flipcash.app.persistence + +import android.content.Context +import androidx.room.Room + +/** Opens the per-account database in the app's database directory. */ +fun FlipcashDatabase.Companion.init(context: Context, entropyB64: String) = + init(entropyB64) { name -> Room.databaseBuilder(context, FlipcashDatabase::class.java, name) } + +/** Whether the current database's connection is open. Room exposes this on Android only. */ +fun FlipcashDatabase.Companion.isOpen() = getInstance()?.isOpen == true diff --git a/apps/flipcash/shared/persistence/db/src/androidMain/kotlin/com/flipcash/app/persistence/Transactions.android.kt b/apps/flipcash/shared/persistence/db/src/androidMain/kotlin/com/flipcash/app/persistence/Transactions.android.kt new file mode 100644 index 0000000000..0c24c16320 --- /dev/null +++ b/apps/flipcash/shared/persistence/db/src/androidMain/kotlin/com/flipcash/app/persistence/Transactions.android.kt @@ -0,0 +1,6 @@ +package com.flipcash.app.persistence + +import androidx.room.RoomDatabase +import androidx.room.withTransaction + +actual suspend fun RoomDatabase.inTransaction(block: suspend () -> R): R = withTransaction(block) diff --git a/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/FlipcashDatabase.kt b/apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/FlipcashDatabase.kt similarity index 86% rename from apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/FlipcashDatabase.kt rename to apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/FlipcashDatabase.kt index 309f74ac3d..670f7326c1 100644 --- a/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/FlipcashDatabase.kt +++ b/apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/FlipcashDatabase.kt @@ -1,17 +1,16 @@ package com.flipcash.app.persistence -import android.content.Context import androidx.room.AutoMigration +import androidx.room.ConstructedBy import androidx.room.Database import androidx.room.DeleteColumn import androidx.room.DeleteTable -import androidx.room.Room import androidx.room.RoomDatabase +import androidx.room.RoomDatabaseConstructor import androidx.room.TypeConverters import androidx.room.migration.AutoMigrationSpec import androidx.room.migration.Migration import androidx.sqlite.SQLiteConnection -import androidx.sqlite.db.SupportSQLiteDatabase import androidx.sqlite.execSQL import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow @@ -51,6 +50,7 @@ import com.getcode.utils.TraceType import com.getcode.utils.trace import com.getcode.vendor.Base58 import com.getcode.utils.subByteArray +import kotlin.jvm.Synchronized @Database( entities = [ @@ -130,6 +130,7 @@ import com.getcode.utils.subByteArray version = 45, ) @TypeConverters(TokenTypeConverters::class, ChatTypeConverters::class) +@ConstructedBy(FlipcashDatabaseConstructor::class) abstract class FlipcashDatabase : RoomDatabase() { abstract fun messageDao(): MessageDao @@ -147,22 +148,22 @@ abstract class FlipcashDatabase : RoomDatabase() { abstract fun pendingMediaDao(): PendingMediaDao class Migration1To2 : Migration(1, 2), AutoMigrationSpec { - override fun migrate(db: SupportSQLiteDatabase) { - db.execSQL("DELETE FROM messages") + override fun migrate(connection: SQLiteConnection) { + connection.execSQL("DELETE FROM messages") } } class Migration3To4 : Migration(3, 4), AutoMigrationSpec { - override fun migrate(db: SupportSQLiteDatabase) { - db.execSQL("DELETE FROM pool_metadata") - db.execSQL("DELETE FROM pool_bet_metadata") + override fun migrate(connection: SQLiteConnection) { + connection.execSQL("DELETE FROM pool_metadata") + connection.execSQL("DELETE FROM pool_bet_metadata") } } class Migration4To5 : Migration(4, 5), AutoMigrationSpec { - override fun migrate(db: SupportSQLiteDatabase) { - db.execSQL("DELETE FROM pool_metadata") - db.execSQL("DELETE FROM pool_bet_metadata") + override fun migrate(connection: SQLiteConnection) { + connection.execSQL("DELETE FROM pool_metadata") + connection.execSQL("DELETE FROM pool_bet_metadata") } } @@ -181,27 +182,27 @@ abstract class FlipcashDatabase : RoomDatabase() { ), ) class Migration5To6 : Migration(5, 6), AutoMigrationSpec { - override fun migrate(db: SupportSQLiteDatabase) { - db.execSQL("DELETE FROM pool_metadata") - db.execSQL("DELETE FROM pool_bet_metadata") + override fun migrate(connection: SQLiteConnection) { + connection.execSQL("DELETE FROM pool_metadata") + connection.execSQL("DELETE FROM pool_bet_metadata") } } class Migration6To7 : Migration(6, 7), AutoMigrationSpec { - override fun migrate(db: SupportSQLiteDatabase) { - db.execSQL("DELETE FROM messages") + override fun migrate(connection: SQLiteConnection) { + connection.execSQL("DELETE FROM messages") } } class Migration7To8 : Migration(7, 8), AutoMigrationSpec { - override fun migrate(db: SupportSQLiteDatabase) { - db.execSQL("DELETE FROM messages") + override fun migrate(connection: SQLiteConnection) { + connection.execSQL("DELETE FROM messages") } } class Migration9To10 : Migration(9, 10), AutoMigrationSpec { - override fun migrate(db: SupportSQLiteDatabase) { - db.execSQL("DELETE FROM messages") + override fun migrate(connection: SQLiteConnection) { + connection.execSQL("DELETE FROM messages") } } @@ -213,9 +214,9 @@ abstract class FlipcashDatabase : RoomDatabase() { class Migration10To11 : Migration(10, 11), AutoMigrationSpec class Migration12To13 : Migration(12, 13), AutoMigrationSpec { - override fun migrate(db: SupportSQLiteDatabase) { - db.execSQL("DELETE FROM tokens") - db.execSQL("DELETE FROM token_valuation") + override fun migrate(connection: SQLiteConnection) { + connection.execSQL("DELETE FROM tokens") + connection.execSQL("DELETE FROM token_valuation") } } @@ -225,8 +226,8 @@ abstract class FlipcashDatabase : RoomDatabase() { // in onPostMigrate so they keep resolving after the rename instead of falling // through to UNKNOWN. class Migration22To23 : AutoMigrationSpec { - override fun onPostMigrate(db: SupportSQLiteDatabase) { - db.execSQL("UPDATE chat_metadata SET chat_type = 'CONTACT_DM' WHERE chat_type = 'DM'") + override fun onPostMigrate(connection: SQLiteConnection) { + connection.execSQL("UPDATE chat_metadata SET chat_type = 'CONTACT_DM' WHERE chat_type = 'DM'") } } @@ -242,9 +243,8 @@ abstract class FlipcashDatabase : RoomDatabase() { * descending re-seed, and re-fetches the recent feed from scratch; paging refills older * history on demand. * - * Takes the [SQLiteConnection] overload rather than the [SupportSQLiteDatabase] one used by - * [Migration22To23]: the latter only fires when Room is built without a driver, so a future - * `setDriver` would turn the delete into a silent no-op. + * Every migration here takes the [SQLiteConnection] overload: the `SupportSQLiteDatabase` one + * only fires when Room is built without a driver, and the desktop build sets one. */ class Migration28To29 : AutoMigrationSpec { override fun onPostMigrate(connection: SQLiteConnection) { @@ -331,10 +331,10 @@ abstract class FlipcashDatabase : RoomDatabase() { * compatibility with the minSdk-29 SQLite build. */ val MIGRATION_25_26 = object : Migration(25, 26) { - override fun migrate(db: SupportSQLiteDatabase) { + override fun migrate(connection: SQLiteConnection) { // 1. New normalized table. Column set must match UserProfileEntity so // Room's post-migration schema validation passes. - db.execSQL( + connection.execSQL( "CREATE TABLE IF NOT EXISTS `user_profiles` (" + "`user_id_hex` TEXT NOT NULL, " + "`display_name` TEXT NOT NULL, " + @@ -352,45 +352,45 @@ abstract class FlipcashDatabase : RoomDatabase() { // the full profile, so insert it first; blocked_users (name+avatar only) // fills in users not in any chat. display_name is a placeholder until // the backfill parses the blob. - db.execSQL( + connection.execSQL( "INSERT OR IGNORE INTO user_profiles (user_id_hex, display_name, pending_migration_json) " + "SELECT user_id_hex, '', user_profile_json FROM chat_members " + "WHERE user_profile_json IS NOT NULL" ) - db.execSQL( + connection.execSQL( "INSERT OR IGNORE INTO user_profiles (user_id_hex, display_name, pending_migration_json) " + "SELECT user_id_hex, '', user_profile_json FROM blocked_users " + "WHERE user_profile_json IS NOT NULL" ) // 3. Drop the duplicated blob column from chat_members via table-recreate. - db.execSQL( + connection.execSQL( "CREATE TABLE `chat_members_new` (" + "`chat_id_hex` TEXT NOT NULL, " + "`user_id_hex` TEXT NOT NULL, " + "`pointers_json` TEXT, " + "PRIMARY KEY(`chat_id_hex`, `user_id_hex`))" ) - db.execSQL( + connection.execSQL( "INSERT INTO `chat_members_new` (chat_id_hex, user_id_hex, pointers_json) " + "SELECT chat_id_hex, user_id_hex, pointers_json FROM chat_members" ) - db.execSQL("DROP TABLE chat_members") - db.execSQL("ALTER TABLE chat_members_new RENAME TO chat_members") + connection.execSQL("DROP TABLE chat_members") + connection.execSQL("ALTER TABLE chat_members_new RENAME TO chat_members") // 4. Same for blocked_users. - db.execSQL( + connection.execSQL( "CREATE TABLE `blocked_users_new` (" + "`user_id_hex` TEXT NOT NULL, " + "`blocked_at_epoch_ms` INTEGER NOT NULL, " + "PRIMARY KEY(`user_id_hex`))" ) - db.execSQL( + connection.execSQL( "INSERT INTO `blocked_users_new` (user_id_hex, blocked_at_epoch_ms) " + "SELECT user_id_hex, blocked_at_epoch_ms FROM blocked_users" ) - db.execSQL("DROP TABLE blocked_users") - db.execSQL("ALTER TABLE blocked_users_new RENAME TO blocked_users") + connection.execSQL("DROP TABLE blocked_users") + connection.execSQL("ALTER TABLE blocked_users_new RENAME TO blocked_users") } } @@ -411,10 +411,12 @@ abstract class FlipcashDatabase : RoomDatabase() { private const val dbNamePrefix = "fcash_database" - fun isOpen() = instance?.isOpen == true - + /** + * Opens the per-account database. [builder] creates the platform's Room builder for the file + * name; the Android and desktop `init` overloads supply it. + */ @Synchronized - fun init(context: Context, entropyB64: String) { + fun init(entropyB64: String, builder: (name: String) -> RoomDatabase.Builder) { val dbUniqueName = Base58.encode(entropyB64.toByteArray().subByteArray(0, 6)) val targetName = "$dbNamePrefix-$dbUniqueName.db" @@ -433,9 +435,9 @@ abstract class FlipcashDatabase : RoomDatabase() { dbName = targetName instance = - Room.databaseBuilder(context, FlipcashDatabase::class.java, dbName) + builder(dbName) .addMigrations(MIGRATION_25_26) - .fallbackToDestructiveMigration() + .fallbackToDestructiveMigration(dropAllTables = false) .build() trace("database init end", type = TraceType.Process) @@ -449,4 +451,10 @@ abstract class FlipcashDatabase : RoomDatabase() { } } } -} \ No newline at end of file +} + +// Room generates the actual for each target. +@Suppress("KotlinNoActualForExpect") +expect object FlipcashDatabaseConstructor : RoomDatabaseConstructor { + override fun initialize(): FlipcashDatabase +} diff --git a/apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/Transactions.kt b/apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/Transactions.kt new file mode 100644 index 0000000000..ee1763491c --- /dev/null +++ b/apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/Transactions.kt @@ -0,0 +1,9 @@ +package com.flipcash.app.persistence + +import androidx.room.RoomDatabase + +/** + * Runs [block] in a write transaction. Android keeps room-ktx's `withTransaction`; the desktop target + * has no SupportSQLite, so it takes Room's writer connection instead. + */ +expect suspend fun RoomDatabase.inTransaction(block: suspend () -> R): R diff --git a/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/UserProfileBackfill.kt b/apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/UserProfileBackfill.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/UserProfileBackfill.kt rename to apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/UserProfileBackfill.kt diff --git a/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/converters/ChatTypeConverters.kt b/apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/converters/ChatTypeConverters.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/converters/ChatTypeConverters.kt rename to apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/converters/ChatTypeConverters.kt diff --git a/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/converters/TokenTypeConverters.kt b/apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/converters/TokenTypeConverters.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/converters/TokenTypeConverters.kt rename to apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/converters/TokenTypeConverters.kt diff --git a/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/dao/BlockedUserDao.kt b/apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/dao/BlockedUserDao.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/dao/BlockedUserDao.kt rename to apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/dao/BlockedUserDao.kt diff --git a/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/dao/ChatArchiveDao.kt b/apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/dao/ChatArchiveDao.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/dao/ChatArchiveDao.kt rename to apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/dao/ChatArchiveDao.kt diff --git a/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/dao/ChatDraftDao.kt b/apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/dao/ChatDraftDao.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/dao/ChatDraftDao.kt rename to apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/dao/ChatDraftDao.kt diff --git a/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/dao/ChatMemberDao.kt b/apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/dao/ChatMemberDao.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/dao/ChatMemberDao.kt rename to apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/dao/ChatMemberDao.kt diff --git a/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/dao/ChatMessageDao.kt b/apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/dao/ChatMessageDao.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/dao/ChatMessageDao.kt rename to apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/dao/ChatMessageDao.kt diff --git a/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/dao/ChatMetadataDao.kt b/apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/dao/ChatMetadataDao.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/dao/ChatMetadataDao.kt rename to apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/dao/ChatMetadataDao.kt diff --git a/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/dao/ContactDao.kt b/apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/dao/ContactDao.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/dao/ContactDao.kt rename to apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/dao/ContactDao.kt diff --git a/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/dao/CurrencyCreatorDraftDao.kt b/apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/dao/CurrencyCreatorDraftDao.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/dao/CurrencyCreatorDraftDao.kt rename to apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/dao/CurrencyCreatorDraftDao.kt diff --git a/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/dao/LinkPreviewDao.kt b/apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/dao/LinkPreviewDao.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/dao/LinkPreviewDao.kt rename to apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/dao/LinkPreviewDao.kt diff --git a/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/dao/MessageDao.kt b/apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/dao/MessageDao.kt similarity index 97% rename from apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/dao/MessageDao.kt rename to apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/dao/MessageDao.kt index 6b9bc75c02..77a4986179 100644 --- a/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/dao/MessageDao.kt +++ b/apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/dao/MessageDao.kt @@ -7,7 +7,7 @@ import androidx.room.OnConflictStrategy import androidx.room.Query import androidx.room.RawQuery import androidx.room.Transaction -import androidx.sqlite.db.SupportSQLiteQuery +import androidx.room.RoomRawQuery import com.flipcash.app.persistence.entities.MessageEntity import com.getcode.utils.base58 import kotlinx.coroutines.flow.Flow @@ -34,7 +34,7 @@ interface MessageDao { fun observeMessageById(id: List): Flow = observeMessageById(id.base58) @RawQuery - suspend fun queryDirectly(query: SupportSQLiteQuery): List + suspend fun queryDirectly(query: RoomRawQuery): List @Query("SELECT * FROM messages ORDER BY timestamp DESC LIMIT 1") suspend fun getNewestMessage(): MessageEntity? diff --git a/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/dao/PendingMediaDao.kt b/apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/dao/PendingMediaDao.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/dao/PendingMediaDao.kt rename to apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/dao/PendingMediaDao.kt diff --git a/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/dao/TokenDao.kt b/apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/dao/TokenDao.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/dao/TokenDao.kt rename to apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/dao/TokenDao.kt diff --git a/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/dao/UserProfileDao.kt b/apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/dao/UserProfileDao.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/dao/UserProfileDao.kt rename to apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/dao/UserProfileDao.kt diff --git a/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/embedded/LaunchpadMetadataEmbedded.kt b/apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/embedded/LaunchpadMetadataEmbedded.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/embedded/LaunchpadMetadataEmbedded.kt rename to apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/embedded/LaunchpadMetadataEmbedded.kt diff --git a/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/embedded/VmMetadataEmbedded.kt b/apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/embedded/VmMetadataEmbedded.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/embedded/VmMetadataEmbedded.kt rename to apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/embedded/VmMetadataEmbedded.kt diff --git a/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/entities/BlockedUserEntity.kt b/apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/entities/BlockedUserEntity.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/entities/BlockedUserEntity.kt rename to apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/entities/BlockedUserEntity.kt diff --git a/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/entities/ChatArchiveEntity.kt b/apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/entities/ChatArchiveEntity.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/entities/ChatArchiveEntity.kt rename to apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/entities/ChatArchiveEntity.kt diff --git a/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/entities/ChatDraftEntity.kt b/apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/entities/ChatDraftEntity.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/entities/ChatDraftEntity.kt rename to apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/entities/ChatDraftEntity.kt diff --git a/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/entities/ChatMemberEntity.kt b/apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/entities/ChatMemberEntity.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/entities/ChatMemberEntity.kt rename to apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/entities/ChatMemberEntity.kt diff --git a/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/entities/ChatMessageEntity.kt b/apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/entities/ChatMessageEntity.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/entities/ChatMessageEntity.kt rename to apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/entities/ChatMessageEntity.kt diff --git a/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/entities/ChatMetadataEntity.kt b/apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/entities/ChatMetadataEntity.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/entities/ChatMetadataEntity.kt rename to apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/entities/ChatMetadataEntity.kt diff --git a/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/entities/ContactMappingEntity.kt b/apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/entities/ContactMappingEntity.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/entities/ContactMappingEntity.kt rename to apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/entities/ContactMappingEntity.kt diff --git a/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/entities/ContactSyncStateEntity.kt b/apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/entities/ContactSyncStateEntity.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/entities/ContactSyncStateEntity.kt rename to apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/entities/ContactSyncStateEntity.kt diff --git a/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/entities/CurrencyCreatorDraftEntity.kt b/apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/entities/CurrencyCreatorDraftEntity.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/entities/CurrencyCreatorDraftEntity.kt rename to apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/entities/CurrencyCreatorDraftEntity.kt diff --git a/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/entities/LinkPreviewEntity.kt b/apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/entities/LinkPreviewEntity.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/entities/LinkPreviewEntity.kt rename to apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/entities/LinkPreviewEntity.kt diff --git a/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/entities/MessageEntity.kt b/apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/entities/MessageEntity.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/entities/MessageEntity.kt rename to apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/entities/MessageEntity.kt diff --git a/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/entities/PendingMediaEntity.kt b/apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/entities/PendingMediaEntity.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/entities/PendingMediaEntity.kt rename to apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/entities/PendingMediaEntity.kt diff --git a/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/entities/SocialLinkEntity.kt b/apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/entities/SocialLinkEntity.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/entities/SocialLinkEntity.kt rename to apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/entities/SocialLinkEntity.kt diff --git a/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/entities/TokenEntity.kt b/apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/entities/TokenEntity.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/entities/TokenEntity.kt rename to apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/entities/TokenEntity.kt diff --git a/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/entities/TokenValuationEntity.kt b/apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/entities/TokenValuationEntity.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/entities/TokenValuationEntity.kt rename to apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/entities/TokenValuationEntity.kt diff --git a/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/entities/UserProfileEntity.kt b/apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/entities/UserProfileEntity.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/entities/UserProfileEntity.kt rename to apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/entities/UserProfileEntity.kt diff --git a/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/entities/UserProfileEntityMapping.kt b/apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/entities/UserProfileEntityMapping.kt similarity index 100% rename from apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/entities/UserProfileEntityMapping.kt rename to apps/flipcash/shared/persistence/db/src/commonMain/kotlin/com/flipcash/app/persistence/entities/UserProfileEntityMapping.kt diff --git a/apps/flipcash/shared/persistence/db/src/jvmMain/kotlin/com/flipcash/app/persistence/FlipcashDatabaseInit.kt b/apps/flipcash/shared/persistence/db/src/jvmMain/kotlin/com/flipcash/app/persistence/FlipcashDatabaseInit.kt new file mode 100644 index 0000000000..bc1291b0ed --- /dev/null +++ b/apps/flipcash/shared/persistence/db/src/jvmMain/kotlin/com/flipcash/app/persistence/FlipcashDatabaseInit.kt @@ -0,0 +1,15 @@ +package com.flipcash.app.persistence + +import androidx.room.Room +import androidx.sqlite.driver.bundled.BundledSQLiteDriver +import java.io.File +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.IO + +/** Opens the per-account database under [directory], using the bundled SQLite driver. */ +fun FlipcashDatabase.Companion.init(directory: File, entropyB64: String) = + init(entropyB64) { name -> + Room.databaseBuilder(name = File(directory, name).absolutePath) + .setDriver(BundledSQLiteDriver()) + .setQueryCoroutineContext(Dispatchers.IO) + } diff --git a/apps/flipcash/shared/persistence/db/src/jvmMain/kotlin/com/flipcash/app/persistence/Transactions.jvm.kt b/apps/flipcash/shared/persistence/db/src/jvmMain/kotlin/com/flipcash/app/persistence/Transactions.jvm.kt new file mode 100644 index 0000000000..3d2bf9c68e --- /dev/null +++ b/apps/flipcash/shared/persistence/db/src/jvmMain/kotlin/com/flipcash/app/persistence/Transactions.jvm.kt @@ -0,0 +1,8 @@ +package com.flipcash.app.persistence + +import androidx.room.RoomDatabase +import androidx.room.immediateTransaction +import androidx.room.useWriterConnection + +actual suspend fun RoomDatabase.inTransaction(block: suspend () -> R): R = + useWriterConnection { connection -> connection.immediateTransaction { block() } } diff --git a/apps/flipcash/shared/persistence/sources/build.gradle.kts b/apps/flipcash/shared/persistence/sources/build.gradle.kts index 5fa1f607cf..ccb56905b3 100644 --- a/apps/flipcash/shared/persistence/sources/build.gradle.kts +++ b/apps/flipcash/shared/persistence/sources/build.gradle.kts @@ -1,36 +1,44 @@ plugins { - alias(libs.plugins.flipcash.android.feature) + alias(libs.plugins.flipcash.kmp.app.library) + alias(libs.plugins.kotlin.ksp) } -android { - namespace = "${Gradle.flipcashNamespace}.shared.persistence.sources" - defaultConfig { - javaCompileOptions { - annotationProcessorOptions { - arguments += mapOf("room.schemaLocation" to "$projectDir/schemas") - } +kotlin { + android { + namespace = "${Gradle.flipcashNamespace}.shared.persistence.sources" + } + + sourceSets { + commonMain.dependencies { + implementation(libs.bundles.kotlinx.serialization) + implementation(libs.androidx.room.runtime) + implementation(libs.androidx.paging.common) + implementation(libs.javax.inject) + + implementation(project(":apps:flipcash:core")) + implementation(project(":apps:flipcash:shared:persistence:db")) + implementation(project(":libs:coroutines")) + implementation(project(":libs:logging")) + implementation(project(":libs:encryption:base58")) + implementation(project(":libs:encryption:keys")) + implementation(project(":libs:encryption:utils")) + implementation(project(":services:flipcash")) + } + androidMain.dependencies { + implementation(libs.bundles.hilt) + implementation(libs.androidx.room.ktx) + implementation(libs.androidx.paging.runtime) + } + getByName("androidHostTest").dependencies { + implementation(kotlin("test")) + implementation(libs.bundles.unit.testing) + implementation(libs.robolectric) + implementation(project(":services:flipcash:test-fixtures")) } } } dependencies { - testImplementation(kotlin("test")) - testImplementation(libs.bundles.unit.testing) - testImplementation(libs.robolectric) - testImplementation(testFixtures(project(":services:flipcash"))) - - implementation(libs.bundles.kotlinx.serialization) - - implementation(libs.bundles.room) - implementation(libs.androidx.paging.runtime) - - ksp(libs.androidx.room.compiler) - - implementation(project(":apps:flipcash:shared:persistence:db")) - - implementation(project(":libs:encryption:base58")) - implementation(project(":libs:encryption:keys")) - implementation(project(":libs:encryption:utils")) - - implementation(project(":services:flipcash")) + add("kspAndroid", libs.hilt.android.compiler) + add("kspAndroid", libs.hilt.compiler) } diff --git a/apps/flipcash/shared/persistence/sources/src/test/kotlin/com/flipcash/app/persistence/sources/ChatArchiveDataSourceTest.kt b/apps/flipcash/shared/persistence/sources/src/androidHostTest/kotlin/com/flipcash/app/persistence/sources/ChatArchiveDataSourceTest.kt similarity index 100% rename from apps/flipcash/shared/persistence/sources/src/test/kotlin/com/flipcash/app/persistence/sources/ChatArchiveDataSourceTest.kt rename to apps/flipcash/shared/persistence/sources/src/androidHostTest/kotlin/com/flipcash/app/persistence/sources/ChatArchiveDataSourceTest.kt diff --git a/apps/flipcash/shared/persistence/sources/src/test/kotlin/com/flipcash/app/persistence/sources/ChatMetadataDataSourceTest.kt b/apps/flipcash/shared/persistence/sources/src/androidHostTest/kotlin/com/flipcash/app/persistence/sources/ChatMetadataDataSourceTest.kt similarity index 100% rename from apps/flipcash/shared/persistence/sources/src/test/kotlin/com/flipcash/app/persistence/sources/ChatMetadataDataSourceTest.kt rename to apps/flipcash/shared/persistence/sources/src/androidHostTest/kotlin/com/flipcash/app/persistence/sources/ChatMetadataDataSourceTest.kt diff --git a/apps/flipcash/shared/persistence/sources/src/test/kotlin/com/flipcash/app/persistence/sources/IncomingMessageOpenerTest.kt b/apps/flipcash/shared/persistence/sources/src/androidHostTest/kotlin/com/flipcash/app/persistence/sources/IncomingMessageOpenerTest.kt similarity index 100% rename from apps/flipcash/shared/persistence/sources/src/test/kotlin/com/flipcash/app/persistence/sources/IncomingMessageOpenerTest.kt rename to apps/flipcash/shared/persistence/sources/src/androidHostTest/kotlin/com/flipcash/app/persistence/sources/IncomingMessageOpenerTest.kt diff --git a/apps/flipcash/shared/persistence/sources/src/test/kotlin/com/flipcash/app/persistence/sources/MessageDataSourceTest.kt b/apps/flipcash/shared/persistence/sources/src/androidHostTest/kotlin/com/flipcash/app/persistence/sources/MessageDataSourceTest.kt similarity index 100% rename from apps/flipcash/shared/persistence/sources/src/test/kotlin/com/flipcash/app/persistence/sources/MessageDataSourceTest.kt rename to apps/flipcash/shared/persistence/sources/src/androidHostTest/kotlin/com/flipcash/app/persistence/sources/MessageDataSourceTest.kt diff --git a/apps/flipcash/shared/persistence/sources/src/test/kotlin/com/flipcash/app/persistence/sources/UnreadStreamReadinessTest.kt b/apps/flipcash/shared/persistence/sources/src/androidHostTest/kotlin/com/flipcash/app/persistence/sources/UnreadStreamReadinessTest.kt similarity index 98% rename from apps/flipcash/shared/persistence/sources/src/test/kotlin/com/flipcash/app/persistence/sources/UnreadStreamReadinessTest.kt rename to apps/flipcash/shared/persistence/sources/src/androidHostTest/kotlin/com/flipcash/app/persistence/sources/UnreadStreamReadinessTest.kt index 931396eff4..1af5af307b 100644 --- a/apps/flipcash/shared/persistence/sources/src/test/kotlin/com/flipcash/app/persistence/sources/UnreadStreamReadinessTest.kt +++ b/apps/flipcash/shared/persistence/sources/src/androidHostTest/kotlin/com/flipcash/app/persistence/sources/UnreadStreamReadinessTest.kt @@ -4,6 +4,7 @@ import android.content.Context import androidx.test.core.app.ApplicationProvider import app.cash.turbine.test import com.flipcash.app.persistence.FlipcashDatabase +import com.flipcash.app.persistence.init import com.flipcash.app.persistence.converters.MessageContentSerialized import com.flipcash.app.persistence.converters.MessagePointerSerialized import com.flipcash.app.persistence.entities.ChatMemberEntity diff --git a/apps/flipcash/shared/persistence/sources/src/test/kotlin/com/flipcash/app/persistence/sources/UserProfileDataSourceTest.kt b/apps/flipcash/shared/persistence/sources/src/androidHostTest/kotlin/com/flipcash/app/persistence/sources/UserProfileDataSourceTest.kt similarity index 98% rename from apps/flipcash/shared/persistence/sources/src/test/kotlin/com/flipcash/app/persistence/sources/UserProfileDataSourceTest.kt rename to apps/flipcash/shared/persistence/sources/src/androidHostTest/kotlin/com/flipcash/app/persistence/sources/UserProfileDataSourceTest.kt index ee494c58c0..5880636e2e 100644 --- a/apps/flipcash/shared/persistence/sources/src/test/kotlin/com/flipcash/app/persistence/sources/UserProfileDataSourceTest.kt +++ b/apps/flipcash/shared/persistence/sources/src/androidHostTest/kotlin/com/flipcash/app/persistence/sources/UserProfileDataSourceTest.kt @@ -2,6 +2,7 @@ package com.flipcash.app.persistence.sources import app.cash.turbine.test import com.flipcash.app.persistence.FlipcashDatabase +import com.flipcash.app.persistence.init import com.flipcash.services.models.UserProfile import com.getcode.utils.hexEncodedString import kotlinx.coroutines.test.runTest diff --git a/apps/flipcash/shared/persistence/sources/src/test/kotlin/com/flipcash/app/persistence/sources/mapper/chat/ChatEntityMapperTest.kt b/apps/flipcash/shared/persistence/sources/src/androidHostTest/kotlin/com/flipcash/app/persistence/sources/mapper/chat/ChatEntityMapperTest.kt similarity index 100% rename from apps/flipcash/shared/persistence/sources/src/test/kotlin/com/flipcash/app/persistence/sources/mapper/chat/ChatEntityMapperTest.kt rename to apps/flipcash/shared/persistence/sources/src/androidHostTest/kotlin/com/flipcash/app/persistence/sources/mapper/chat/ChatEntityMapperTest.kt diff --git a/apps/flipcash/shared/persistence/sources/src/test/kotlin/com/flipcash/app/persistence/sources/mapper/notifications/MessageEntityToFeedMessageMapperTest.kt b/apps/flipcash/shared/persistence/sources/src/androidHostTest/kotlin/com/flipcash/app/persistence/sources/mapper/notifications/MessageEntityToFeedMessageMapperTest.kt similarity index 100% rename from apps/flipcash/shared/persistence/sources/src/test/kotlin/com/flipcash/app/persistence/sources/mapper/notifications/MessageEntityToFeedMessageMapperTest.kt rename to apps/flipcash/shared/persistence/sources/src/androidHostTest/kotlin/com/flipcash/app/persistence/sources/mapper/notifications/MessageEntityToFeedMessageMapperTest.kt diff --git a/apps/flipcash/shared/persistence/sources/src/test/kotlin/com/flipcash/app/persistence/sources/mapper/notifications/NotificationToEntityMapperTest.kt b/apps/flipcash/shared/persistence/sources/src/androidHostTest/kotlin/com/flipcash/app/persistence/sources/mapper/notifications/NotificationToEntityMapperTest.kt similarity index 100% rename from apps/flipcash/shared/persistence/sources/src/test/kotlin/com/flipcash/app/persistence/sources/mapper/notifications/NotificationToEntityMapperTest.kt rename to apps/flipcash/shared/persistence/sources/src/androidHostTest/kotlin/com/flipcash/app/persistence/sources/mapper/notifications/NotificationToEntityMapperTest.kt diff --git a/apps/flipcash/shared/persistence/sources/src/test/kotlin/com/flipcash/app/persistence/sources/mediator/ChatFeedRemoteMediatorTest.kt b/apps/flipcash/shared/persistence/sources/src/androidHostTest/kotlin/com/flipcash/app/persistence/sources/mediator/ChatFeedRemoteMediatorTest.kt similarity index 100% rename from apps/flipcash/shared/persistence/sources/src/test/kotlin/com/flipcash/app/persistence/sources/mediator/ChatFeedRemoteMediatorTest.kt rename to apps/flipcash/shared/persistence/sources/src/androidHostTest/kotlin/com/flipcash/app/persistence/sources/mediator/ChatFeedRemoteMediatorTest.kt diff --git a/apps/flipcash/shared/persistence/sources/src/test/kotlin/com/flipcash/app/persistence/sources/mediator/ChatMessageRemoteMediatorTest.kt b/apps/flipcash/shared/persistence/sources/src/androidHostTest/kotlin/com/flipcash/app/persistence/sources/mediator/ChatMessageRemoteMediatorTest.kt similarity index 100% rename from apps/flipcash/shared/persistence/sources/src/test/kotlin/com/flipcash/app/persistence/sources/mediator/ChatMessageRemoteMediatorTest.kt rename to apps/flipcash/shared/persistence/sources/src/androidHostTest/kotlin/com/flipcash/app/persistence/sources/mediator/ChatMessageRemoteMediatorTest.kt diff --git a/apps/flipcash/shared/persistence/sources/src/test/kotlin/com/flipcash/app/persistence/sources/mediator/FeedWatermarkTest.kt b/apps/flipcash/shared/persistence/sources/src/androidHostTest/kotlin/com/flipcash/app/persistence/sources/mediator/FeedWatermarkTest.kt similarity index 100% rename from apps/flipcash/shared/persistence/sources/src/test/kotlin/com/flipcash/app/persistence/sources/mediator/FeedWatermarkTest.kt rename to apps/flipcash/shared/persistence/sources/src/androidHostTest/kotlin/com/flipcash/app/persistence/sources/mediator/FeedWatermarkTest.kt diff --git a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/CurrencyCreatorDraftDataSource.kt b/apps/flipcash/shared/persistence/sources/src/androidMain/kotlin/com/flipcash/app/persistence/sources/CurrencyCreatorDraftDataSource.kt similarity index 100% rename from apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/CurrencyCreatorDraftDataSource.kt rename to apps/flipcash/shared/persistence/sources/src/androidMain/kotlin/com/flipcash/app/persistence/sources/CurrencyCreatorDraftDataSource.kt diff --git a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mapper/draft/DraftToEntityMapper.kt b/apps/flipcash/shared/persistence/sources/src/androidMain/kotlin/com/flipcash/app/persistence/sources/mapper/draft/DraftToEntityMapper.kt similarity index 100% rename from apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mapper/draft/DraftToEntityMapper.kt rename to apps/flipcash/shared/persistence/sources/src/androidMain/kotlin/com/flipcash/app/persistence/sources/mapper/draft/DraftToEntityMapper.kt diff --git a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mapper/draft/EntityToDraftMapper.kt b/apps/flipcash/shared/persistence/sources/src/androidMain/kotlin/com/flipcash/app/persistence/sources/mapper/draft/EntityToDraftMapper.kt similarity index 100% rename from apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mapper/draft/EntityToDraftMapper.kt rename to apps/flipcash/shared/persistence/sources/src/androidMain/kotlin/com/flipcash/app/persistence/sources/mapper/draft/EntityToDraftMapper.kt diff --git a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/BlockedUserDataSource.kt b/apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/BlockedUserDataSource.kt similarity index 97% rename from apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/BlockedUserDataSource.kt rename to apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/BlockedUserDataSource.kt index 02443246a8..676c41d187 100644 --- a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/BlockedUserDataSource.kt +++ b/apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/BlockedUserDataSource.kt @@ -2,7 +2,7 @@ package com.flipcash.app.persistence.sources import androidx.paging.PagingSource import androidx.paging.PagingState -import androidx.room.withTransaction +import com.flipcash.app.persistence.inTransaction import com.flipcash.app.persistence.FlipcashDatabase import com.flipcash.app.persistence.entities.BlockedUserEntity import com.flipcash.app.persistence.entities.BlockedUserWithProfile @@ -43,7 +43,7 @@ class BlockedUserDataSource @Inject constructor( suspend fun upsert(resolved: List) { val database = db ?: return - database.withTransaction { + database.inTransaction { database.blockedUserDao().upsert(resolved.map { toEntityMapper.map(it) }) resolved.forEach { database.writeProfile(it) } } @@ -52,7 +52,7 @@ class BlockedUserDataSource @Inject constructor( /** Atomically replaces the cached blocklist — a single Room invalidation, no empty flicker. */ suspend fun replaceAll(resolved: List) { val database = db ?: return - database.withTransaction { + database.inTransaction { database.blockedUserDao().replaceAll(resolved.map { toEntityMapper.map(it) }) resolved.forEach { database.writeProfile(it) } } diff --git a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/ChatArchiveDataSource.kt b/apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/ChatArchiveDataSource.kt similarity index 100% rename from apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/ChatArchiveDataSource.kt rename to apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/ChatArchiveDataSource.kt diff --git a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/ChatDraftDataSource.kt b/apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/ChatDraftDataSource.kt similarity index 100% rename from apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/ChatDraftDataSource.kt rename to apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/ChatDraftDataSource.kt diff --git a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/ChatFeedWriter.kt b/apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/ChatFeedWriter.kt similarity index 92% rename from apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/ChatFeedWriter.kt rename to apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/ChatFeedWriter.kt index 1c6b907771..e5cbb7e986 100644 --- a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/ChatFeedWriter.kt +++ b/apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/ChatFeedWriter.kt @@ -1,6 +1,6 @@ package com.flipcash.app.persistence.sources -import androidx.room.withTransaction +import com.flipcash.app.persistence.inTransaction import com.flipcash.app.persistence.FlipcashDatabase import com.flipcash.services.models.chat.ChatMetadata import javax.inject.Inject @@ -31,7 +31,7 @@ class ChatFeedWriter @Inject constructor( messageDataSource.writePrepared(prepared) } val database = FlipcashDatabase.getInstance() - if (database != null) database.withTransaction { body() } else body() + if (database != null) database.inTransaction { body() } else body() messageDataSource.afterWrite(prepared) } } diff --git a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/ChatMemberDataSource.kt b/apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/ChatMemberDataSource.kt similarity index 98% rename from apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/ChatMemberDataSource.kt rename to apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/ChatMemberDataSource.kt index e11f9c44c3..42c74b8efc 100644 --- a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/ChatMemberDataSource.kt +++ b/apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/ChatMemberDataSource.kt @@ -1,6 +1,6 @@ package com.flipcash.app.persistence.sources -import androidx.room.withTransaction +import com.flipcash.app.persistence.inTransaction import com.flipcash.app.persistence.FlipcashDatabase import com.flipcash.app.persistence.sources.mapper.chat.ChatEntityMapper import com.flipcash.services.models.chat.ChatId @@ -92,7 +92,7 @@ class ChatMemberDataSource @Inject constructor( // Member rows and their normalized profiles are written in one transaction so a // member never observes a missing profile mid-write. Profiles go first (the // @Relation reads them). - database.withTransaction { + database.inTransaction { database.userProfileDao().upsertMembers(profileRows(members)) database.chatMemberDao().upsert(members.map { mapper.toEntity(hex, it) }) } @@ -128,7 +128,7 @@ class ChatMemberDataSource @Inject constructor( val database = db ?: return val hex = mapper.chatIdHex(chatId) - database.withTransaction { + database.inTransaction { database.userProfileDao().upsertMembers(profileRows(members)) database.chatMemberDao().upsert(members.map { mapper.toEntity(hex, it) }) database.chatMemberDao().deleteMembersNotIn( diff --git a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/ChatMessageDataSource.kt b/apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/ChatMessageDataSource.kt similarity index 99% rename from apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/ChatMessageDataSource.kt rename to apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/ChatMessageDataSource.kt index 688e5339fc..9513162504 100644 --- a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/ChatMessageDataSource.kt +++ b/apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/ChatMessageDataSource.kt @@ -1,7 +1,7 @@ package com.flipcash.app.persistence.sources import androidx.paging.PagingSource -import androidx.room.withTransaction +import com.flipcash.app.persistence.inTransaction import com.flipcash.app.persistence.FlipcashDatabase import com.flipcash.app.persistence.dao.ChatMessageDao import com.flipcash.app.persistence.entities.ChatMessageEntity @@ -366,7 +366,7 @@ class ChatMessageDataSource @Inject constructor( suspend fun writePrepared(prepared: PreparedMessages) { val database = db ?: return if (prepared.byChat.isEmpty()) return - database.withTransaction { + database.inTransaction { for ((chatId, messages) in prepared.byChat) write(mapper.chatIdHex(chatId), messages) } } diff --git a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/ChatMetadataDataSource.kt b/apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/ChatMetadataDataSource.kt similarity index 100% rename from apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/ChatMetadataDataSource.kt rename to apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/ChatMetadataDataSource.kt diff --git a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/ContactDataSource.kt b/apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/ContactDataSource.kt similarity index 100% rename from apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/ContactDataSource.kt rename to apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/ContactDataSource.kt diff --git a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/IncomingMessageOpener.kt b/apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/IncomingMessageOpener.kt similarity index 100% rename from apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/IncomingMessageOpener.kt rename to apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/IncomingMessageOpener.kt diff --git a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/LinkPreviewDataSource.kt b/apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/LinkPreviewDataSource.kt similarity index 100% rename from apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/LinkPreviewDataSource.kt rename to apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/LinkPreviewDataSource.kt diff --git a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/MessageDataSource.kt b/apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/MessageDataSource.kt similarity index 98% rename from apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/MessageDataSource.kt rename to apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/MessageDataSource.kt index ad35b8678f..9ec8e017cd 100644 --- a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/MessageDataSource.kt +++ b/apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/MessageDataSource.kt @@ -2,7 +2,7 @@ package com.flipcash.app.persistence.sources import androidx.paging.PagingSource import androidx.paging.PagingState -import androidx.sqlite.db.SimpleSQLiteQuery +import androidx.room.RoomRawQuery import com.flipcash.app.persistence.entities.MessageEntity import com.flipcash.app.core.feed.ActivityFeedMessage import com.flipcash.app.persistence.FlipcashDatabase @@ -54,7 +54,7 @@ class MessageDataSource @Inject constructor( } override suspend fun query(whereClause: String): List { - val query = SimpleSQLiteQuery("SELECT * FROM messages WHERE $whereClause") + val query = RoomRawQuery("SELECT * FROM messages WHERE $whereClause") val result = db?.messageDao()?.queryDirectly(query) ?: return emptyList() return result.map { messageEntityMapper.map(it) } } diff --git a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/PendingMediaDataSource.kt b/apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/PendingMediaDataSource.kt similarity index 100% rename from apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/PendingMediaDataSource.kt rename to apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/PendingMediaDataSource.kt diff --git a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/TokenDataSource.kt b/apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/TokenDataSource.kt similarity index 100% rename from apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/TokenDataSource.kt rename to apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/TokenDataSource.kt diff --git a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/UserProfileDataSource.kt b/apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/UserProfileDataSource.kt similarity index 100% rename from apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/UserProfileDataSource.kt rename to apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/UserProfileDataSource.kt diff --git a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mapper/UserProfileDomainMappers.kt b/apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/mapper/UserProfileDomainMappers.kt similarity index 100% rename from apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mapper/UserProfileDomainMappers.kt rename to apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/mapper/UserProfileDomainMappers.kt diff --git a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mapper/blocklist/BlockedUserEntityToProfileMapper.kt b/apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/mapper/blocklist/BlockedUserEntityToProfileMapper.kt similarity index 100% rename from apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mapper/blocklist/BlockedUserEntityToProfileMapper.kt rename to apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/mapper/blocklist/BlockedUserEntityToProfileMapper.kt diff --git a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mapper/blocklist/BlockedUserToEntityMapper.kt b/apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/mapper/blocklist/BlockedUserToEntityMapper.kt similarity index 100% rename from apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mapper/blocklist/BlockedUserToEntityMapper.kt rename to apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/mapper/blocklist/BlockedUserToEntityMapper.kt diff --git a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mapper/chat/ChatEntityMapper.kt b/apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/mapper/chat/ChatEntityMapper.kt similarity index 100% rename from apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mapper/chat/ChatEntityMapper.kt rename to apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/mapper/chat/ChatEntityMapper.kt diff --git a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mapper/notifications/MessageEntityToFeedMessageMapper.kt b/apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/mapper/notifications/MessageEntityToFeedMessageMapper.kt similarity index 100% rename from apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mapper/notifications/MessageEntityToFeedMessageMapper.kt rename to apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/mapper/notifications/MessageEntityToFeedMessageMapper.kt diff --git a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mapper/notifications/NotificationToEntityMapper.kt b/apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/mapper/notifications/NotificationToEntityMapper.kt similarity index 100% rename from apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mapper/notifications/NotificationToEntityMapper.kt rename to apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/mapper/notifications/NotificationToEntityMapper.kt diff --git a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mapper/tokens/EntityToTokenMapper.kt b/apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/mapper/tokens/EntityToTokenMapper.kt similarity index 98% rename from apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mapper/tokens/EntityToTokenMapper.kt rename to apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/mapper/tokens/EntityToTokenMapper.kt index 92b4ccfe96..69c6228baf 100644 --- a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mapper/tokens/EntityToTokenMapper.kt +++ b/apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/mapper/tokens/EntityToTokenMapper.kt @@ -1,6 +1,6 @@ package com.flipcash.app.persistence.sources.mapper.tokens -import android.util.Base64 +import java.util.Base64 import com.flipcash.app.persistence.converters.BillBackgroundSerialized import com.flipcash.app.persistence.converters.BillCustomizationsSerialized import com.flipcash.app.persistence.converters.HolderMetricsSerialized @@ -99,7 +99,7 @@ private fun BillCustomizationsSerialized.toDomain() = TokenBillCustomizations( strength = it.strength, ) }, - icon = icon?.let { Base64.decode(it, Base64.NO_WRAP) }, + icon = icon?.let { Base64.getDecoder().decode(it) }, ) private fun HolderMetricsSerialized.toDomain() = HolderMetrics( diff --git a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mapper/tokens/RelationToTokenWithBalanceMapper.kt b/apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/mapper/tokens/RelationToTokenWithBalanceMapper.kt similarity index 100% rename from apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mapper/tokens/RelationToTokenWithBalanceMapper.kt rename to apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/mapper/tokens/RelationToTokenWithBalanceMapper.kt diff --git a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mapper/tokens/TokenToEntityMapper.kt b/apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/mapper/tokens/TokenToEntityMapper.kt similarity index 98% rename from apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mapper/tokens/TokenToEntityMapper.kt rename to apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/mapper/tokens/TokenToEntityMapper.kt index eee1953820..54710f5007 100644 --- a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mapper/tokens/TokenToEntityMapper.kt +++ b/apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/mapper/tokens/TokenToEntityMapper.kt @@ -1,6 +1,6 @@ package com.flipcash.app.persistence.sources.mapper.tokens -import android.util.Base64 +import java.util.Base64 import com.flipcash.app.persistence.converters.BillBackgroundSerialized import com.flipcash.app.persistence.converters.BillCustomizationsSerialized import com.flipcash.app.persistence.converters.BillTextureSerialized @@ -95,7 +95,7 @@ private fun TokenBillCustomizations.toSerialized() = BillCustomizationsSerialize strength = it.strength, ) }, - icon = icon?.let { Base64.encodeToString(it, Base64.NO_WRAP) }, + icon = icon?.let { Base64.getEncoder().encodeToString(it) }, ) private fun HolderMetrics.toSerialized() = HolderMetricsSerialized( diff --git a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mediator/BlocklistRemoteMediator.kt b/apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/mediator/BlocklistRemoteMediator.kt similarity index 100% rename from apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mediator/BlocklistRemoteMediator.kt rename to apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/mediator/BlocklistRemoteMediator.kt diff --git a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mediator/ChatFeedRemoteMediator.kt b/apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/mediator/ChatFeedRemoteMediator.kt similarity index 100% rename from apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mediator/ChatFeedRemoteMediator.kt rename to apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/mediator/ChatFeedRemoteMediator.kt diff --git a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mediator/ChatMessageRemoteMediator.kt b/apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/mediator/ChatMessageRemoteMediator.kt similarity index 100% rename from apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mediator/ChatMessageRemoteMediator.kt rename to apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/mediator/ChatMessageRemoteMediator.kt diff --git a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mediator/FeedRemoteMediator.kt b/apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/mediator/FeedRemoteMediator.kt similarity index 100% rename from apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mediator/FeedRemoteMediator.kt rename to apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/mediator/FeedRemoteMediator.kt diff --git a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mediator/FeedWatermark.kt b/apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/mediator/FeedWatermark.kt similarity index 100% rename from apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mediator/FeedWatermark.kt rename to apps/flipcash/shared/persistence/sources/src/commonMain/kotlin/com/flipcash/app/persistence/sources/mediator/FeedWatermark.kt diff --git a/apps/flipcash/shared/session/build.gradle.kts b/apps/flipcash/shared/session/build.gradle.kts index d89ecb4b3d..9fb357fa99 100644 --- a/apps/flipcash/shared/session/build.gradle.kts +++ b/apps/flipcash/shared/session/build.gradle.kts @@ -10,7 +10,7 @@ dependencies { testImplementation(kotlin("test")) testImplementation(libs.bundles.unit.testing) testImplementation(project(":libs:coroutines:test-fixtures")) - testImplementation(testFixtures(project(":ui:resources"))) + testImplementation(project(":ui:resources:test-fixtures")) implementation(project(":apps:flipcash:shared:blob")) implementation(project(":apps:flipcash:shared:blocklist")) diff --git a/apps/flipcash/shared/shareable/build.gradle.kts b/apps/flipcash/shared/shareable/build.gradle.kts index 574501ca49..52a8a2b5df 100644 --- a/apps/flipcash/shared/shareable/build.gradle.kts +++ b/apps/flipcash/shared/shareable/build.gradle.kts @@ -10,7 +10,7 @@ dependencies { testImplementation(kotlin("test")) testImplementation(libs.bundles.unit.testing) testImplementation(libs.robolectric) - testImplementation(testFixtures(project(":ui:resources"))) + testImplementation(project(":ui:resources:test-fixtures")) implementation(libs.bundles.kotlinx.serialization) diff --git a/apps/flipcash/shared/shareable/src/main/kotlin/com/flipcash/app/shareable/ShareSheetController.kt b/apps/flipcash/shared/shareable/src/main/kotlin/com/flipcash/app/shareable/ShareSheetController.kt index 7827617c05..acb935aefc 100644 --- a/apps/flipcash/shared/shareable/src/main/kotlin/com/flipcash/app/shareable/ShareSheetController.kt +++ b/apps/flipcash/shared/shareable/src/main/kotlin/com/flipcash/app/shareable/ShareSheetController.kt @@ -4,7 +4,7 @@ import androidx.compose.runtime.ProvidableCompositionLocal import androidx.compose.runtime.staticCompositionLocalOf import com.flipcash.app.core.share.TipCodeExport import com.flipcash.app.core.share.TipCodePreview -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.model.accounts.GiftCardAccount import com.getcode.opencode.model.core.ID import com.getcode.opencode.model.financial.LocalFiat diff --git a/apps/flipcash/shared/tokens/build.gradle.kts b/apps/flipcash/shared/tokens/build.gradle.kts index 9f65fd8f5f..e7825e9269 100644 --- a/apps/flipcash/shared/tokens/build.gradle.kts +++ b/apps/flipcash/shared/tokens/build.gradle.kts @@ -9,8 +9,8 @@ android { dependencies { testImplementation(kotlin("test")) testImplementation(libs.bundles.unit.testing) - testImplementation(testFixtures(project(":ui:resources"))) - testImplementation(testFixtures(project(":libs:currency-math"))) + testImplementation(project(":ui:resources:test-fixtures")) + testImplementation(project(":libs:currency-math:test-fixtures")) testImplementation(libs.mockito.kotlin) api(project(":apps:flipcash:shared:tokens:core")) diff --git a/apps/flipcash/shared/tokens/core/build.gradle.kts b/apps/flipcash/shared/tokens/core/build.gradle.kts index 7ab06290d4..1021b7e231 100644 --- a/apps/flipcash/shared/tokens/core/build.gradle.kts +++ b/apps/flipcash/shared/tokens/core/build.gradle.kts @@ -1,11 +1,15 @@ plugins { - alias(libs.plugins.flipcash.android.library) + alias(libs.plugins.flipcash.kmp.app.library) } -android { - namespace = "${Gradle.flipcashNamespace}.shared.tokens.core" -} +kotlin { + android { + namespace = "${Gradle.flipcashNamespace}.shared.tokens.core" + } -dependencies { - api(project(":services:opencode")) + sourceSets { + commonMain.dependencies { + api(project(":services:opencode")) + } + } } diff --git a/apps/flipcash/shared/tokens/core/src/main/kotlin/com/flipcash/app/tokens/core/ReservesBalanceProvider.kt b/apps/flipcash/shared/tokens/core/src/commonMain/kotlin/com/flipcash/app/tokens/core/ReservesBalanceProvider.kt similarity index 100% rename from apps/flipcash/shared/tokens/core/src/main/kotlin/com/flipcash/app/tokens/core/ReservesBalanceProvider.kt rename to apps/flipcash/shared/tokens/core/src/commonMain/kotlin/com/flipcash/app/tokens/core/ReservesBalanceProvider.kt diff --git a/apps/flipcash/shared/tokens/core/src/main/kotlin/com/flipcash/app/tokens/core/TotalBalanceProvider.kt b/apps/flipcash/shared/tokens/core/src/commonMain/kotlin/com/flipcash/app/tokens/core/TotalBalanceProvider.kt similarity index 100% rename from apps/flipcash/shared/tokens/core/src/main/kotlin/com/flipcash/app/tokens/core/TotalBalanceProvider.kt rename to apps/flipcash/shared/tokens/core/src/commonMain/kotlin/com/flipcash/app/tokens/core/TotalBalanceProvider.kt diff --git a/apps/flipcash/shared/transaction-history/build.gradle.kts b/apps/flipcash/shared/transaction-history/build.gradle.kts index e79a443160..ee44a7fbf1 100644 --- a/apps/flipcash/shared/transaction-history/build.gradle.kts +++ b/apps/flipcash/shared/transaction-history/build.gradle.kts @@ -22,7 +22,7 @@ dependencies { testImplementation(libs.bundles.unit.testing) testImplementation(libs.robolectric) - testImplementation(testFixtures(project(":ui:resources"))) + testImplementation(project(":ui:resources:test-fixtures")) // Screenshot renders only: FlipcashPreview for the theme, ExchangeStub for the currency flag // LocalExchange would otherwise resolve to ExchangeNull. testImplementation(project(":apps:flipcash:shared:theme")) diff --git a/build-logic/convention/src/main/kotlin/KmpAppLibraryConventionPlugin.kt b/build-logic/convention/src/main/kotlin/KmpAppLibraryConventionPlugin.kt index dd47da8950..30e9766e70 100644 --- a/build-logic/convention/src/main/kotlin/KmpAppLibraryConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/KmpAppLibraryConventionPlugin.kt @@ -23,6 +23,8 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension * - `org.jetbrains.kotlin.multiplatform` * - `com.android.kotlin.multiplatform.library` * - `org.jetbrains.kotlin.plugin.serialization` + * - `org.jetbrains.kotlin.plugin.parcelize` -- generates Android parcel code for classes marked + * with `com.getcode.libs.parcelable.Parcelize`, the common stand-in in `:libs:parcelable` * * and declares: * - `android` -- compileSdk and minSdk from the version catalog, host tests enabled with the same @@ -52,6 +54,7 @@ class KmpAppLibraryConventionPlugin : Plugin { apply("org.jetbrains.kotlin.multiplatform") apply("com.android.kotlin.multiplatform.library") apply("org.jetbrains.kotlin.plugin.serialization") + apply("org.jetbrains.kotlin.plugin.parcelize") } val libs = extensions.getByType().named("libs") @@ -72,6 +75,9 @@ class KmpAppLibraryConventionPlugin : Plugin { } } minSdk = minSdkVersion + // Hilt's KSP processors emit Java (factories, hilt_aggregated_deps), which the + // KMP Android target only compiles when Java compilation is enabled. + withJava() withHostTestBuilder {}.configure { isReturnDefaultValues = true isIncludeAndroidResources = true @@ -91,9 +97,14 @@ class KmpAppLibraryConventionPlugin : Plugin { optIn.addAll( "kotlin.time.ExperimentalTime", "kotlin.ExperimentalUnsignedTypes", - "kotlin.RequiresOptIn" + "kotlin.RequiresOptIn", + "kotlin.ExperimentalMultiplatform" + ) + freeCompilerArgs.addAll( + "-Xexpect-actual-classes", + "-P", + "plugin:org.jetbrains.kotlin.parcelize:additionalAnnotation=com.getcode.libs.parcelable.Parcelize" ) - freeCompilerArgs.add("-Xexpect-actual-classes") } sourceSets.named("commonMain") { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 55493d0055..b5f8ec6c08 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -30,6 +30,7 @@ navigation3-lifecycle = "2.11.0" androidx-browser = "1.10.0" androidx-paging = "3.5.3" androidx-room = "2.8.5" +androidx-sqlite = "2.6.2" androidx-work = "2.12.0" androidx-webkit = "1.17.0" @@ -45,6 +46,7 @@ compose-coil = "3.6.3" hilt = "2.59.2" hilt-jetpack = "1.4.0" +compose-multiplatform = "1.12.1" okhttp = "5.5.0" retrofit = "3.0.0" kin-sdk = "2.1.2" @@ -146,6 +148,7 @@ navigation3-runtime = { module = "androidx.navigation3:navigation3-runtime", ver navigation3-ui = { module = "androidx.navigation3:navigation3-ui", version.ref = "navigation3" } lifecycle-viewmodel-navigation3 = { module = "androidx.lifecycle:lifecycle-viewmodel-navigation3", version.ref = "navigation3-lifecycle" } androidx-browser = { module = "androidx.browser:browser", version.ref = "androidx-browser" } +androidx-paging-common = { module = "androidx.paging:paging-common", version.ref = "androidx-paging" } androidx-paging-runtime = { module = "androidx.paging:paging-runtime-ktx", version.ref = "androidx-paging" } androidx-paging-testing = { module = "androidx.paging:paging-testing", version.ref = "androidx-paging" } androidx-room-runtime = { module = "androidx.room:room-runtime", version.ref = "androidx-room" } @@ -153,6 +156,7 @@ androidx-room-compiler = { module = "androidx.room:room-compiler", version.ref = androidx-room-ktx = { module = "androidx.room:room-ktx", version.ref = "androidx-room" } androidx-room-paging = { module = "androidx.room:room-paging", version.ref = "androidx-room" } androidx-room-testing = { module = "androidx.room:room-testing", version.ref = "androidx-room" } +androidx-sqlite-bundled = { module = "androidx.sqlite:sqlite-bundled", version.ref = "androidx-sqlite" } androidx-work = { module = "androidx.work:work-runtime", version.ref = "androidx-work" } androidx-work-testing = { module = "androidx.work:work-testing", version.ref = "androidx-work" } androidx-datastore = { module = "androidx.datastore:datastore-preferences", version.ref = "androidx-datastore" } @@ -170,6 +174,9 @@ coil3-network = { module = "io.coil-kt.coil3:coil-network-okhttp", version.ref = # Hilt hilt-android = { module = "com.google.dagger:hilt-android", version.ref = "hilt" } +# Plain JVM jars: @Module/@Provides/@Binds and @InstallIn/SingletonComponent compile in a KMP commonMain. +dagger = { module = "com.google.dagger:dagger", version.ref = "hilt" } +hilt-core = { module = "com.google.dagger:hilt-core", version.ref = "hilt" } hilt-worker = { module = "androidx.hilt:hilt-work", version.ref = "hilt-jetpack" } hilt-android-compiler = { module = "com.google.dagger:hilt-android-compiler", version.ref = "hilt" } hilt-compiler = { module = "androidx.hilt:hilt-compiler", version.ref = "hilt-jetpack" } @@ -330,10 +337,16 @@ androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-toolin androidx-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling", version.ref = "uiTooling" } androidx-foundation-layout = { group = "androidx.compose.foundation", name = "foundation-layout", version.ref = "foundationLayout" } +jetbrains-compose-runtime = { module = "org.jetbrains.compose.runtime:runtime", version.ref = "compose-multiplatform" } +# On Android these resolve to the androidx artifacts at the version the Compose BOM pins. +jetbrains-compose-foundation = { module = "org.jetbrains.compose.foundation:foundation", version.ref = "compose-multiplatform" } +jetbrains-compose-ui = { module = "org.jetbrains.compose.ui:ui", version.ref = "compose-multiplatform" } + [bundles] compose = ["compose-ui", "compose-foundation", "compose-material", "compose-material-icons-extended", "compose-animation", "compose-activities"] hilt = ["hilt-android", "javax-inject"] hilt-compiler = ["hilt-android-compiler", "hilt-compiler"] +hilt-common = ["javax-inject", "dagger", "hilt-core"] haze = ["haze", "haze-blur", "haze-materials"] room = ["androidx-room-runtime", "androidx-room-ktx", "androidx-room-paging"] firebase = ["firebase-messaging", "firebase-installations"] diff --git a/libs/currency-math/build.gradle.kts b/libs/currency-math/build.gradle.kts index 83886bf25b..89c2dc44ea 100644 --- a/libs/currency-math/build.gradle.kts +++ b/libs/currency-math/build.gradle.kts @@ -1,32 +1,45 @@ plugins { - alias(libs.plugins.flipcash.android.library) - id("com.google.devtools.ksp") - id("org.jetbrains.kotlin.plugin.parcelize") + alias(libs.plugins.flipcash.kmp.app.library) } -android { - namespace = "${Gradle.codeNamespace}.libs.currency.math" - testFixtures { - enable = true +kotlin { + android { + namespace = "${Gradle.codeNamespace}.libs.currency.math" + withDeviceTestBuilder {}.configure { + instrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } } -} - -dependencies { - androidTestImplementation(libs.androidx.junit) - androidTestImplementation(libs.junit) - androidTestImplementation(libs.androidx.test.runner) - - implementation(libs.bundles.hilt) - implementation(project(":libs:currency-math:discrete-curve")) - testFixturesImplementation(libs.kotlinx.coroutines.core) - - testImplementation(kotlin("test")) + sourceSets { + commonMain.dependencies { + implementation(libs.javax.inject) + implementation(project(":libs:currency-math:discrete-curve")) + } + androidMain.dependencies { + implementation(libs.bundles.hilt) + } + // The desktop build ships the same table files Android packs as assets. + jvmMain { + resources.srcDir("src/androidMain/assets") + } + getByName("androidHostTest").dependencies { + implementation(kotlin("test")) + implementation(project(":libs:currency-math:test-fixtures")) + } + getByName("androidDeviceTest").dependencies { + implementation(libs.androidx.junit) + implementation(libs.junit) + implementation(libs.androidx.test.runner) + } + jvmTest.dependencies { + implementation(kotlin("test")) + } + } } val generateCurveTables by tasks.registering(GenerateCurveTables::class) { rustTableUrl.set("https://raw.githubusercontent.com/code-payments/flipcash-program/refs/heads/main/api/src/table.rs") - outputDir.set(layout.projectDirectory.dir("src/main/assets")) + outputDir.set(layout.projectDirectory.dir("src/androidMain/assets")) forceViaGradleProperty.set(providers.gradleProperty("forceCurveTables").map { true }.orElse(false)) // Always regenerate (useful for CI or development) @@ -34,7 +47,8 @@ val generateCurveTables by tasks.registering(GenerateCurveTables::class) { // forceRegenerate.set(true) } -// Make sure tables are generated before assets are merged -tasks.named("preBuild") { +// Make sure tables are generated before either platform packs them. The KMP android target has no +// preBuild task, so hook the compilations instead. +tasks.matching { it.name == "compileAndroidMain" || it.name == "jvmProcessResources" }.configureEach { dependsOn(generateCurveTables) } diff --git a/libs/currency-math/src/androidTest/assets/curve.json b/libs/currency-math/src/androidDeviceTest/assets/curve.json similarity index 100% rename from libs/currency-math/src/androidTest/assets/curve.json rename to libs/currency-math/src/androidDeviceTest/assets/curve.json diff --git a/libs/currency-math/src/androidTest/assets/curve_fractional.json b/libs/currency-math/src/androidDeviceTest/assets/curve_fractional.json similarity index 100% rename from libs/currency-math/src/androidTest/assets/curve_fractional.json rename to libs/currency-math/src/androidDeviceTest/assets/curve_fractional.json diff --git a/libs/currency-math/src/androidTest/java/com/flipcash/libs/currency/math/internal/curves/DiscreteBondingCurveVectorTest.kt b/libs/currency-math/src/androidDeviceTest/kotlin/com/flipcash/libs/currency/math/internal/curves/DiscreteBondingCurveVectorTest.kt similarity index 100% rename from libs/currency-math/src/androidTest/java/com/flipcash/libs/currency/math/internal/curves/DiscreteBondingCurveVectorTest.kt rename to libs/currency-math/src/androidDeviceTest/kotlin/com/flipcash/libs/currency/math/internal/curves/DiscreteBondingCurveVectorTest.kt diff --git a/libs/currency-math/src/test/java/com/flipcash/libs/currency/math/ContinuousBondingCurveTests.kt b/libs/currency-math/src/androidHostTest/kotlin/com/flipcash/libs/currency/math/ContinuousBondingCurveTests.kt similarity index 100% rename from libs/currency-math/src/test/java/com/flipcash/libs/currency/math/ContinuousBondingCurveTests.kt rename to libs/currency-math/src/androidHostTest/kotlin/com/flipcash/libs/currency/math/ContinuousBondingCurveTests.kt diff --git a/libs/currency-math/src/test/java/com/flipcash/libs/currency/math/DiscreteBondingCurveTests.kt b/libs/currency-math/src/androidHostTest/kotlin/com/flipcash/libs/currency/math/DiscreteBondingCurveTests.kt similarity index 100% rename from libs/currency-math/src/test/java/com/flipcash/libs/currency/math/DiscreteBondingCurveTests.kt rename to libs/currency-math/src/androidHostTest/kotlin/com/flipcash/libs/currency/math/DiscreteBondingCurveTests.kt diff --git a/libs/currency-math/src/test/java/com/flipcash/libs/currency/math/EstimationTests.kt b/libs/currency-math/src/androidHostTest/kotlin/com/flipcash/libs/currency/math/EstimationTests.kt similarity index 100% rename from libs/currency-math/src/test/java/com/flipcash/libs/currency/math/EstimationTests.kt rename to libs/currency-math/src/androidHostTest/kotlin/com/flipcash/libs/currency/math/EstimationTests.kt diff --git a/libs/currency-math/src/test/java/com/flipcash/libs/currency/math/EstimatorValueExchangeTests.kt b/libs/currency-math/src/androidHostTest/kotlin/com/flipcash/libs/currency/math/EstimatorValueExchangeTests.kt similarity index 100% rename from libs/currency-math/src/test/java/com/flipcash/libs/currency/math/EstimatorValueExchangeTests.kt rename to libs/currency-math/src/androidHostTest/kotlin/com/flipcash/libs/currency/math/EstimatorValueExchangeTests.kt diff --git a/libs/currency-math/src/test/java/com/flipcash/libs/currency/math/Expects.kt b/libs/currency-math/src/androidHostTest/kotlin/com/flipcash/libs/currency/math/Expects.kt similarity index 100% rename from libs/currency-math/src/test/java/com/flipcash/libs/currency/math/Expects.kt rename to libs/currency-math/src/androidHostTest/kotlin/com/flipcash/libs/currency/math/Expects.kt diff --git a/libs/currency-math/src/test/java/com/flipcash/libs/currency/math/loader/ClasspathTableLoader.kt b/libs/currency-math/src/androidHostTest/kotlin/com/flipcash/libs/currency/math/loader/ClasspathTableLoader.kt similarity index 100% rename from libs/currency-math/src/test/java/com/flipcash/libs/currency/math/loader/ClasspathTableLoader.kt rename to libs/currency-math/src/androidHostTest/kotlin/com/flipcash/libs/currency/math/loader/ClasspathTableLoader.kt diff --git a/libs/currency-math/src/main/assets/discrete_cumulative_table.bin b/libs/currency-math/src/androidMain/assets/discrete_cumulative_table.bin similarity index 100% rename from libs/currency-math/src/main/assets/discrete_cumulative_table.bin rename to libs/currency-math/src/androidMain/assets/discrete_cumulative_table.bin diff --git a/libs/currency-math/src/main/assets/discrete_pricing_table.bin b/libs/currency-math/src/androidMain/assets/discrete_pricing_table.bin similarity index 100% rename from libs/currency-math/src/main/assets/discrete_pricing_table.bin rename to libs/currency-math/src/androidMain/assets/discrete_pricing_table.bin diff --git a/libs/currency-math/src/androidMain/kotlin/com/flipcash/libs/currency/math/Curves.android.kt b/libs/currency-math/src/androidMain/kotlin/com/flipcash/libs/currency/math/Curves.android.kt new file mode 100644 index 0000000000..2315d289b2 --- /dev/null +++ b/libs/currency-math/src/androidMain/kotlin/com/flipcash/libs/currency/math/Curves.android.kt @@ -0,0 +1,6 @@ +package com.flipcash.libs.currency.math + +import android.content.Context +import com.flipcash.libs.currency.math.internal.loader.AndroidTableLoader + +suspend fun Curves.initialize(context: Context) = initialize(AndroidTableLoader(context)) diff --git a/libs/currency-math/src/main/kotlin/com/flipcash/libs/currency/math/internal/loader/AndroidTableLoader.kt b/libs/currency-math/src/androidMain/kotlin/com/flipcash/libs/currency/math/internal/loader/AndroidTableLoader.kt similarity index 89% rename from libs/currency-math/src/main/kotlin/com/flipcash/libs/currency/math/internal/loader/AndroidTableLoader.kt rename to libs/currency-math/src/androidMain/kotlin/com/flipcash/libs/currency/math/internal/loader/AndroidTableLoader.kt index 008ed618dd..cf1f4665fb 100644 --- a/libs/currency-math/src/main/kotlin/com/flipcash/libs/currency/math/internal/loader/AndroidTableLoader.kt +++ b/libs/currency-math/src/androidMain/kotlin/com/flipcash/libs/currency/math/internal/loader/AndroidTableLoader.kt @@ -10,10 +10,6 @@ import kotlinx.coroutines.withContext * [AndroidTableLoader]) so the JVM-only unit test suite -- which has no Android [Context] -- can * satisfy the same initialization path via `FileTableLoader`/`ClasspathTableLoader`. */ -internal interface TableByteLoader { - suspend fun loadTableBytes(name: String): ByteArray -} - internal class AndroidTableLoader(private val context: Context) : TableByteLoader { override suspend fun loadTableBytes(name: String): ByteArray = withContext(Dispatchers.IO) { context.assets.open("$name.bin").use { it.readBytes() } diff --git a/libs/currency-math/src/main/kotlin/com/flipcash/libs/currency/math/Curves.kt b/libs/currency-math/src/commonMain/kotlin/com/flipcash/libs/currency/math/Curves.kt similarity index 71% rename from libs/currency-math/src/main/kotlin/com/flipcash/libs/currency/math/Curves.kt rename to libs/currency-math/src/commonMain/kotlin/com/flipcash/libs/currency/math/Curves.kt index 725543ff15..a95bdcc871 100644 --- a/libs/currency-math/src/main/kotlin/com/flipcash/libs/currency/math/Curves.kt +++ b/libs/currency-math/src/commonMain/kotlin/com/flipcash/libs/currency/math/Curves.kt @@ -1,9 +1,9 @@ package com.flipcash.libs.currency.math -import android.content.Context import com.flipcash.libs.currency.math.internal.DefaultMintMaxTokenSupply import com.flipcash.libs.currency.math.internal.curves.DiscreteBondingCurve -import com.flipcash.libs.currency.math.internal.loader.AndroidTableLoader +import com.flipcash.libs.currency.math.internal.loader.FileTableLoader +import com.flipcash.libs.currency.math.internal.loader.TableByteLoader import java.math.BigDecimal import java.math.MathContext import java.math.RoundingMode @@ -40,10 +40,16 @@ interface BondingCurve { fun formattedTable(): String } +/** + * Loads the discrete curve's tables. Each platform adds its own `initialize` overload that picks the + * table source: the APK's assets on Android, the classpath on the desktop JVM. + */ object Curves { - suspend fun initialize(context: Context) { + internal suspend fun initialize(tableLoader: TableByteLoader) { // only discrete needs to be initialized - val tableLoader = AndroidTableLoader(context) DiscreteBondingCurve.initialize(tableLoader) } + + /** For host tests: reads the tables from this repo's source tree, found by walking up from the working directory. */ + suspend fun initializeFromSourceTree() = initialize(FileTableLoader()) } \ No newline at end of file diff --git a/libs/currency-math/src/main/kotlin/com/flipcash/libs/currency/math/Estimator.kt b/libs/currency-math/src/commonMain/kotlin/com/flipcash/libs/currency/math/Estimator.kt similarity index 100% rename from libs/currency-math/src/main/kotlin/com/flipcash/libs/currency/math/Estimator.kt rename to libs/currency-math/src/commonMain/kotlin/com/flipcash/libs/currency/math/Estimator.kt diff --git a/libs/currency-math/src/main/kotlin/com/flipcash/libs/currency/math/Units.kt b/libs/currency-math/src/commonMain/kotlin/com/flipcash/libs/currency/math/Units.kt similarity index 100% rename from libs/currency-math/src/main/kotlin/com/flipcash/libs/currency/math/Units.kt rename to libs/currency-math/src/commonMain/kotlin/com/flipcash/libs/currency/math/Units.kt diff --git a/libs/currency-math/src/main/kotlin/com/flipcash/libs/currency/math/internal/BigDecimal.kt b/libs/currency-math/src/commonMain/kotlin/com/flipcash/libs/currency/math/internal/BigDecimal.kt similarity index 100% rename from libs/currency-math/src/main/kotlin/com/flipcash/libs/currency/math/internal/BigDecimal.kt rename to libs/currency-math/src/commonMain/kotlin/com/flipcash/libs/currency/math/internal/BigDecimal.kt diff --git a/libs/currency-math/src/main/kotlin/com/flipcash/libs/currency/math/internal/Constants.kt b/libs/currency-math/src/commonMain/kotlin/com/flipcash/libs/currency/math/internal/Constants.kt similarity index 100% rename from libs/currency-math/src/main/kotlin/com/flipcash/libs/currency/math/internal/Constants.kt rename to libs/currency-math/src/commonMain/kotlin/com/flipcash/libs/currency/math/internal/Constants.kt diff --git a/libs/currency-math/src/main/kotlin/com/flipcash/libs/currency/math/internal/curves/ContinuousBondingCurve.kt b/libs/currency-math/src/commonMain/kotlin/com/flipcash/libs/currency/math/internal/curves/ContinuousBondingCurve.kt similarity index 99% rename from libs/currency-math/src/main/kotlin/com/flipcash/libs/currency/math/internal/curves/ContinuousBondingCurve.kt rename to libs/currency-math/src/commonMain/kotlin/com/flipcash/libs/currency/math/internal/curves/ContinuousBondingCurve.kt index f6f1b81754..75cd85dce0 100644 --- a/libs/currency-math/src/main/kotlin/com/flipcash/libs/currency/math/internal/curves/ContinuousBondingCurve.kt +++ b/libs/currency-math/src/commonMain/kotlin/com/flipcash/libs/currency/math/internal/curves/ContinuousBondingCurve.kt @@ -1,6 +1,5 @@ package com.flipcash.libs.currency.math.internal.curves -import android.annotation.SuppressLint import com.flipcash.libs.currency.math.BondingCurve import com.flipcash.libs.currency.math.Valuation import com.flipcash.libs.currency.math.formatter @@ -14,7 +13,6 @@ private val CURVE_A = BigDecimal("11400.230149967394933471") private val CURVE_B = BigDecimal("0.000000877175273521") private val CURVE_C = CURVE_B -@SuppressLint("VisibleForTests") internal class ContinuousBondingCurve( val a: BigDecimal, val b: BigDecimal, diff --git a/libs/currency-math/src/main/kotlin/com/flipcash/libs/currency/math/internal/curves/DiscreteBondingCurve.kt b/libs/currency-math/src/commonMain/kotlin/com/flipcash/libs/currency/math/internal/curves/DiscreteBondingCurve.kt similarity index 100% rename from libs/currency-math/src/main/kotlin/com/flipcash/libs/currency/math/internal/curves/DiscreteBondingCurve.kt rename to libs/currency-math/src/commonMain/kotlin/com/flipcash/libs/currency/math/internal/curves/DiscreteBondingCurve.kt diff --git a/libs/currency-math/src/testFixtures/kotlin/com/flipcash/libs/currency/math/loader/FileTableLoader.kt b/libs/currency-math/src/commonMain/kotlin/com/flipcash/libs/currency/math/internal/loader/FileTableLoader.kt similarity index 81% rename from libs/currency-math/src/testFixtures/kotlin/com/flipcash/libs/currency/math/loader/FileTableLoader.kt rename to libs/currency-math/src/commonMain/kotlin/com/flipcash/libs/currency/math/internal/loader/FileTableLoader.kt index c62f05d9c6..7d27d8cbef 100644 --- a/libs/currency-math/src/testFixtures/kotlin/com/flipcash/libs/currency/math/loader/FileTableLoader.kt +++ b/libs/currency-math/src/commonMain/kotlin/com/flipcash/libs/currency/math/internal/loader/FileTableLoader.kt @@ -1,16 +1,15 @@ -package com.flipcash.libs.currency.math.loader +package com.flipcash.libs.currency.math.internal.loader -import com.flipcash.libs.currency.math.internal.loader.TableByteLoader import java.io.File -class FileTableLoader(private val assetsDir: File) : TableByteLoader { +internal class FileTableLoader(private val assetsDir: File) : TableByteLoader { constructor() : this(resolveAssetsDir()) companion object { private fun resolveAssetsDir(): File { val projectRoot = findProjectRoot() - return File(projectRoot, "libs/currency-math/src/main/assets") + return File(projectRoot, "libs/currency-math/src/androidMain/assets") } private fun findProjectRoot(): File { diff --git a/libs/currency-math/src/commonMain/kotlin/com/flipcash/libs/currency/math/internal/loader/TableByteLoader.kt b/libs/currency-math/src/commonMain/kotlin/com/flipcash/libs/currency/math/internal/loader/TableByteLoader.kt new file mode 100644 index 0000000000..16e1c043e1 --- /dev/null +++ b/libs/currency-math/src/commonMain/kotlin/com/flipcash/libs/currency/math/internal/loader/TableByteLoader.kt @@ -0,0 +1,5 @@ +package com.flipcash.libs.currency.math.internal.loader + +internal interface TableByteLoader { + suspend fun loadTableBytes(name: String): ByteArray +} diff --git a/libs/currency-math/src/jvmMain/kotlin/com/flipcash/libs/currency/math/Curves.jvm.kt b/libs/currency-math/src/jvmMain/kotlin/com/flipcash/libs/currency/math/Curves.jvm.kt new file mode 100644 index 0000000000..4fb1c18631 --- /dev/null +++ b/libs/currency-math/src/jvmMain/kotlin/com/flipcash/libs/currency/math/Curves.jvm.kt @@ -0,0 +1,6 @@ +package com.flipcash.libs.currency.math + +import com.flipcash.libs.currency.math.internal.loader.ClasspathTableLoader + +/** Reads the tables the desktop build packs as JVM resources (the same files Android ships as assets). */ +suspend fun Curves.initialize() = initialize(ClasspathTableLoader()) diff --git a/libs/currency-math/src/jvmMain/kotlin/com/flipcash/libs/currency/math/internal/loader/ClasspathTableLoader.kt b/libs/currency-math/src/jvmMain/kotlin/com/flipcash/libs/currency/math/internal/loader/ClasspathTableLoader.kt new file mode 100644 index 0000000000..7c18f3f1ad --- /dev/null +++ b/libs/currency-math/src/jvmMain/kotlin/com/flipcash/libs/currency/math/internal/loader/ClasspathTableLoader.kt @@ -0,0 +1,12 @@ +package com.flipcash.libs.currency.math.internal.loader + +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext + +internal class ClasspathTableLoader : TableByteLoader { + override suspend fun loadTableBytes(name: String): ByteArray = withContext(Dispatchers.IO) { + val stream = ClasspathTableLoader::class.java.getResourceAsStream("/$name.bin") + ?: error("Missing curve table $name.bin on the classpath") + stream.use { it.readBytes() } + } +} diff --git a/libs/currency-math/src/testFixtures/kotlin/com/flipcash/libs/currency/math/CurveTestInitializer.kt b/libs/currency-math/src/testFixtures/kotlin/com/flipcash/libs/currency/math/CurveTestInitializer.kt deleted file mode 100644 index 6a23027ed6..0000000000 --- a/libs/currency-math/src/testFixtures/kotlin/com/flipcash/libs/currency/math/CurveTestInitializer.kt +++ /dev/null @@ -1,11 +0,0 @@ -package com.flipcash.libs.currency.math - -import com.flipcash.libs.currency.math.internal.curves.DiscreteBondingCurve -import com.flipcash.libs.currency.math.loader.FileTableLoader -import kotlinx.coroutines.runBlocking - -object CurveTestInitializer { - fun initialize() { - runBlocking { DiscreteBondingCurve.initialize(FileTableLoader()) } - } -} diff --git a/libs/currency-math/test-fixtures/build.gradle.kts b/libs/currency-math/test-fixtures/build.gradle.kts new file mode 100644 index 0000000000..ba32e5c763 --- /dev/null +++ b/libs/currency-math/test-fixtures/build.gradle.kts @@ -0,0 +1,15 @@ +plugins { + alias(libs.plugins.flipcash.kmp.app.library) +} + +kotlin { + android { + namespace = "${Gradle.codeNamespace}.libs.currency.math.testfixtures" + } + + sourceSets { + commonMain.dependencies { + api(project(":libs:currency-math")) + } + } +} diff --git a/libs/currency-math/test-fixtures/src/commonMain/kotlin/com/flipcash/libs/currency/math/CurveTestInitializer.kt b/libs/currency-math/test-fixtures/src/commonMain/kotlin/com/flipcash/libs/currency/math/CurveTestInitializer.kt new file mode 100644 index 0000000000..1a64c18ef3 --- /dev/null +++ b/libs/currency-math/test-fixtures/src/commonMain/kotlin/com/flipcash/libs/currency/math/CurveTestInitializer.kt @@ -0,0 +1,9 @@ +package com.flipcash.libs.currency.math + +import kotlinx.coroutines.runBlocking + +object CurveTestInitializer { + fun initialize() { + runBlocking { Curves.initializeFromSourceTree() } + } +} diff --git a/libs/currency/build.gradle.kts b/libs/currency/build.gradle.kts index 67ff4a3adb..7aac9e1ab4 100644 --- a/libs/currency/build.gradle.kts +++ b/libs/currency/build.gradle.kts @@ -1,20 +1,27 @@ plugins { - alias(libs.plugins.flipcash.android.library.compose) + alias(libs.plugins.flipcash.kmp.app.library) + alias(libs.plugins.compose.compiler) id("org.jetbrains.kotlin.plugin.parcelize") } -android { - namespace = "${Gradle.codeNamespace}.libs.currency" -} - -dependencies { - implementation(project(":ui:resources")) - - implementation(libs.bundles.kotlinx.serialization) - implementation(libs.kotlinx.datetime) - implementation(libs.bundles.hilt) +kotlin { + android { + namespace = "${Gradle.codeNamespace}.libs.currency" + androidResources { + enable = true + } + } - androidTestImplementation(libs.androidx.junit) - androidTestImplementation(libs.junit) - androidTestImplementation(libs.androidx.test.runner) + sourceSets { + commonMain.dependencies { + api(project(":libs:parcelable")) + implementation(project(":ui:resources")) + implementation(libs.bundles.kotlinx.serialization) + implementation(libs.kotlinx.datetime) + implementation(libs.kotlinx.coroutines.core) + implementation(libs.jetbrains.compose.runtime) + implementation(libs.androidx.annotation) + implementation(libs.javax.inject) + } + } } diff --git a/libs/currency/src/androidMain/kotlin/com/getcode/utils/CurrencyFormat.kt b/libs/currency/src/androidMain/kotlin/com/getcode/utils/CurrencyFormat.kt new file mode 100644 index 0000000000..448b41b74c --- /dev/null +++ b/libs/currency/src/androidMain/kotlin/com/getcode/utils/CurrencyFormat.kt @@ -0,0 +1,35 @@ +package com.getcode.utils + +import com.getcode.model.Currency +import com.getcode.util.resources.ResourceHelper + +fun Currency.format(resources: ResourceHelper, amount: Double): String { + return formatAmountString( + resources, + this, + amount + ) +} + +fun formatAmountString( + resources: ResourceHelper, + currency: Currency, + amount: Double, + kinSuffix: String = resources.getString(com.getcode.util.resources.R.string.core_kin), + suffix: String = resources.getString(com.getcode.util.resources.R.string.core_ofKin) +): String { + val isKin = currency.code == Currency.Kin.code + + return if (isKin) { + "${FormatUtils.formatWholeRoundDown(amount)}${if (kinSuffix.isNotEmpty()) " $kinSuffix" else ""}" + } else { + when { + currency.code == currency.symbol -> { + FormatUtils.format(amount) + if (suffix.isNotEmpty()) " $suffix" else "" + } + else -> { + "${currency.symbol}${FormatUtils.format(amount)}" + if (suffix.isNotEmpty()) " $suffix" else "" + } + } + } +} \ No newline at end of file diff --git a/libs/currency/src/androidMain/kotlin/com/getcode/utils/CurrencyIcons.android.kt b/libs/currency/src/androidMain/kotlin/com/getcode/utils/CurrencyIcons.android.kt new file mode 100644 index 0000000000..d2c437ef80 --- /dev/null +++ b/libs/currency/src/androidMain/kotlin/com/getcode/utils/CurrencyIcons.android.kt @@ -0,0 +1,9 @@ +package com.getcode.utils + +import com.getcode.libs.currency.R + +internal actual object CurrencyIcons { + actual val kin: Int? = R.drawable.ic_currency_kin + actual val xaf: Int? = R.drawable.ic_currency_xaf + actual val xof: Int? = R.drawable.ic_currency_xof +} diff --git a/libs/currency/src/main/res/drawable/ic_currency_dollar_active.xml b/libs/currency/src/androidMain/res/drawable/ic_currency_dollar_active.xml similarity index 100% rename from libs/currency/src/main/res/drawable/ic_currency_dollar_active.xml rename to libs/currency/src/androidMain/res/drawable/ic_currency_dollar_active.xml diff --git a/libs/currency/src/main/res/drawable/ic_currency_dollar_inactive.xml b/libs/currency/src/androidMain/res/drawable/ic_currency_dollar_inactive.xml similarity index 100% rename from libs/currency/src/main/res/drawable/ic_currency_dollar_inactive.xml rename to libs/currency/src/androidMain/res/drawable/ic_currency_dollar_inactive.xml diff --git a/libs/currency/src/main/res/drawable/ic_currency_kin.xml b/libs/currency/src/androidMain/res/drawable/ic_currency_kin.xml similarity index 100% rename from libs/currency/src/main/res/drawable/ic_currency_kin.xml rename to libs/currency/src/androidMain/res/drawable/ic_currency_kin.xml diff --git a/libs/currency/src/main/res/drawable/ic_currency_xaf.xml b/libs/currency/src/androidMain/res/drawable/ic_currency_xaf.xml similarity index 100% rename from libs/currency/src/main/res/drawable/ic_currency_xaf.xml rename to libs/currency/src/androidMain/res/drawable/ic_currency_xaf.xml diff --git a/libs/currency/src/main/res/drawable/ic_currency_xof.xml b/libs/currency/src/androidMain/res/drawable/ic_currency_xof.xml similarity index 100% rename from libs/currency/src/main/res/drawable/ic_currency_xof.xml rename to libs/currency/src/androidMain/res/drawable/ic_currency_xof.xml diff --git a/libs/currency/src/main/kotlin/com/getcode/model/Currency.kt b/libs/currency/src/commonMain/kotlin/com/getcode/model/Currency.kt similarity index 100% rename from libs/currency/src/main/kotlin/com/getcode/model/Currency.kt rename to libs/currency/src/commonMain/kotlin/com/getcode/model/Currency.kt diff --git a/libs/currency/src/main/kotlin/com/getcode/model/CurrencyCode.kt b/libs/currency/src/commonMain/kotlin/com/getcode/model/CurrencyCode.kt similarity index 100% rename from libs/currency/src/main/kotlin/com/getcode/model/CurrencyCode.kt rename to libs/currency/src/commonMain/kotlin/com/getcode/model/CurrencyCode.kt diff --git a/libs/currency/src/main/kotlin/com/getcode/model/Kin.kt b/libs/currency/src/commonMain/kotlin/com/getcode/model/Kin.kt similarity index 96% rename from libs/currency/src/main/kotlin/com/getcode/model/Kin.kt rename to libs/currency/src/commonMain/kotlin/com/getcode/model/Kin.kt index ae4df25d3c..ca6d385115 100644 --- a/libs/currency/src/main/kotlin/com/getcode/model/Kin.kt +++ b/libs/currency/src/commonMain/kotlin/com/getcode/model/Kin.kt @@ -1,7 +1,7 @@ package com.getcode.model -import android.os.Parcelable -import kotlinx.parcelize.Parcelize +import com.getcode.libs.parcelable.Parcelable +import com.getcode.libs.parcelable.Parcelize import java.math.BigDecimal import java.math.RoundingMode import kotlin.math.floor diff --git a/libs/currency/src/main/kotlin/com/getcode/model/Rate.kt b/libs/currency/src/commonMain/kotlin/com/getcode/model/Rate.kt similarity index 78% rename from libs/currency/src/main/kotlin/com/getcode/model/Rate.kt rename to libs/currency/src/commonMain/kotlin/com/getcode/model/Rate.kt index 1fe4ab900c..6cee497078 100644 --- a/libs/currency/src/main/kotlin/com/getcode/model/Rate.kt +++ b/libs/currency/src/commonMain/kotlin/com/getcode/model/Rate.kt @@ -1,7 +1,7 @@ package com.getcode.model -import android.os.Parcelable -import kotlinx.parcelize.Parcelize +import com.getcode.libs.parcelable.Parcelable +import com.getcode.libs.parcelable.Parcelize import kotlinx.serialization.Serializable @Parcelize diff --git a/libs/currency/src/main/kotlin/com/getcode/model/RegionCode.kt b/libs/currency/src/commonMain/kotlin/com/getcode/model/RegionCode.kt similarity index 100% rename from libs/currency/src/main/kotlin/com/getcode/model/RegionCode.kt rename to libs/currency/src/commonMain/kotlin/com/getcode/model/RegionCode.kt diff --git a/libs/currency/src/commonMain/kotlin/com/getcode/utils/Currency.kt b/libs/currency/src/commonMain/kotlin/com/getcode/utils/Currency.kt new file mode 100644 index 0000000000..55574c3fc0 --- /dev/null +++ b/libs/currency/src/commonMain/kotlin/com/getcode/utils/Currency.kt @@ -0,0 +1,49 @@ +package com.getcode.utils + +import androidx.annotation.DrawableRes +import androidx.compose.runtime.Composable +import com.getcode.model.Currency +import com.getcode.model.CurrencyCode +import com.getcode.util.resources.LocalResources +import com.getcode.util.resources.ResourceHelper +import com.getcode.util.resources.ResourceType + +val Currency.Companion.Kin: Currency + get() = Currency(CurrencyCode.KIN.name, "Kin", CurrencyIcons.kin, "K", 1.00,) + +@get:DrawableRes +val CurrencyCode.flagResId: Int? + @Composable get() { + if (this.name == "KIN") return CurrencyIcons.kin + if (this.name == "XAF") return CurrencyIcons.xaf + if (this.name == "XOF") return CurrencyIcons.xof + + return getRegion()?.name?.let { + getFlag(LocalResources.current!!, it) + } + } + +@DrawableRes +fun Currency.flagResId(resourceHelper: ResourceHelper): Int? { + if (code == "KIN") return CurrencyIcons.kin + if (code == "XAF") return CurrencyIcons.xaf + if (code == "XOF") return CurrencyIcons.xof + + return CurrencyCode.tryValueOf(code)?.let { currency -> + currency.getRegion()?.name + }?.let { regionName -> + getFlag(resourceHelper, regionName) + } +} + + +@DrawableRes +@Suppress("DiscouragedApi") +private fun getFlag(resourceHelper: ResourceHelper, countryCode: String): Int? { + if (countryCode.isEmpty()) return null + val resourceName = "ic_flag_${countryCode.lowercase()}" + return resourceHelper.getIdentifier( + resourceName, + ResourceType.Drawable, + ) +} diff --git a/libs/currency/src/commonMain/kotlin/com/getcode/utils/CurrencyIcons.kt b/libs/currency/src/commonMain/kotlin/com/getcode/utils/CurrencyIcons.kt new file mode 100644 index 0000000000..f3cfe6c501 --- /dev/null +++ b/libs/currency/src/commonMain/kotlin/com/getcode/utils/CurrencyIcons.kt @@ -0,0 +1,11 @@ +package com.getcode.utils + +/** + * Drawable resource IDs for the currencies that have no country flag. Android maps them to the + * module's drawables; desktop has no Android resources, so they are null there. + */ +internal expect object CurrencyIcons { + val kin: Int? + val xaf: Int? + val xof: Int? +} diff --git a/libs/currency/src/main/kotlin/com/getcode/utils/CurrencyUtils.kt b/libs/currency/src/commonMain/kotlin/com/getcode/utils/CurrencyUtils.kt similarity index 92% rename from libs/currency/src/main/kotlin/com/getcode/utils/CurrencyUtils.kt rename to libs/currency/src/commonMain/kotlin/com/getcode/utils/CurrencyUtils.kt index 30e8123a62..ad134fbfc3 100644 --- a/libs/currency/src/main/kotlin/com/getcode/utils/CurrencyUtils.kt +++ b/libs/currency/src/commonMain/kotlin/com/getcode/utils/CurrencyUtils.kt @@ -1,9 +1,7 @@ package com.getcode.utils -import android.annotation.SuppressLint import androidx.compose.runtime.ProvidableCompositionLocal import androidx.compose.runtime.staticCompositionLocalOf -import com.getcode.libs.currency.R import com.getcode.model.Currency import com.getcode.model.CurrencyCode import com.getcode.model.Rate @@ -52,9 +50,9 @@ class CurrencyUtils @Inject constructor( fun getFlagByCurrency(currencyCode: String?): Int? { currencyCode ?: return null - if (currencyCode == "KIN") return R.drawable.ic_currency_kin - if (currencyCode == "XAF") return R.drawable.ic_currency_xaf - if (currencyCode == "XOF") return R.drawable.ic_currency_xof + if (currencyCode == "KIN") return CurrencyIcons.kin + if (currencyCode == "XAF") return CurrencyIcons.xaf + if (currencyCode == "XOF") return CurrencyIcons.xof return CurrencyCode.tryValueOf(currencyCode)?.let { currency -> currency.getRegion()?.name @@ -63,7 +61,7 @@ class CurrencyUtils @Inject constructor( } } - @SuppressLint("DiscouragedApi") + @Suppress("DiscouragedApi") fun getFlag(countryCode: String): Int? { if (countryCode.isEmpty()) return null val resourceName = "ic_flag_${countryCode.lowercase()}" diff --git a/libs/currency/src/main/kotlin/com/getcode/utils/FormatUtils.kt b/libs/currency/src/commonMain/kotlin/com/getcode/utils/FormatUtils.kt similarity index 100% rename from libs/currency/src/main/kotlin/com/getcode/utils/FormatUtils.kt rename to libs/currency/src/commonMain/kotlin/com/getcode/utils/FormatUtils.kt diff --git a/libs/currency/src/main/kotlin/com/getcode/utils/serializer/KinSerializer.kt b/libs/currency/src/commonMain/kotlin/com/getcode/utils/serializer/KinSerializer.kt similarity index 100% rename from libs/currency/src/main/kotlin/com/getcode/utils/serializer/KinSerializer.kt rename to libs/currency/src/commonMain/kotlin/com/getcode/utils/serializer/KinSerializer.kt diff --git a/libs/currency/src/main/kotlin/com/getcode/utils/serializer/RateSerializer.kt b/libs/currency/src/commonMain/kotlin/com/getcode/utils/serializer/RateSerializer.kt similarity index 100% rename from libs/currency/src/main/kotlin/com/getcode/utils/serializer/RateSerializer.kt rename to libs/currency/src/commonMain/kotlin/com/getcode/utils/serializer/RateSerializer.kt diff --git a/libs/currency/src/jvmMain/kotlin/com/getcode/utils/CurrencyIcons.jvm.kt b/libs/currency/src/jvmMain/kotlin/com/getcode/utils/CurrencyIcons.jvm.kt new file mode 100644 index 0000000000..a2b87f0a88 --- /dev/null +++ b/libs/currency/src/jvmMain/kotlin/com/getcode/utils/CurrencyIcons.jvm.kt @@ -0,0 +1,7 @@ +package com.getcode.utils + +internal actual object CurrencyIcons { + actual val kin: Int? = null + actual val xaf: Int? = null + actual val xof: Int? = null +} diff --git a/libs/currency/src/main/kotlin/com/getcode/utils/Currency.kt b/libs/currency/src/main/kotlin/com/getcode/utils/Currency.kt deleted file mode 100644 index a735ba2f66..0000000000 --- a/libs/currency/src/main/kotlin/com/getcode/utils/Currency.kt +++ /dev/null @@ -1,82 +0,0 @@ -package com.getcode.utils - -import android.annotation.SuppressLint -import androidx.annotation.DrawableRes -import androidx.compose.runtime.Composable -import com.getcode.libs.currency.R -import com.getcode.model.Currency -import com.getcode.model.CurrencyCode -import com.getcode.util.resources.LocalResources -import com.getcode.util.resources.ResourceHelper -import com.getcode.util.resources.ResourceType - -val Currency.Companion.Kin: Currency - get() = Currency(CurrencyCode.KIN.name, "Kin", R.drawable.ic_currency_kin, "K", 1.00,) - -@get:DrawableRes -val CurrencyCode.flagResId: Int? - @Composable get() { - if (this.name == "KIN") return R.drawable.ic_currency_kin - if (this.name == "XAF") return R.drawable.ic_currency_xaf - if (this.name == "XOF") return R.drawable.ic_currency_xof - - return getRegion()?.name?.let { - getFlag(LocalResources.current!!, it) - } - } - -@DrawableRes -fun Currency.flagResId(resourceHelper: ResourceHelper): Int? { - if (code == "KIN") return R.drawable.ic_currency_kin - if (code == "XAF") return R.drawable.ic_currency_xaf - if (code == "XOF") return R.drawable.ic_currency_xof - - return CurrencyCode.tryValueOf(code)?.let { currency -> - currency.getRegion()?.name - }?.let { regionName -> - getFlag(resourceHelper, regionName) - } -} - - -@DrawableRes -@SuppressLint("DiscouragedApi") -private fun getFlag(resourceHelper: ResourceHelper, countryCode: String): Int? { - if (countryCode.isEmpty()) return null - val resourceName = "ic_flag_${countryCode.lowercase()}" - return resourceHelper.getIdentifier( - resourceName, - ResourceType.Drawable, - ) -} - -fun Currency.format(resources: ResourceHelper, amount: Double): String { - return formatAmountString( - resources, - this, - amount - ) -} - -fun formatAmountString( - resources: ResourceHelper, - currency: Currency, - amount: Double, - kinSuffix: String = resources.getString(com.getcode.util.resources.R.string.core_kin), - suffix: String = resources.getString(com.getcode.util.resources.R.string.core_ofKin) -): String { - val isKin = currency.code == Currency.Kin.code - - return if (isKin) { - "${FormatUtils.formatWholeRoundDown(amount)}${if (kinSuffix.isNotEmpty()) " $kinSuffix" else ""}" - } else { - when { - currency.code == currency.symbol -> { - FormatUtils.format(amount) + if (suffix.isNotEmpty()) " $suffix" else "" - } - else -> { - "${currency.symbol}${FormatUtils.format(amount)}" + if (suffix.isNotEmpty()) " $suffix" else "" - } - } - } -} \ No newline at end of file diff --git a/libs/datetime/build.gradle.kts b/libs/datetime/build.gradle.kts index b5b2253720..74235dd8d5 100644 --- a/libs/datetime/build.gradle.kts +++ b/libs/datetime/build.gradle.kts @@ -1,14 +1,24 @@ plugins { - alias(libs.plugins.flipcash.android.library.compose) + alias(libs.plugins.flipcash.kmp.app.library) + alias(libs.plugins.compose.compiler) } -android { - namespace = "${Gradle.codeNamespace}.util.datetime" -} - -dependencies { - api(libs.kotlinx.datetime) +kotlin { + android { + namespace = "${Gradle.codeNamespace}.util.datetime" + } - testImplementation(kotlin("test")) - testImplementation(libs.robolectric) + sourceSets { + commonMain.dependencies { + api(libs.kotlinx.datetime) + implementation(libs.jetbrains.compose.runtime) + } + androidMain.dependencies { + implementation(libs.jetbrains.compose.ui) + } + getByName("androidHostTest").dependencies { + implementation(kotlin("test")) + implementation(libs.robolectric) + } + } } diff --git a/libs/datetime/src/test/kotlin/com/getcode/util/DateUtilsTest.kt b/libs/datetime/src/androidHostTest/kotlin/com/getcode/util/DateUtilsTest.kt similarity index 100% rename from libs/datetime/src/test/kotlin/com/getcode/util/DateUtilsTest.kt rename to libs/datetime/src/androidHostTest/kotlin/com/getcode/util/DateUtilsTest.kt diff --git a/libs/datetime/src/test/kotlin/com/getcode/util/InstantExtensionsTest.kt b/libs/datetime/src/androidHostTest/kotlin/com/getcode/util/InstantExtensionsTest.kt similarity index 100% rename from libs/datetime/src/test/kotlin/com/getcode/util/InstantExtensionsTest.kt rename to libs/datetime/src/androidHostTest/kotlin/com/getcode/util/InstantExtensionsTest.kt diff --git a/libs/datetime/src/main/kotlin/com/getcode/util/DateUtils.kt b/libs/datetime/src/androidMain/kotlin/com/getcode/util/DateUtils.kt similarity index 97% rename from libs/datetime/src/main/kotlin/com/getcode/util/DateUtils.kt rename to libs/datetime/src/androidMain/kotlin/com/getcode/util/DateUtils.kt index fd9c3eaf55..0e0f863d71 100644 --- a/libs/datetime/src/main/kotlin/com/getcode/util/DateUtils.kt +++ b/libs/datetime/src/androidMain/kotlin/com/getcode/util/DateUtils.kt @@ -50,8 +50,6 @@ object DateUtils { private fun isYesterday(millis: Long) = isToday(millis + DateUtils.DAY_IN_MILLIS) } -fun Long.toInstantFromMillis() = Instant.fromEpochMilliseconds(this) - fun Instant.formatDateRelatively(): String { return com.getcode.util.DateUtils.getDateRelatively(toEpochMilliseconds()) } diff --git a/libs/datetime/src/main/kotlin/com/getcode/util/Instant.kt b/libs/datetime/src/commonMain/kotlin/com/getcode/util/Instant.kt similarity index 94% rename from libs/datetime/src/main/kotlin/com/getcode/util/Instant.kt rename to libs/datetime/src/commonMain/kotlin/com/getcode/util/Instant.kt index c966ff01bb..7d56a70cb9 100644 --- a/libs/datetime/src/main/kotlin/com/getcode/util/Instant.kt +++ b/libs/datetime/src/commonMain/kotlin/com/getcode/util/Instant.kt @@ -42,4 +42,6 @@ fun Instant.formatLocalized( } else { format(if12Hour, Locale.US) } -} \ No newline at end of file +} + +fun Long.toInstantFromMillis() = kotlin.time.Instant.fromEpochMilliseconds(this) diff --git a/libs/encryption/ed25519/build.gradle.kts b/libs/encryption/ed25519/build.gradle.kts index 28dac3e0e8..7ec3b4596d 100644 --- a/libs/encryption/ed25519/build.gradle.kts +++ b/libs/encryption/ed25519/build.gradle.kts @@ -1,3 +1,4 @@ +import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget plugins { @@ -112,10 +113,26 @@ kotlin { } } + // jvmShared: the string-keyed Ed25519 API for both JVM targets (Android and desktop). + @OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) + applyDefaultHierarchyTemplate { + common { + group("jvmShared") { + withJvm() + withCompilations { it.platformType == KotlinPlatformType.androidJvm } + } + } + } + sourceSets { commonMain { // Ed25519Kmp expect object + KeyPair — no external deps. } + getByName("jvmSharedMain") { + dependencies { + api(project(":libs:parcelable")) + } + } androidMain { dependencies { // Delegate to the JNI module for NDK/CMake compilation. `api` (not diff --git a/libs/encryption/ed25519/src/androidMain/kotlin/com/getcode/ed25519kmp/RandomSeed.android.kt b/libs/encryption/ed25519/src/androidMain/kotlin/com/getcode/ed25519kmp/RandomSeed.android.kt new file mode 100644 index 0000000000..7db1155470 --- /dev/null +++ b/libs/encryption/ed25519/src/androidMain/kotlin/com/getcode/ed25519kmp/RandomSeed.android.kt @@ -0,0 +1,9 @@ +package com.getcode.ed25519kmp + +import com.getcode.ed25519.Ed25519 as JniEd25519 + +internal actual fun randomSeed(size: Int): ByteArray = when (size) { + 16 -> JniEd25519.createSeed16() + 32 -> JniEd25519.createSeed32() + else -> error("Unsupported seed size $size") +} diff --git a/libs/encryption/ed25519/src/jvmMain/kotlin/com/getcode/ed25519kmp/RandomSeed.jvm.kt b/libs/encryption/ed25519/src/jvmMain/kotlin/com/getcode/ed25519kmp/RandomSeed.jvm.kt new file mode 100644 index 0000000000..e763d9088a --- /dev/null +++ b/libs/encryption/ed25519/src/jvmMain/kotlin/com/getcode/ed25519kmp/RandomSeed.jvm.kt @@ -0,0 +1,7 @@ +package com.getcode.ed25519kmp + +import java.security.SecureRandom + +private val random = SecureRandom() + +internal actual fun randomSeed(size: Int): ByteArray = ByteArray(size).also(random::nextBytes) diff --git a/libs/encryption/ed25519/src/jvmSharedMain/kotlin/com/getcode/ed25519kmp/Ed25519.kt b/libs/encryption/ed25519/src/jvmSharedMain/kotlin/com/getcode/ed25519kmp/Ed25519.kt new file mode 100644 index 0000000000..e05c9c31ba --- /dev/null +++ b/libs/encryption/ed25519/src/jvmSharedMain/kotlin/com/getcode/ed25519kmp/Ed25519.kt @@ -0,0 +1,87 @@ +package com.getcode.ed25519kmp + +import com.getcode.libs.parcelable.ManualParcelable +import com.getcode.libs.parcelable.Parcel +import com.getcode.libs.parcelable.parcelableCreator +import java.util.Base64 + +/** + * The string-keyed Ed25519 API the app was written against, shared by Android and desktop. + * + * Mirrors the JNI class `com.getcode.ed25519.Ed25519` member for member, so callers only change + * the import. Key strings keep the JNI's format (unwrapped base64), and a seed made from bytes keeps + * the `Base64.DEFAULT` format the JNI class stored, so serialized seeds and parcels are unchanged. + */ +object Ed25519 { + + fun createKeyPair(): KeyPair = createKeyPair(createSeed32()) + + /** [seed] is base64, as produced by [KeyPair.seed]. */ + fun createKeyPair(seed: String): KeyPair { + val pair = Ed25519Kmp.createKeyPair(decode(seed)) + return KeyPair(encode(pair.publicKey), encode(pair.privateKey), seed) + } + + fun createKeyPair(seed: ByteArray): KeyPair { + val pair = Ed25519Kmp.createKeyPair(seed) + return KeyPair(encode(pair.publicKey), encode(pair.privateKey), encodeDefault(seed)) + } + + fun createSeed16(): ByteArray = randomSeed(16) + + fun createSeed32(): ByteArray = randomSeed(32) + + fun sign(message: ByteArray, keyPair: KeyPair): ByteArray = + Ed25519Kmp.sign(message, keyPair.publicKeyBytes, keyPair.privateKeyBytes) + + fun verify(signature: ByteArray, message: ByteArray, publicKey: ByteArray): Boolean = + Ed25519Kmp.verify(signature, message, publicKey) + + fun onCurve(publicKey: ByteArray): Boolean = Ed25519Kmp.onCurve(publicKey) + + class KeyPair( + val publicKey: String, + val privateKey: String, + val seed: String?, + ) : ManualParcelable { + + val publicKeyBytes: ByteArray get() = decode(publicKey) + + val privateKeyBytes: ByteArray get() = decode(privateKey) + + fun sign(message: ByteArray): ByteArray = Ed25519.sign(message, this) + + fun verify(signature: ByteArray, message: ByteArray): Boolean = + Ed25519.verify(signature, message, publicKeyBytes) + + override fun equals(other: Any?): Boolean = + other is KeyPair && publicKey == other.publicKey && privateKey == other.privateKey + + override fun hashCode(): Int = java.util.Objects.hash(publicKey, privateKey) + + override fun describeContents(): Int = 0 + + override fun writeToParcel(dest: Parcel, flags: Int) { + dest.writeString(publicKey) + dest.writeString(privateKey) + dest.writeString(seed) + } + + companion object { + @JvmField + val CREATOR: Any = parcelableCreator({ arrayOfNulls(it) }) { parcel -> + KeyPair(checkNotNull(parcel.readString()), checkNotNull(parcel.readString()), parcel.readString()) + } + } + } +} + +internal expect fun randomSeed(size: Int): ByteArray + +private fun encode(bytes: ByteArray): String = Base64.getEncoder().encodeToString(bytes) + +// android.util.Base64.DEFAULT: 76-character lines, each ending in "\n". +private fun encodeDefault(bytes: ByteArray): String = + Base64.getMimeEncoder(76, byteArrayOf('\n'.code.toByte())).encodeToString(bytes) + "\n" + +private fun decode(base64: String): ByteArray = Base64.getMimeDecoder().decode(base64) diff --git a/libs/encryption/keys/build.gradle.kts b/libs/encryption/keys/build.gradle.kts index 4e4c81f68c..14c70fec7a 100644 --- a/libs/encryption/keys/build.gradle.kts +++ b/libs/encryption/keys/build.gradle.kts @@ -1,21 +1,27 @@ plugins { - alias(libs.plugins.flipcash.android.library) + alias(libs.plugins.flipcash.kmp.app.library) } -android { - namespace = "${Gradle.codeNamespace}.encryption.keys" -} - -dependencies { - implementation(project(":libs:encryption:base58")) - implementation(project(":libs:encryption:sha256")) - implementation(project(":libs:encryption:utils")) +kotlin { + android { + namespace = "${Gradle.codeNamespace}.encryption.keys" + } - implementation(libs.protobuf.kotlin.lite) - implementation(libs.grpc.okhttp) - implementation(libs.grpc.kotlin) - implementation(libs.bundles.kotlinx.serialization) + sourceSets { + commonMain.dependencies { + implementation(project(":libs:encryption:base58")) + implementation(project(":libs:encryption:sha256")) + implementation(project(":libs:encryption:utils")) + api(project(":libs:parcelable")) - testImplementation(kotlin("test")) - testImplementation(libs.robolectric) + implementation(libs.protobuf.kotlin.lite) + implementation(libs.grpc.okhttp) + implementation(libs.grpc.kotlin) + implementation(libs.bundles.kotlinx.serialization) + } + getByName("androidHostTest").dependencies { + implementation(kotlin("test")) + implementation(libs.robolectric) + } + } } diff --git a/libs/encryption/keys/src/test/kotlin/com/getcode/solana/keys/AccountMetaTest.kt b/libs/encryption/keys/src/androidHostTest/kotlin/com/getcode/solana/keys/AccountMetaTest.kt similarity index 100% rename from libs/encryption/keys/src/test/kotlin/com/getcode/solana/keys/AccountMetaTest.kt rename to libs/encryption/keys/src/androidHostTest/kotlin/com/getcode/solana/keys/AccountMetaTest.kt diff --git a/libs/encryption/keys/src/test/kotlin/com/getcode/solana/keys/KeyInitOrderTest.kt b/libs/encryption/keys/src/androidHostTest/kotlin/com/getcode/solana/keys/KeyInitOrderTest.kt similarity index 100% rename from libs/encryption/keys/src/test/kotlin/com/getcode/solana/keys/KeyInitOrderTest.kt rename to libs/encryption/keys/src/androidHostTest/kotlin/com/getcode/solana/keys/KeyInitOrderTest.kt diff --git a/libs/encryption/keys/src/test/kotlin/com/getcode/solana/keys/KeyTest.kt b/libs/encryption/keys/src/androidHostTest/kotlin/com/getcode/solana/keys/KeyTest.kt similarity index 100% rename from libs/encryption/keys/src/test/kotlin/com/getcode/solana/keys/KeyTest.kt rename to libs/encryption/keys/src/androidHostTest/kotlin/com/getcode/solana/keys/KeyTest.kt diff --git a/libs/encryption/keys/src/test/kotlin/com/getcode/solana/keys/MintTest.kt b/libs/encryption/keys/src/androidHostTest/kotlin/com/getcode/solana/keys/MintTest.kt similarity index 100% rename from libs/encryption/keys/src/test/kotlin/com/getcode/solana/keys/MintTest.kt rename to libs/encryption/keys/src/androidHostTest/kotlin/com/getcode/solana/keys/MintTest.kt diff --git a/libs/encryption/keys/src/test/kotlin/com/getcode/solana/keys/PublicKeyTest.kt b/libs/encryption/keys/src/androidHostTest/kotlin/com/getcode/solana/keys/PublicKeyTest.kt similarity index 100% rename from libs/encryption/keys/src/test/kotlin/com/getcode/solana/keys/PublicKeyTest.kt rename to libs/encryption/keys/src/androidHostTest/kotlin/com/getcode/solana/keys/PublicKeyTest.kt diff --git a/libs/encryption/keys/src/test/kotlin/com/getcode/utils/serializer/SerializerTest.kt b/libs/encryption/keys/src/androidHostTest/kotlin/com/getcode/utils/serializer/SerializerTest.kt similarity index 100% rename from libs/encryption/keys/src/test/kotlin/com/getcode/utils/serializer/SerializerTest.kt rename to libs/encryption/keys/src/androidHostTest/kotlin/com/getcode/utils/serializer/SerializerTest.kt diff --git a/libs/encryption/keys/src/main/kotlin/com/getcode/solana/keys/AccountMeta.kt b/libs/encryption/keys/src/commonMain/kotlin/com/getcode/solana/keys/AccountMeta.kt similarity index 100% rename from libs/encryption/keys/src/main/kotlin/com/getcode/solana/keys/AccountMeta.kt rename to libs/encryption/keys/src/commonMain/kotlin/com/getcode/solana/keys/AccountMeta.kt diff --git a/libs/encryption/keys/src/main/kotlin/com/getcode/solana/keys/Key.kt b/libs/encryption/keys/src/commonMain/kotlin/com/getcode/solana/keys/Key.kt similarity index 100% rename from libs/encryption/keys/src/main/kotlin/com/getcode/solana/keys/Key.kt rename to libs/encryption/keys/src/commonMain/kotlin/com/getcode/solana/keys/Key.kt diff --git a/libs/encryption/keys/src/main/kotlin/com/getcode/solana/keys/MerkleProof.kt b/libs/encryption/keys/src/commonMain/kotlin/com/getcode/solana/keys/MerkleProof.kt similarity index 100% rename from libs/encryption/keys/src/main/kotlin/com/getcode/solana/keys/MerkleProof.kt rename to libs/encryption/keys/src/commonMain/kotlin/com/getcode/solana/keys/MerkleProof.kt diff --git a/libs/encryption/keys/src/main/kotlin/com/getcode/solana/keys/Mint.kt b/libs/encryption/keys/src/commonMain/kotlin/com/getcode/solana/keys/Mint.kt similarity index 63% rename from libs/encryption/keys/src/main/kotlin/com/getcode/solana/keys/Mint.kt rename to libs/encryption/keys/src/commonMain/kotlin/com/getcode/solana/keys/Mint.kt index 5a4ee3532a..b28294443e 100644 --- a/libs/encryption/keys/src/main/kotlin/com/getcode/solana/keys/Mint.kt +++ b/libs/encryption/keys/src/commonMain/kotlin/com/getcode/solana/keys/Mint.kt @@ -1,7 +1,6 @@ package com.getcode.solana.keys -import android.os.Parcel -import android.os.Parcelable +import com.getcode.libs.parcelable.parcelableCreator import com.getcode.utils.serializer.MintAsStringSerializer import com.getcode.vendor.Base58 import kotlinx.serialization.Serializable @@ -12,11 +11,7 @@ class Mint(bytes: List): PublicKey(bytes) { companion object { @JvmField - val CREATOR: Parcelable.Creator = - object : Parcelable.Creator { - override fun createFromParcel(parcel: Parcel) = Mint(parcel.readString().orEmpty()) - override fun newArray(size: Int) = arrayOfNulls(size) - } + val CREATOR: Any = parcelableCreator({ arrayOfNulls(it) }) { parcel -> Mint(parcel.readString().orEmpty()) } val usdc: Mint get() = Mint("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v") diff --git a/libs/encryption/keys/src/main/kotlin/com/getcode/solana/keys/PublicKey.kt b/libs/encryption/keys/src/commonMain/kotlin/com/getcode/solana/keys/PublicKey.kt similarity index 79% rename from libs/encryption/keys/src/main/kotlin/com/getcode/solana/keys/PublicKey.kt rename to libs/encryption/keys/src/commonMain/kotlin/com/getcode/solana/keys/PublicKey.kt index 8668741349..fbdb8bf627 100644 --- a/libs/encryption/keys/src/main/kotlin/com/getcode/solana/keys/PublicKey.kt +++ b/libs/encryption/keys/src/commonMain/kotlin/com/getcode/solana/keys/PublicKey.kt @@ -1,14 +1,15 @@ package com.getcode.solana.keys -import android.os.Parcel -import android.os.Parcelable +import com.getcode.libs.parcelable.Parcel +import com.getcode.libs.parcelable.ManualParcelable +import com.getcode.libs.parcelable.parcelableCreator import com.getcode.utils.serializer.PublicKeyAsStringSerializer import com.getcode.vendor.Base58 import com.google.protobuf.ByteString import kotlinx.serialization.Serializable @Serializable(with = PublicKeyAsStringSerializer::class) -open class PublicKey(bytes: List) : Key32(bytes), Parcelable { +open class PublicKey(bytes: List) : Key32(bytes), ManualParcelable { constructor(base58: String): this(Base58.decode(base58).toList()) @@ -33,11 +34,7 @@ open class PublicKey(bytes: List) : Key32(bytes), Parcelable { val ZERO: PublicKey = PublicKey(ByteArray(LENGTH_32).toList()) @JvmField - val CREATOR: Parcelable.Creator = - object : Parcelable.Creator { - override fun createFromParcel(parcel: Parcel) = PublicKey(parcel) - override fun newArray(size: Int) = arrayOfNulls(size) - } + val CREATOR: Any = parcelableCreator({ arrayOfNulls(it) }) { parcel -> PublicKey(parcel) } } override fun equals(other: Any?): Boolean { diff --git a/libs/encryption/keys/src/main/kotlin/com/getcode/solana/keys/Types.kt b/libs/encryption/keys/src/commonMain/kotlin/com/getcode/solana/keys/Types.kt similarity index 100% rename from libs/encryption/keys/src/main/kotlin/com/getcode/solana/keys/Types.kt rename to libs/encryption/keys/src/commonMain/kotlin/com/getcode/solana/keys/Types.kt diff --git a/libs/encryption/keys/src/main/kotlin/com/getcode/utils/serializer/ByteListSerializer.kt b/libs/encryption/keys/src/commonMain/kotlin/com/getcode/utils/serializer/ByteListSerializer.kt similarity index 76% rename from libs/encryption/keys/src/main/kotlin/com/getcode/utils/serializer/ByteListSerializer.kt rename to libs/encryption/keys/src/commonMain/kotlin/com/getcode/utils/serializer/ByteListSerializer.kt index cca7ba75e3..ebd71a94b9 100644 --- a/libs/encryption/keys/src/main/kotlin/com/getcode/utils/serializer/ByteListSerializer.kt +++ b/libs/encryption/keys/src/commonMain/kotlin/com/getcode/utils/serializer/ByteListSerializer.kt @@ -1,6 +1,7 @@ package com.getcode.utils.serializer -import android.util.Base64 +import com.getcode.utils.decodeBase64 +import com.getcode.utils.encodeBase64 import kotlinx.serialization.KSerializer import kotlinx.serialization.descriptors.PrimitiveKind import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor @@ -12,10 +13,10 @@ object ByteListAsBase64Serializer : KSerializer> { override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("ByteList", PrimitiveKind.STRING) override fun serialize(encoder: Encoder, value: List) { - encoder.encodeString(Base64.encodeToString(value.toByteArray(), Base64.NO_WRAP)) + encoder.encodeString(value.toByteArray().encodeBase64()) } override fun deserialize(decoder: Decoder): List { - return Base64.decode(decoder.decodeString(), Base64.NO_WRAP).toList() + return decoder.decodeString().decodeBase64().toList() } } diff --git a/libs/encryption/keys/src/main/kotlin/com/getcode/utils/serializer/MintSerializer.kt b/libs/encryption/keys/src/commonMain/kotlin/com/getcode/utils/serializer/MintSerializer.kt similarity index 100% rename from libs/encryption/keys/src/main/kotlin/com/getcode/utils/serializer/MintSerializer.kt rename to libs/encryption/keys/src/commonMain/kotlin/com/getcode/utils/serializer/MintSerializer.kt diff --git a/libs/encryption/keys/src/main/kotlin/com/getcode/utils/serializer/PublicKeySerializer.kt b/libs/encryption/keys/src/commonMain/kotlin/com/getcode/utils/serializer/PublicKeySerializer.kt similarity index 100% rename from libs/encryption/keys/src/main/kotlin/com/getcode/utils/serializer/PublicKeySerializer.kt rename to libs/encryption/keys/src/commonMain/kotlin/com/getcode/utils/serializer/PublicKeySerializer.kt diff --git a/libs/encryption/mnemonic/build.gradle.kts b/libs/encryption/mnemonic/build.gradle.kts index 6752d8968c..812aba854b 100644 --- a/libs/encryption/mnemonic/build.gradle.kts +++ b/libs/encryption/mnemonic/build.gradle.kts @@ -1,3 +1,5 @@ +import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType + plugins { alias(libs.plugins.flipcash.kmp.library) alias(libs.plugins.flipcash.kmp.test.fixtures) @@ -9,7 +11,18 @@ testFixtures { packageName = "com.getcode.crypt" } +@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { + // jvmShared: key and phrase types for both JVM targets (Android and desktop). + applyDefaultHierarchyTemplate { + common { + group("jvmShared") { + withJvm() + withCompilations { it.platformType == KotlinPlatformType.androidJvm } + } + } + } + android { namespace = "com.getcode.encryption.mnemonic" withHostTest {} @@ -32,10 +45,14 @@ kotlin { implementation(libs.kotlinx.serialization.json) } } - androidMain { + getByName("jvmSharedMain") { dependencies { // Legacy vendored Base58 codec (fromEntropyB58/getBase58EncodedEntropy). implementation(project(":libs:encryption:base58")) + } + } + androidMain { + dependencies { // Domain.kt uses android.net.Uri. implementation(libs.androidx.core) } diff --git a/libs/encryption/mnemonic/src/androidMain/kotlin/com/getcode/crypt/MnemonicCache.kt b/libs/encryption/mnemonic/src/androidMain/kotlin/com/getcode/crypt/MnemonicCache.kt deleted file mode 100644 index 44b068ffd9..0000000000 --- a/libs/encryption/mnemonic/src/androidMain/kotlin/com/getcode/crypt/MnemonicCache.kt +++ /dev/null @@ -1,15 +0,0 @@ -package com.getcode.crypt - -import android.content.Context - -object MnemonicCache { - val cachedCode: MnemonicCode = MnemonicCode - - fun init(context: Context) { - // MnemonicCode no longer needs Android resources -- the wordlist is a compile-time - // constant (see Bip39EnglishWordList). Kept so MnemonicCacheInitializer's startup - // call still compiles. - } - - val cache = mutableMapOf, String>, ByteArray>() -} diff --git a/libs/encryption/mnemonic/src/androidMain/kotlin/com/getcode/crypt/DerivedKey.kt b/libs/encryption/mnemonic/src/jvmSharedMain/kotlin/com/getcode/crypt/DerivedKey.kt similarity index 95% rename from libs/encryption/mnemonic/src/androidMain/kotlin/com/getcode/crypt/DerivedKey.kt rename to libs/encryption/mnemonic/src/jvmSharedMain/kotlin/com/getcode/crypt/DerivedKey.kt index a4536b5429..fc534ecf42 100644 --- a/libs/encryption/mnemonic/src/androidMain/kotlin/com/getcode/crypt/DerivedKey.kt +++ b/libs/encryption/mnemonic/src/jvmSharedMain/kotlin/com/getcode/crypt/DerivedKey.kt @@ -1,6 +1,6 @@ package com.getcode.crypt -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 data class DerivedKey(val path: DerivePath, val keyPair: Ed25519.KeyPair) { diff --git a/libs/encryption/mnemonic/src/jvmSharedMain/kotlin/com/getcode/crypt/MnemonicCache.kt b/libs/encryption/mnemonic/src/jvmSharedMain/kotlin/com/getcode/crypt/MnemonicCache.kt new file mode 100644 index 0000000000..7b152e37f3 --- /dev/null +++ b/libs/encryption/mnemonic/src/jvmSharedMain/kotlin/com/getcode/crypt/MnemonicCache.kt @@ -0,0 +1,7 @@ +package com.getcode.crypt + +object MnemonicCache { + val cachedCode: MnemonicCode = MnemonicCode + + val cache = mutableMapOf, String>, ByteArray>() +} diff --git a/libs/encryption/mnemonic/src/androidMain/kotlin/com/getcode/crypt/MnemonicPhrase.kt b/libs/encryption/mnemonic/src/jvmSharedMain/kotlin/com/getcode/crypt/MnemonicPhrase.kt similarity index 98% rename from libs/encryption/mnemonic/src/androidMain/kotlin/com/getcode/crypt/MnemonicPhrase.kt rename to libs/encryption/mnemonic/src/jvmSharedMain/kotlin/com/getcode/crypt/MnemonicPhrase.kt index c8cd5bd23d..c99013c2a1 100644 --- a/libs/encryption/mnemonic/src/androidMain/kotlin/com/getcode/crypt/MnemonicPhrase.kt +++ b/libs/encryption/mnemonic/src/jvmSharedMain/kotlin/com/getcode/crypt/MnemonicPhrase.kt @@ -1,6 +1,6 @@ package com.getcode.crypt -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.utils.decodeBase64 import com.getcode.utils.encodeBase64 import com.getcode.vendor.Base58 diff --git a/libs/encryption/utils/build.gradle.kts b/libs/encryption/utils/build.gradle.kts index 79e57d881d..e8e693884c 100644 --- a/libs/encryption/utils/build.gradle.kts +++ b/libs/encryption/utils/build.gradle.kts @@ -1,8 +1,21 @@ +import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType + plugins { alias(libs.plugins.flipcash.kmp.library) } +@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { + // jvmShared: code for both JVM targets (Android and desktop) that needs java.* or protobuf. + applyDefaultHierarchyTemplate { + common { + group("jvmShared") { + withJvm() + withCompilations { it.platformType == KotlinPlatformType.androidJvm } + } + } + } + android { namespace = "com.getcode.encryption.utils" withHostTest {} @@ -14,10 +27,14 @@ kotlin { implementation(project(":libs:encryption:base58")) } } - androidMain { + getByName("jvmSharedMain") { dependencies { - implementation(project(":libs:encryption:ed25519")) implementation(libs.protobuf.kotlin.lite) + implementation(project(":libs:encryption:ed25519")) + } + } + androidMain { + dependencies { implementation(libs.bundles.kotlinx.serialization) implementation(libs.timber) } diff --git a/libs/encryption/utils/src/androidMain/kotlin/com/getcode/utils/Base64.android.kt b/libs/encryption/utils/src/androidMain/kotlin/com/getcode/utils/Base64.android.kt new file mode 100644 index 0000000000..790debf0d3 --- /dev/null +++ b/libs/encryption/utils/src/androidMain/kotlin/com/getcode/utils/Base64.android.kt @@ -0,0 +1,11 @@ +package com.getcode.utils + +import android.util.Base64 + +internal actual fun base64Encode(bytes: ByteArray, urlSafe: Boolean): ByteArray = + Base64.encode(bytes, flags(urlSafe)) + +internal actual fun base64Decode(bytes: ByteArray, urlSafe: Boolean): ByteArray = + Base64.decode(bytes, flags(urlSafe)) + +private fun flags(urlSafe: Boolean) = if (urlSafe) Base64.NO_WRAP or Base64.URL_SAFE else Base64.NO_WRAP diff --git a/libs/encryption/utils/src/androidMain/kotlin/com/getcode/utils/Extensions.android.kt b/libs/encryption/utils/src/androidMain/kotlin/com/getcode/utils/Extensions.android.kt deleted file mode 100644 index 6bbbd55e96..0000000000 --- a/libs/encryption/utils/src/androidMain/kotlin/com/getcode/utils/Extensions.android.kt +++ /dev/null @@ -1,48 +0,0 @@ -package com.getcode.utils - -import android.util.Base64 -import com.getcode.ed25519.Ed25519 -import com.getcode.vendor.Base58 -import com.google.protobuf.ByteString -import java.net.URLDecoder -import java.net.URLEncoder -import java.security.MessageDigest -import java.security.NoSuchAlgorithmException - -fun List.toByteString(): ByteString = ByteString.copyFrom(this.toByteArray()) -fun ByteArray.toByteString(): ByteString = ByteString.copyFrom(this) - -val List.base64: String - get() = Base64.encodeToString(toByteArray(), Base64.NO_WRAP) - -fun String.decodeBase64(): ByteArray = Base64.decode(this, Base64.NO_WRAP) - -fun String.decodeBase64UrlSafe(): ByteArray = Base64.decode(this, Base64.NO_WRAP or Base64.URL_SAFE) - -fun ByteArray.decodeBase64(): ByteArray = Base64.decode(this, Base64.NO_WRAP) - -val ByteArray.base64: String - get() = Base64.encodeToString(this, Base64.NO_WRAP) - -fun ByteArray.encodeBase64(urlSafe: Boolean = false): String { - val flags = if (urlSafe) Base64.NO_WRAP or Base64.URL_SAFE else Base64.NO_WRAP - return Base64.encodeToString(this, flags) -} - -fun ByteArray.encodeBase64ToArray(): ByteArray = Base64.encode(this, Base64.NO_WRAP) - -fun ByteArray.sha512(): ByteArray { - return try { - MessageDigest.getInstance("SHA-512") - .apply { update(this@sha512) } - .digest() - } catch (e: NoSuchAlgorithmException) { - throw RuntimeException("SHA-512 not implemented") - } -} - -fun String.urlEncode(): String = URLEncoder.encode(this, "UTF-8") - -fun String.urlDecode(): String = URLDecoder.decode(this, "UTF-8") - -fun Ed25519.KeyPair.getPublicKeyBase58(): String = Base58.encode(publicKeyBytes) diff --git a/libs/encryption/utils/src/jvmMain/kotlin/com/getcode/utils/Base64.jvm.kt b/libs/encryption/utils/src/jvmMain/kotlin/com/getcode/utils/Base64.jvm.kt new file mode 100644 index 0000000000..37539363e2 --- /dev/null +++ b/libs/encryption/utils/src/jvmMain/kotlin/com/getcode/utils/Base64.jvm.kt @@ -0,0 +1,10 @@ +package com.getcode.utils + +import java.util.Base64 + +// android.util.Base64.decode tolerates missing padding; java.util.Base64's decoder does too. +internal actual fun base64Encode(bytes: ByteArray, urlSafe: Boolean): ByteArray = + (if (urlSafe) Base64.getUrlEncoder() else Base64.getEncoder()).encode(bytes) + +internal actual fun base64Decode(bytes: ByteArray, urlSafe: Boolean): ByteArray = + (if (urlSafe) Base64.getUrlDecoder() else Base64.getDecoder()).decode(bytes) diff --git a/libs/encryption/utils/src/jvmSharedMain/kotlin/com/getcode/utils/Ed25519Extensions.kt b/libs/encryption/utils/src/jvmSharedMain/kotlin/com/getcode/utils/Ed25519Extensions.kt new file mode 100644 index 0000000000..fc2be84b77 --- /dev/null +++ b/libs/encryption/utils/src/jvmSharedMain/kotlin/com/getcode/utils/Ed25519Extensions.kt @@ -0,0 +1,6 @@ +package com.getcode.utils + +import com.getcode.ed25519kmp.Ed25519 +import com.getcode.vendor.Base58 + +fun Ed25519.KeyPair.getPublicKeyBase58(): String = Base58.encode(publicKeyBytes) diff --git a/libs/encryption/utils/src/jvmSharedMain/kotlin/com/getcode/utils/Extensions.jvmShared.kt b/libs/encryption/utils/src/jvmSharedMain/kotlin/com/getcode/utils/Extensions.jvmShared.kt new file mode 100644 index 0000000000..47efb02dc2 --- /dev/null +++ b/libs/encryption/utils/src/jvmSharedMain/kotlin/com/getcode/utils/Extensions.jvmShared.kt @@ -0,0 +1,44 @@ +package com.getcode.utils + +import com.google.protobuf.ByteString +import java.net.URLDecoder +import java.net.URLEncoder +import java.security.MessageDigest +import java.security.NoSuchAlgorithmException + +fun List.toByteString(): ByteString = ByteString.copyFrom(this.toByteArray()) +fun ByteArray.toByteString(): ByteString = ByteString.copyFrom(this) + +// Base64 goes through the platform: android.util.Base64 on Android (unchanged), java.util.Base64 on the desktop JVM. +internal expect fun base64Encode(bytes: ByteArray, urlSafe: Boolean): ByteArray +internal expect fun base64Decode(bytes: ByteArray, urlSafe: Boolean): ByteArray + +val List.base64: String + get() = toByteArray().base64 + +fun String.decodeBase64(): ByteArray = base64Decode(toByteArray(), urlSafe = false) + +fun String.decodeBase64UrlSafe(): ByteArray = base64Decode(toByteArray(), urlSafe = true) + +fun ByteArray.decodeBase64(): ByteArray = base64Decode(this, urlSafe = false) + +val ByteArray.base64: String + get() = encodeBase64() + +fun ByteArray.encodeBase64(urlSafe: Boolean = false): String = String(base64Encode(this, urlSafe), Charsets.US_ASCII) + +fun ByteArray.encodeBase64ToArray(): ByteArray = base64Encode(this, urlSafe = false) + +fun ByteArray.sha512(): ByteArray { + return try { + MessageDigest.getInstance("SHA-512") + .apply { update(this@sha512) } + .digest() + } catch (e: NoSuchAlgorithmException) { + throw RuntimeException("SHA-512 not implemented") + } +} + +fun String.urlEncode(): String = URLEncoder.encode(this, "UTF-8") + +fun String.urlDecode(): String = URLDecoder.decode(this, "UTF-8") diff --git a/libs/locale/public/build.gradle.kts b/libs/locale/public/build.gradle.kts index 9c5d3353bf..efd1055d63 100644 --- a/libs/locale/public/build.gradle.kts +++ b/libs/locale/public/build.gradle.kts @@ -1,16 +1,22 @@ plugins { - alias(libs.plugins.flipcash.android.library) + alias(libs.plugins.flipcash.kmp.app.library) } -android { - namespace = "${Gradle.codeNamespace}.util.locale" -} +kotlin { + android { + namespace = "${Gradle.codeNamespace}.util.locale" + } -dependencies { - implementation(project(":libs:datetime")) - implementation(project(":libs:currency")) - implementation(libs.okhttp) - api(libs.androidx.annotation) - api(libs.kotlin.stdlib) - api(libs.kotlinx.coroutines.core) + sourceSets { + commonMain.dependencies { + implementation(project(":libs:datetime")) + implementation(project(":libs:currency")) + api(libs.androidx.annotation) + api(libs.kotlin.stdlib) + api(libs.kotlinx.coroutines.core) + } + androidMain.dependencies { + implementation(libs.okhttp) + } + } } diff --git a/libs/locale/public/src/main/kotlin/com/getcode/util/locale/LocaleUtils.kt b/libs/locale/public/src/androidMain/kotlin/com/getcode/util/locale/LocaleUtils.kt similarity index 100% rename from libs/locale/public/src/main/kotlin/com/getcode/util/locale/LocaleUtils.kt rename to libs/locale/public/src/androidMain/kotlin/com/getcode/util/locale/LocaleUtils.kt diff --git a/libs/locale/public/src/main/kotlin/com/getcode/util/locale/LocaleHelper.kt b/libs/locale/public/src/commonMain/kotlin/com/getcode/util/locale/LocaleHelper.kt similarity index 100% rename from libs/locale/public/src/main/kotlin/com/getcode/util/locale/LocaleHelper.kt rename to libs/locale/public/src/commonMain/kotlin/com/getcode/util/locale/LocaleHelper.kt diff --git a/libs/logging/build.gradle.kts b/libs/logging/build.gradle.kts index 6baf81d2b1..91d7fd6e48 100644 --- a/libs/logging/build.gradle.kts +++ b/libs/logging/build.gradle.kts @@ -1,37 +1,26 @@ plugins { - alias(libs.plugins.flipcash.android.library) + alias(libs.plugins.flipcash.kmp.app.library) } -android { - namespace = "${Gradle.codeNamespace}.libs.logging" +kotlin { + android { + namespace = "${Gradle.codeNamespace}.libs.logging" + } - buildTypes { - getByName("release") { - buildConfigField("Boolean", "NOTIFY_ERRORS", "true") + sourceSets { + commonMain.dependencies { + implementation(libs.androidx.annotation) + implementation(libs.grpc.kotlin) + implementation(project(":libs:messaging")) + implementation(libs.ocp.client.protocol) + implementation(libs.flipcash2.client.protocol) } - getByName("debug") { - buildConfigField( - "Boolean", - "NOTIFY_ERRORS", - tryReadProperty(rootProject.rootDir, "NOTIFY_ERRORS", "false") - ) + androidMain.dependencies { + api(libs.timber) + } + getByName("androidHostTest").dependencies { + implementation(kotlin("test")) + implementation(libs.robolectric) } } - - buildFeatures { - buildConfig = true - } -} - -dependencies { - testImplementation(kotlin("test")) - testImplementation(libs.robolectric) - - api(libs.timber) - implementation(libs.androidx.annotation) - implementation(libs.grpc.kotlin) - implementation(project(":libs:messaging")) - - implementation(libs.ocp.client.protocol) - implementation(libs.flipcash2.client.protocol) } diff --git a/libs/logging/src/test/kotlin/com/getcode/utils/ErrorUtilsTest.kt b/libs/logging/src/androidHostTest/kotlin/com/getcode/utils/ErrorUtilsTest.kt similarity index 100% rename from libs/logging/src/test/kotlin/com/getcode/utils/ErrorUtilsTest.kt rename to libs/logging/src/androidHostTest/kotlin/com/getcode/utils/ErrorUtilsTest.kt diff --git a/libs/logging/src/test/kotlin/com/getcode/utils/FileTreeTest.kt b/libs/logging/src/androidHostTest/kotlin/com/getcode/utils/FileTreeTest.kt similarity index 100% rename from libs/logging/src/test/kotlin/com/getcode/utils/FileTreeTest.kt rename to libs/logging/src/androidHostTest/kotlin/com/getcode/utils/FileTreeTest.kt diff --git a/libs/logging/src/test/kotlin/com/getcode/utils/MetadataBuilderTest.kt b/libs/logging/src/androidHostTest/kotlin/com/getcode/utils/MetadataBuilderTest.kt similarity index 100% rename from libs/logging/src/test/kotlin/com/getcode/utils/MetadataBuilderTest.kt rename to libs/logging/src/androidHostTest/kotlin/com/getcode/utils/MetadataBuilderTest.kt diff --git a/libs/logging/src/test/kotlin/com/getcode/utils/PiiMaskingPluginTest.kt b/libs/logging/src/androidHostTest/kotlin/com/getcode/utils/PiiMaskingPluginTest.kt similarity index 100% rename from libs/logging/src/test/kotlin/com/getcode/utils/PiiMaskingPluginTest.kt rename to libs/logging/src/androidHostTest/kotlin/com/getcode/utils/PiiMaskingPluginTest.kt diff --git a/libs/logging/src/test/kotlin/com/getcode/utils/TraceManagerTest.kt b/libs/logging/src/androidHostTest/kotlin/com/getcode/utils/TraceManagerTest.kt similarity index 100% rename from libs/logging/src/test/kotlin/com/getcode/utils/TraceManagerTest.kt rename to libs/logging/src/androidHostTest/kotlin/com/getcode/utils/TraceManagerTest.kt diff --git a/libs/logging/src/main/kotlin/com/getcode/utils/FileTree.kt b/libs/logging/src/androidMain/kotlin/com/getcode/utils/FileTree.kt similarity index 96% rename from libs/logging/src/main/kotlin/com/getcode/utils/FileTree.kt rename to libs/logging/src/androidMain/kotlin/com/getcode/utils/FileTree.kt index 19f9437eec..e7405364a6 100644 --- a/libs/logging/src/main/kotlin/com/getcode/utils/FileTree.kt +++ b/libs/logging/src/androidMain/kotlin/com/getcode/utils/FileTree.kt @@ -24,7 +24,7 @@ import java.util.TimeZone class FileTree( context: Context, private val plugins: () -> List, -) : Timber.Tree() { +) : Timber.Tree(), LogFileStore { private val traceDir = File(context.filesDir, "traces").apply { mkdirs() } private val logFile = File(traceDir, "trace.log") @@ -46,7 +46,7 @@ class FileTree( * immediately receive the most recent [LOG_STREAM_BUFFER_CAPACITY] lines * via replay cache, so the in-app viewer opens already populated. */ - val logStream: SharedFlow = logFlow.asSharedFlow() + override val logStream: SharedFlow = logFlow.asSharedFlow() init { // Clear previous session logs on cold launch @@ -95,7 +95,7 @@ class FileTree( logFlow.tryEmit(processed!!) } - fun getLogFile(includeHeader: Boolean = true): File? { + override fun getLogFile(includeHeader: Boolean): File? { if (!logFile.exists() || logFile.length() == 0L) return null synchronized(lock) { exportFile.delete() @@ -112,7 +112,7 @@ class FileTree( } @OptIn(ExperimentalCoroutinesApi::class) - fun clearLogs() { + override fun clearLogs() { synchronized(lock) { logFile.delete() exportFile.delete() @@ -121,6 +121,10 @@ class FileTree( logFlow.resetReplayCache() } + override fun close() { + Timber.uproot(this) + } + companion object { /** Max number of log lines retained in the live stream's replay cache. */ const val LOG_STREAM_BUFFER_CAPACITY = 1000 diff --git a/libs/logging/src/androidMain/kotlin/com/getcode/utils/PlatformLog.android.kt b/libs/logging/src/androidMain/kotlin/com/getcode/utils/PlatformLog.android.kt new file mode 100644 index 0000000000..2e5b41e2a7 --- /dev/null +++ b/libs/logging/src/androidMain/kotlin/com/getcode/utils/PlatformLog.android.kt @@ -0,0 +1,36 @@ +package com.getcode.utils + +import android.content.Context +import android.database.SQLException +import android.os.SystemClock +import timber.log.Timber + +internal actual object PlatformLog { + actual fun log(priority: Int, tag: String?, message: String) { + val tree = if (tag == null) Timber else Timber.tag(tag) + tree.log(priority, message) + } + + actual fun error(throwable: Throwable) { + Timber.e(throwable) + } + + actual fun error(throwable: Throwable, message: String?) { + Timber.e(throwable, message) + } +} + +internal actual fun isPlatformSqlException(throwable: Throwable): Boolean = throwable is SQLException + +internal actual fun elapsedRealtimeMillis(): Long = SystemClock.elapsedRealtime() + +/** + * Plants a [FileTree] and initializes [TraceManager] with it. Safe to call multiple times; + * subsequent calls are no-ops. + */ +fun TraceManager.initialize(context: Context) { + if (initialized) return + val tree = FileTree(context, plugins = { plugins }) + Timber.plant(tree) + initialize(tree) +} diff --git a/libs/logging/src/main/kotlin/com/getcode/utils/BreadcrumbSink.kt b/libs/logging/src/commonMain/kotlin/com/getcode/utils/BreadcrumbSink.kt similarity index 100% rename from libs/logging/src/main/kotlin/com/getcode/utils/BreadcrumbSink.kt rename to libs/logging/src/commonMain/kotlin/com/getcode/utils/BreadcrumbSink.kt diff --git a/libs/logging/src/commonMain/kotlin/com/getcode/utils/BuildFlags.kt b/libs/logging/src/commonMain/kotlin/com/getcode/utils/BuildFlags.kt new file mode 100644 index 0000000000..92a82a0118 --- /dev/null +++ b/libs/logging/src/commonMain/kotlin/com/getcode/utils/BuildFlags.kt @@ -0,0 +1,18 @@ +package com.getcode.utils + +/** + * Build-type flags the app sets at startup. + * + * KMP library modules have a single variant and no `BuildConfig`, so a value that used to differ + * between a library's debug and release builds is read here instead. Both default to the release + * value until the app sets them. + */ +object BuildFlags { + /** What a library's `BuildConfig.DEBUG` used to report. */ + @Volatile + var isDebug: Boolean = false + + /** Whether [ErrorUtils] forwards errors to its reporters. */ + @Volatile + var notifyErrors: Boolean = true +} diff --git a/libs/logging/src/main/kotlin/com/getcode/utils/CodeServerError.kt b/libs/logging/src/commonMain/kotlin/com/getcode/utils/CodeServerError.kt similarity index 100% rename from libs/logging/src/main/kotlin/com/getcode/utils/CodeServerError.kt rename to libs/logging/src/commonMain/kotlin/com/getcode/utils/CodeServerError.kt diff --git a/libs/logging/src/main/kotlin/com/getcode/utils/ConditionallyNotifiable.kt b/libs/logging/src/commonMain/kotlin/com/getcode/utils/ConditionallyNotifiable.kt similarity index 100% rename from libs/logging/src/main/kotlin/com/getcode/utils/ConditionallyNotifiable.kt rename to libs/logging/src/commonMain/kotlin/com/getcode/utils/ConditionallyNotifiable.kt diff --git a/libs/logging/src/main/kotlin/com/getcode/utils/ErrorReporter.kt b/libs/logging/src/commonMain/kotlin/com/getcode/utils/ErrorReporter.kt similarity index 100% rename from libs/logging/src/main/kotlin/com/getcode/utils/ErrorReporter.kt rename to libs/logging/src/commonMain/kotlin/com/getcode/utils/ErrorReporter.kt diff --git a/libs/logging/src/main/kotlin/com/getcode/utils/ErrorUtils.kt b/libs/logging/src/commonMain/kotlin/com/getcode/utils/ErrorUtils.kt similarity index 94% rename from libs/logging/src/main/kotlin/com/getcode/utils/ErrorUtils.kt rename to libs/logging/src/commonMain/kotlin/com/getcode/utils/ErrorUtils.kt index 5fa512d292..01a3d10e75 100644 --- a/libs/logging/src/main/kotlin/com/getcode/utils/ErrorUtils.kt +++ b/libs/logging/src/commonMain/kotlin/com/getcode/utils/ErrorUtils.kt @@ -1,14 +1,11 @@ package com.getcode.utils -import android.database.SQLException -import com.getcode.libs.logging.BuildConfig import com.getcode.manager.TopBarManager import io.grpc.Status import io.grpc.StatusException import io.grpc.StatusRuntimeException import kotlinx.coroutines.CancellationException import kotlinx.coroutines.TimeoutCancellationException -import timber.log.Timber import java.net.ConnectException import java.net.SocketException import java.net.UnknownHostException @@ -48,7 +45,7 @@ object ErrorUtils { if (isIgnoredGrpcStatus(throwableCause)) return - Timber.e(throwable) + PlatformLog.error(throwable) if (isRuntimeError(throwable)) return @@ -61,7 +58,7 @@ object ErrorUtils { ) } - if (BuildConfig.NOTIFY_ERRORS && shouldReport(throwable, throwableCause)) { + if (BuildFlags.notifyErrors && shouldReport(throwable, throwableCause)) { val isNotifiable = when { throwable is ConditionallyNotifiable -> throwable.isNotifiable throwableCause is ConditionallyNotifiable -> throwableCause.isNotifiable @@ -146,7 +143,7 @@ object ErrorUtils { throwable.cause is StatusException private fun isSuppressibleError(throwable: Throwable): Boolean = - throwable is SQLException || throwable is SuppressibleException || throwable is TimeoutCancellationException + isPlatformSqlException(throwable) || throwable is SuppressibleException || throwable is TimeoutCancellationException } fun Throwable.isNetworkError(): Boolean = diff --git a/libs/logging/src/main/kotlin/com/getcode/utils/Logging.kt b/libs/logging/src/commonMain/kotlin/com/getcode/utils/Logging.kt similarity index 88% rename from libs/logging/src/main/kotlin/com/getcode/utils/Logging.kt rename to libs/logging/src/commonMain/kotlin/com/getcode/utils/Logging.kt index 636d9e5681..e4e39fe8b2 100644 --- a/libs/logging/src/main/kotlin/com/getcode/utils/Logging.kt +++ b/libs/logging/src/commonMain/kotlin/com/getcode/utils/Logging.kt @@ -1,13 +1,9 @@ package com.getcode.utils -import android.annotation.SuppressLint -import android.content.Context -import android.os.SystemClock import kotlinx.coroutines.channels.BufferOverflow import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.SharedFlow import kotlinx.coroutines.flow.asSharedFlow -import timber.log.Timber import java.io.File import kotlin.time.Duration import kotlin.time.TimeSource @@ -57,7 +53,7 @@ sealed interface TraceType { * - [BreadcrumbSink]s — forward structured breadcrumbs to external services (e.g. Bugsnag). */ object TraceManager { - private var fileTree: FileTree? = null + private var logFile: LogFileStore? = null /** `true` after [initialize] has been called. [trace] is a no-op until then. */ var initialized: Boolean = false @@ -100,13 +96,13 @@ object TraceManager { fun recordClockDrift(driftMillis: Long, source: ClockSource) { clockDriftMillis = driftMillis clockDriftSource = source - clockDriftSyncElapsedRealtime = SystemClock.elapsedRealtime() + clockDriftSyncElapsedRealtime = elapsedRealtimeMillis() } /** Latest clock-drift measurement, or `null` if no server time has been observed yet. */ fun clockDriftSnapshot(): ClockDriftSnapshot? { val drift = clockDriftMillis ?: return null - val ageMillis = clockDriftSyncElapsedRealtime?.let { SystemClock.elapsedRealtime() - it } + val ageMillis = clockDriftSyncElapsedRealtime?.let { elapsedRealtimeMillis() - it } return ClockDriftSnapshot( driftMillis = drift, source = clockDriftSource, @@ -127,22 +123,22 @@ object TraceManager { fun sinks(): List = breadcrumbSinks /** - * Bootstraps Timber with a [FileTree], plants default plugins - * ([PiiMaskingPlugin], [RpcBodyFilterPlugin]), and marks the manager - * as [initialized]. Safe to call multiple times; subsequent calls are no-ops. + * Plants default plugins ([PiiMaskingPlugin], [RpcBodyFilterPlugin]), keeps [logFile] for + * [getLogFile], [logStream] and [clearLogs], and marks the manager as [initialized]. Safe to + * call multiple times; subsequent calls are no-ops. + * + * Android calls this through `TraceManager.initialize(context)`, which supplies a FileTree. */ - fun initialize(context: Context) { + fun initialize(logFile: LogFileStore? = null) { if (initialized) return - val tree = FileTree(context, plugins = { plugins }) - fileTree = tree + this.logFile = logFile addPlugin(PiiMaskingPlugin()) addPlugin(RpcBodyFilterPlugin()) - Timber.plant(tree) initialized = true } /** Returns the current log file, or `null` if not yet initialized. */ - fun getLogFile(includeHeader: Boolean = true): File? = fileTree?.getLogFile(includeHeader) + fun getLogFile(includeHeader: Boolean = true): File? = logFile?.getLogFile(includeHeader) /** * Hot stream of processed log lines for live in-app viewers. Emits only @@ -150,7 +146,7 @@ object TraceManager { * empty [SharedFlow] that will never emit. */ val logStream: SharedFlow - get() = fileTree?.logStream ?: EmptyLogStream + get() = logFile?.logStream ?: EmptyLogStream private val EmptyLogStream: SharedFlow = MutableSharedFlow( replay = 0, @@ -159,14 +155,14 @@ object TraceManager { ).asSharedFlow() fun clearLogs() { - fileTree?.clearLogs() + logFile?.clearLogs() } /** Tears down all state. Intended for tests only. */ @androidx.annotation.VisibleForTesting internal fun reset() { - fileTree?.let { Timber.uproot(it) } - fileTree = null + logFile?.close() + logFile = null initialized = false plugins.clear() breadcrumbSinks.clear() @@ -194,7 +190,7 @@ enum class ClockSource { } /** - * Primary logging entry point. Writes [message] to Timber and forwards a + * Primary logging entry point. Writes [message] to the platform log (Timber on Android) and forwards a * breadcrumb to every registered [BreadcrumbSink]. * * No-op if [TraceManager] has not been [initialized][TraceManager.initialize], @@ -206,7 +202,6 @@ enum class ClockSource { * @param error If non-null, forwarded to [ErrorUtils.handleError] after logging. * @param type Categorization that determines the Timber log level. */ -@SuppressLint("TimberExceptionLogging") fun trace( message: String, tag: String? = null, @@ -217,7 +212,6 @@ fun trace( if (!TraceManager.initialized) return val tagBlock = tag?.let { "[$it] " } - val tree = if (tagBlock == null) Timber else Timber.tag(tagBlock) val metadataMap = metadata { metadata() } @@ -228,16 +222,17 @@ fun trace( message } - when (type) { - TraceType.Error -> tree.e(logMessage) - TraceType.Log -> tree.d(logMessage) - TraceType.Navigation -> tree.d(logMessage) - TraceType.Network -> tree.i(logMessage) - TraceType.Process -> tree.d(logMessage) - TraceType.Silent -> tree.d(logMessage) - TraceType.StateChange -> tree.d(logMessage) - TraceType.User -> tree.d(logMessage) + val priority = when (type) { + TraceType.Error -> LogPriority.ERROR + TraceType.Log -> LogPriority.DEBUG + TraceType.Navigation -> LogPriority.DEBUG + TraceType.Network -> LogPriority.INFO + TraceType.Process -> LogPriority.DEBUG + TraceType.Silent -> LogPriority.DEBUG + TraceType.StateChange -> LogPriority.DEBUG + TraceType.User -> LogPriority.DEBUG } + PlatformLog.log(priority, tagBlock, logMessage) val rawBreadcrumb = if (tag != null) "$tagBlock $message" else message val sinks = TraceManager.sinks() diff --git a/libs/logging/src/main/kotlin/com/getcode/utils/NotifiableError.kt b/libs/logging/src/commonMain/kotlin/com/getcode/utils/NotifiableError.kt similarity index 100% rename from libs/logging/src/main/kotlin/com/getcode/utils/NotifiableError.kt rename to libs/logging/src/commonMain/kotlin/com/getcode/utils/NotifiableError.kt diff --git a/libs/logging/src/main/kotlin/com/getcode/utils/PiiMaskingPlugin.kt b/libs/logging/src/commonMain/kotlin/com/getcode/utils/PiiMaskingPlugin.kt similarity index 100% rename from libs/logging/src/main/kotlin/com/getcode/utils/PiiMaskingPlugin.kt rename to libs/logging/src/commonMain/kotlin/com/getcode/utils/PiiMaskingPlugin.kt diff --git a/libs/logging/src/commonMain/kotlin/com/getcode/utils/PlatformLog.kt b/libs/logging/src/commonMain/kotlin/com/getcode/utils/PlatformLog.kt new file mode 100644 index 0000000000..d92204d232 --- /dev/null +++ b/libs/logging/src/commonMain/kotlin/com/getcode/utils/PlatformLog.kt @@ -0,0 +1,46 @@ +package com.getcode.utils + +import kotlinx.coroutines.flow.SharedFlow +import java.io.File + +/** Log levels, numbered as `android.util.Log` numbers them so Android passes them straight through. */ +object LogPriority { + const val VERBOSE = 2 + const val DEBUG = 3 + const val INFO = 4 + const val WARN = 5 + const val ERROR = 6 +} + +/** Where [trace] and [ErrorUtils] write: Timber on Android, standard error on the desktop JVM. */ +internal expect object PlatformLog { + fun log(priority: Int, tag: String?, message: String) + fun error(throwable: Throwable) + fun error(throwable: Throwable, message: String?) +} + +/** The platform's `SQLException`, which [ErrorUtils] treats as suppressible. */ +internal expect fun isPlatformSqlException(throwable: Throwable): Boolean + +/** Milliseconds on a clock that keeps running while the device sleeps. */ +internal expect fun elapsedRealtimeMillis(): Long + +/** The on-disk log behind [TraceManager.getLogFile], [TraceManager.logStream] and [TraceManager.clearLogs]. */ +interface LogFileStore { + val logStream: SharedFlow + fun getLogFile(includeHeader: Boolean = true): File? + fun clearLogs() + /** Stops writing to the log. Called when [TraceManager] is reset. */ + fun close() +} + +/** + * Writes straight to the platform log: Timber on Android, standard error on the desktop JVM. + * + * Unlike [trace], it is not gated on [TraceManager] and never reports errors. + */ +object Log { + fun d(message: String) = PlatformLog.log(LogPriority.DEBUG, null, message) + + fun e(throwable: Throwable, message: String?) = PlatformLog.error(throwable, message) +} diff --git a/libs/logging/src/main/kotlin/com/getcode/utils/RpcBodyFilterPlugin.kt b/libs/logging/src/commonMain/kotlin/com/getcode/utils/RpcBodyFilterPlugin.kt similarity index 100% rename from libs/logging/src/main/kotlin/com/getcode/utils/RpcBodyFilterPlugin.kt rename to libs/logging/src/commonMain/kotlin/com/getcode/utils/RpcBodyFilterPlugin.kt diff --git a/libs/logging/src/main/kotlin/com/getcode/utils/TraceLogPlugin.kt b/libs/logging/src/commonMain/kotlin/com/getcode/utils/TraceLogPlugin.kt similarity index 100% rename from libs/logging/src/main/kotlin/com/getcode/utils/TraceLogPlugin.kt rename to libs/logging/src/commonMain/kotlin/com/getcode/utils/TraceLogPlugin.kt diff --git a/libs/logging/src/main/kotlin/com/getcode/utils/UnreportedError.kt b/libs/logging/src/commonMain/kotlin/com/getcode/utils/UnreportedError.kt similarity index 100% rename from libs/logging/src/main/kotlin/com/getcode/utils/UnreportedError.kt rename to libs/logging/src/commonMain/kotlin/com/getcode/utils/UnreportedError.kt diff --git a/libs/logging/src/jvmMain/kotlin/com/getcode/utils/PlatformLog.jvm.kt b/libs/logging/src/jvmMain/kotlin/com/getcode/utils/PlatformLog.jvm.kt new file mode 100644 index 0000000000..9ac65d65a6 --- /dev/null +++ b/libs/logging/src/jvmMain/kotlin/com/getcode/utils/PlatformLog.jvm.kt @@ -0,0 +1,29 @@ +package com.getcode.utils + +import java.sql.SQLException + +internal actual object PlatformLog { + actual fun log(priority: Int, tag: String?, message: String) { + val level = when (priority) { + LogPriority.VERBOSE -> "V" + LogPriority.DEBUG -> "D" + LogPriority.INFO -> "I" + LogPriority.WARN -> "W" + else -> "E" + } + System.err.println("$level ${tag.orEmpty()}$message") + } + + actual fun error(throwable: Throwable) { + throwable.printStackTrace() + } + + actual fun error(throwable: Throwable, message: String?) { + message?.let { System.err.println("E $it") } + throwable.printStackTrace() + } +} + +internal actual fun isPlatformSqlException(throwable: Throwable): Boolean = throwable is SQLException + +internal actual fun elapsedRealtimeMillis(): Long = System.nanoTime() / 1_000_000 diff --git a/libs/messaging/build.gradle.kts b/libs/messaging/build.gradle.kts index 133be35447..f791759ead 100644 --- a/libs/messaging/build.gradle.kts +++ b/libs/messaging/build.gradle.kts @@ -1,13 +1,21 @@ plugins { - alias(libs.plugins.flipcash.android.library.compose) + alias(libs.plugins.flipcash.kmp.app.library) + alias(libs.plugins.compose.compiler) } -android { - namespace = "${Gradle.codeNamespace}.libs.messaging" -} +kotlin { + android { + namespace = "${Gradle.codeNamespace}.libs.messaging" + } -dependencies { - api(libs.kotlin.stdlib) - api(libs.kotlinx.coroutines.core) - api(libs.timber) + sourceSets { + commonMain.dependencies { + api(libs.kotlin.stdlib) + api(libs.kotlinx.coroutines.core) + implementation(libs.jetbrains.compose.foundation) + } + androidMain.dependencies { + api(libs.timber) + } + } } diff --git a/libs/messaging/src/main/kotlin/com/getcode/manager/BottomBarManager.kt b/libs/messaging/src/androidMain/kotlin/com/getcode/manager/BottomBarManager.kt similarity index 100% rename from libs/messaging/src/main/kotlin/com/getcode/manager/BottomBarManager.kt rename to libs/messaging/src/androidMain/kotlin/com/getcode/manager/BottomBarManager.kt diff --git a/libs/messaging/src/main/kotlin/com/getcode/manager/TopBarManager.kt b/libs/messaging/src/commonMain/kotlin/com/getcode/manager/TopBarManager.kt similarity index 100% rename from libs/messaging/src/main/kotlin/com/getcode/manager/TopBarManager.kt rename to libs/messaging/src/commonMain/kotlin/com/getcode/manager/TopBarManager.kt diff --git a/libs/models/build.gradle.kts b/libs/models/build.gradle.kts index f7d77d5385..f5266c6654 100644 --- a/libs/models/build.gradle.kts +++ b/libs/models/build.gradle.kts @@ -1,20 +1,22 @@ plugins { - alias(libs.plugins.flipcash.android.library) + alias(libs.plugins.flipcash.kmp.app.library) id("org.jetbrains.kotlin.plugin.parcelize") } -android { - namespace = "${Gradle.codeNamespace}.libs.models" -} - -dependencies { - implementation(project(":libs:encryption:base58")) - implementation(project(":libs:encryption:ed25519")) - implementation(project(":libs:encryption:keys")) - implementation(project(":libs:encryption:utils")) - implementation(project(":libs:currency")) - implementation(libs.bundles.kotlinx.serialization) +kotlin { + android { + namespace = "${Gradle.codeNamespace}.libs.models" + } - implementation(libs.androidx.room.runtime) - implementation(libs.androidx.room.ktx) + sourceSets { + commonMain.dependencies { + api(project(":libs:parcelable")) + implementation(project(":libs:encryption:base58")) + implementation(project(":libs:encryption:ed25519")) + implementation(project(":libs:encryption:keys")) + implementation(project(":libs:encryption:utils")) + implementation(project(":libs:currency")) + implementation(libs.bundles.kotlinx.serialization) + } + } } diff --git a/libs/models/src/androidMain/kotlin/com/getcode/model/social/user/FileExtension.android.kt b/libs/models/src/androidMain/kotlin/com/getcode/model/social/user/FileExtension.android.kt new file mode 100644 index 0000000000..af0eda358d --- /dev/null +++ b/libs/models/src/androidMain/kotlin/com/getcode/model/social/user/FileExtension.android.kt @@ -0,0 +1,6 @@ +package com.getcode.model.social.user + +import android.webkit.MimeTypeMap + +internal actual fun fileExtensionFromUrl(url: String): String = + MimeTypeMap.getFileExtensionFromUrl(url) diff --git a/libs/models/src/main/kotlin/com/getcode/model/Cursor.kt b/libs/models/src/commonMain/kotlin/com/getcode/model/Cursor.kt similarity index 100% rename from libs/models/src/main/kotlin/com/getcode/model/Cursor.kt rename to libs/models/src/commonMain/kotlin/com/getcode/model/Cursor.kt diff --git a/libs/models/src/main/kotlin/com/getcode/model/EncryptedData.kt b/libs/models/src/commonMain/kotlin/com/getcode/model/EncryptedData.kt similarity index 100% rename from libs/models/src/main/kotlin/com/getcode/model/EncryptedData.kt rename to libs/models/src/commonMain/kotlin/com/getcode/model/EncryptedData.kt diff --git a/libs/models/src/main/kotlin/com/getcode/model/ID.kt b/libs/models/src/commonMain/kotlin/com/getcode/model/ID.kt similarity index 100% rename from libs/models/src/main/kotlin/com/getcode/model/ID.kt rename to libs/models/src/commonMain/kotlin/com/getcode/model/ID.kt diff --git a/libs/models/src/main/kotlin/com/getcode/model/PointerStatus.kt b/libs/models/src/commonMain/kotlin/com/getcode/model/PointerStatus.kt similarity index 100% rename from libs/models/src/main/kotlin/com/getcode/model/PointerStatus.kt rename to libs/models/src/commonMain/kotlin/com/getcode/model/PointerStatus.kt diff --git a/libs/models/src/main/kotlin/com/getcode/model/chat/AnnouncementAction.kt b/libs/models/src/commonMain/kotlin/com/getcode/model/chat/AnnouncementAction.kt similarity index 100% rename from libs/models/src/main/kotlin/com/getcode/model/chat/AnnouncementAction.kt rename to libs/models/src/commonMain/kotlin/com/getcode/model/chat/AnnouncementAction.kt diff --git a/libs/models/src/main/kotlin/com/getcode/model/chat/ChatMessage.kt b/libs/models/src/commonMain/kotlin/com/getcode/model/chat/ChatMessage.kt similarity index 100% rename from libs/models/src/main/kotlin/com/getcode/model/chat/ChatMessage.kt rename to libs/models/src/commonMain/kotlin/com/getcode/model/chat/ChatMessage.kt diff --git a/libs/models/src/main/kotlin/com/getcode/model/chat/ChatType.kt b/libs/models/src/commonMain/kotlin/com/getcode/model/chat/ChatType.kt similarity index 100% rename from libs/models/src/main/kotlin/com/getcode/model/chat/ChatType.kt rename to libs/models/src/commonMain/kotlin/com/getcode/model/chat/ChatType.kt diff --git a/libs/models/src/main/kotlin/com/getcode/model/chat/MessageContent.kt b/libs/models/src/commonMain/kotlin/com/getcode/model/chat/MessageContent.kt similarity index 100% rename from libs/models/src/main/kotlin/com/getcode/model/chat/MessageContent.kt rename to libs/models/src/commonMain/kotlin/com/getcode/model/chat/MessageContent.kt diff --git a/libs/models/src/main/kotlin/com/getcode/model/chat/MessageStatus.kt b/libs/models/src/commonMain/kotlin/com/getcode/model/chat/MessageStatus.kt similarity index 100% rename from libs/models/src/main/kotlin/com/getcode/model/chat/MessageStatus.kt rename to libs/models/src/commonMain/kotlin/com/getcode/model/chat/MessageStatus.kt diff --git a/libs/models/src/main/kotlin/com/getcode/model/chat/Platform.kt b/libs/models/src/commonMain/kotlin/com/getcode/model/chat/Platform.kt similarity index 100% rename from libs/models/src/main/kotlin/com/getcode/model/chat/Platform.kt rename to libs/models/src/commonMain/kotlin/com/getcode/model/chat/Platform.kt diff --git a/libs/models/src/main/kotlin/com/getcode/model/chat/Pointer.kt b/libs/models/src/commonMain/kotlin/com/getcode/model/chat/Pointer.kt similarity index 100% rename from libs/models/src/main/kotlin/com/getcode/model/chat/Pointer.kt rename to libs/models/src/commonMain/kotlin/com/getcode/model/chat/Pointer.kt diff --git a/libs/models/src/main/kotlin/com/getcode/model/chat/Reference.kt b/libs/models/src/commonMain/kotlin/com/getcode/model/chat/Reference.kt similarity index 100% rename from libs/models/src/main/kotlin/com/getcode/model/chat/Reference.kt rename to libs/models/src/commonMain/kotlin/com/getcode/model/chat/Reference.kt diff --git a/libs/models/src/main/kotlin/com/getcode/model/chat/Sender.kt b/libs/models/src/commonMain/kotlin/com/getcode/model/chat/Sender.kt similarity index 96% rename from libs/models/src/main/kotlin/com/getcode/model/chat/Sender.kt rename to libs/models/src/commonMain/kotlin/com/getcode/model/chat/Sender.kt index 7b95a8915e..ef23584c66 100644 --- a/libs/models/src/main/kotlin/com/getcode/model/chat/Sender.kt +++ b/libs/models/src/commonMain/kotlin/com/getcode/model/chat/Sender.kt @@ -1,9 +1,9 @@ package com.getcode.model.chat -import android.os.Parcelable +import com.getcode.libs.parcelable.Parcelable import com.getcode.model.ID import com.getcode.model.social.user.XExtraData -import kotlinx.parcelize.Parcelize +import com.getcode.libs.parcelable.Parcelize import kotlinx.serialization.json.Json @Parcelize diff --git a/libs/models/src/main/kotlin/com/getcode/model/chat/Title.kt b/libs/models/src/commonMain/kotlin/com/getcode/model/chat/Title.kt similarity index 100% rename from libs/models/src/main/kotlin/com/getcode/model/chat/Title.kt rename to libs/models/src/commonMain/kotlin/com/getcode/model/chat/Title.kt diff --git a/libs/models/src/main/kotlin/com/getcode/model/chat/Verb.kt b/libs/models/src/commonMain/kotlin/com/getcode/model/chat/Verb.kt similarity index 100% rename from libs/models/src/main/kotlin/com/getcode/model/chat/Verb.kt rename to libs/models/src/commonMain/kotlin/com/getcode/model/chat/Verb.kt diff --git a/libs/models/src/commonMain/kotlin/com/getcode/model/social/user/FileExtension.kt b/libs/models/src/commonMain/kotlin/com/getcode/model/social/user/FileExtension.kt new file mode 100644 index 0000000000..7b426d85d6 --- /dev/null +++ b/libs/models/src/commonMain/kotlin/com/getcode/model/social/user/FileExtension.kt @@ -0,0 +1,4 @@ +package com.getcode.model.social.user + +/** The file extension of [url], or an empty string; Android's `MimeTypeMap` rules. */ +internal expect fun fileExtensionFromUrl(url: String): String diff --git a/libs/models/src/main/kotlin/com/getcode/model/social/user/SocialProfile.kt b/libs/models/src/commonMain/kotlin/com/getcode/model/social/user/SocialProfile.kt similarity index 96% rename from libs/models/src/main/kotlin/com/getcode/model/social/user/SocialProfile.kt rename to libs/models/src/commonMain/kotlin/com/getcode/model/social/user/SocialProfile.kt index 2adca2b575..db74cdf709 100644 --- a/libs/models/src/main/kotlin/com/getcode/model/social/user/SocialProfile.kt +++ b/libs/models/src/commonMain/kotlin/com/getcode/model/social/user/SocialProfile.kt @@ -1,6 +1,5 @@ package com.getcode.model.social.user -import android.webkit.MimeTypeMap import com.getcode.model.chat.LinkedSocialProfile import kotlinx.serialization.Serializable import kotlinx.serialization.encodeToString @@ -47,7 +46,7 @@ sealed interface SocialProfile { val profilePicUrl: String? get() { val url = _profilePicUrl ?: return null - val extension = MimeTypeMap.getFileExtensionFromUrl(url) + val extension = fileExtensionFromUrl(url) val urlWithoutExtension = url.removeSuffix(extension) val urlWithoutType = urlWithoutExtension.substringBeforeLast("_") diff --git a/libs/models/src/main/kotlin/com/getcode/serialization/InstantIso8601Serializer.kt b/libs/models/src/commonMain/kotlin/com/getcode/serialization/InstantIso8601Serializer.kt similarity index 100% rename from libs/models/src/main/kotlin/com/getcode/serialization/InstantIso8601Serializer.kt rename to libs/models/src/commonMain/kotlin/com/getcode/serialization/InstantIso8601Serializer.kt diff --git a/libs/models/src/main/kotlin/com/getcode/utils/UUID.kt b/libs/models/src/commonMain/kotlin/com/getcode/utils/UUID.kt similarity index 100% rename from libs/models/src/main/kotlin/com/getcode/utils/UUID.kt rename to libs/models/src/commonMain/kotlin/com/getcode/utils/UUID.kt diff --git a/libs/models/src/main/kotlin/com/getcode/utils/serializer/UUIDSerializer.kt b/libs/models/src/commonMain/kotlin/com/getcode/utils/serializer/UUIDSerializer.kt similarity index 100% rename from libs/models/src/main/kotlin/com/getcode/utils/serializer/UUIDSerializer.kt rename to libs/models/src/commonMain/kotlin/com/getcode/utils/serializer/UUIDSerializer.kt diff --git a/libs/models/src/jvmMain/kotlin/com/getcode/model/social/user/FileExtension.jvm.kt b/libs/models/src/jvmMain/kotlin/com/getcode/model/social/user/FileExtension.jvm.kt new file mode 100644 index 0000000000..a50b072280 --- /dev/null +++ b/libs/models/src/jvmMain/kotlin/com/getcode/model/social/user/FileExtension.jvm.kt @@ -0,0 +1,17 @@ +package com.getcode.model.social.user + +private val FILENAME = Regex("[a-zA-Z_0-9.\\-()%]+") + +/** Same rules as AOSP `MimeTypeMap.getFileExtensionFromUrl`. */ +internal actual fun fileExtensionFromUrl(url: String): String { + if (url.isEmpty()) return "" + var path = url + val fragment = path.lastIndexOf('#') + if (fragment > 0) path = path.substring(0, fragment) + val query = path.lastIndexOf('?') + if (query > 0) path = path.substring(0, query) + val filename = path.substring(path.lastIndexOf('/') + 1) + if (filename.isEmpty() || !FILENAME.matches(filename)) return "" + val dot = filename.lastIndexOf('.') + return if (dot >= 0) filename.substring(dot + 1) else "" +} diff --git a/libs/network/connectivity/public/build.gradle.kts b/libs/network/connectivity/public/build.gradle.kts index 81092157f3..632d3d1477 100644 --- a/libs/network/connectivity/public/build.gradle.kts +++ b/libs/network/connectivity/public/build.gradle.kts @@ -1,23 +1,28 @@ plugins { - alias(libs.plugins.flipcash.android.library.compose) + alias(libs.plugins.flipcash.kmp.app.library) + alias(libs.plugins.compose.compiler) } -android { - namespace = "${Gradle.codeNamespace}.libs.network" -} - -dependencies { - implementation(project(":libs:datetime")) - implementation(project(":libs:logging")) - debugImplementation(libs.compose.ui.tools) - implementation(libs.compose.ui.tools.preview) - implementation(libs.bundles.kotlinx.serialization) - implementation(libs.bundles.hilt) - - testImplementation(kotlin("test")) - testImplementation(libs.kotlinx.coroutines.test) +kotlin { + android { + namespace = "${Gradle.codeNamespace}.libs.network" + } - androidTestImplementation(libs.androidx.junit) - androidTestImplementation(libs.junit) - androidTestImplementation(libs.androidx.test.runner) + sourceSets { + commonMain.dependencies { + implementation(project(":libs:datetime")) + implementation(project(":libs:logging")) + implementation(libs.bundles.kotlinx.serialization) + implementation(libs.jetbrains.compose.runtime) + implementation(libs.javax.inject) + } + androidMain.dependencies { + implementation(project.dependencies.platform(libs.compose.bom)) + implementation(libs.compose.ui.tools.preview) + } + getByName("androidHostTest").dependencies { + implementation(kotlin("test")) + implementation(libs.kotlinx.coroutines.test) + } + } } diff --git a/libs/network/connectivity/public/src/test/kotlin/com/getcode/utils/network/ConnectionTypeTest.kt b/libs/network/connectivity/public/src/androidHostTest/kotlin/com/getcode/utils/network/ConnectionTypeTest.kt similarity index 100% rename from libs/network/connectivity/public/src/test/kotlin/com/getcode/utils/network/ConnectionTypeTest.kt rename to libs/network/connectivity/public/src/androidHostTest/kotlin/com/getcode/utils/network/ConnectionTypeTest.kt diff --git a/libs/network/connectivity/public/src/test/kotlin/com/getcode/utils/network/PollUntilTest.kt b/libs/network/connectivity/public/src/androidHostTest/kotlin/com/getcode/utils/network/PollUntilTest.kt similarity index 100% rename from libs/network/connectivity/public/src/test/kotlin/com/getcode/utils/network/PollUntilTest.kt rename to libs/network/connectivity/public/src/androidHostTest/kotlin/com/getcode/utils/network/PollUntilTest.kt diff --git a/libs/network/connectivity/public/src/test/kotlin/com/getcode/utils/network/RetryTest.kt b/libs/network/connectivity/public/src/androidHostTest/kotlin/com/getcode/utils/network/RetryTest.kt similarity index 100% rename from libs/network/connectivity/public/src/test/kotlin/com/getcode/utils/network/RetryTest.kt rename to libs/network/connectivity/public/src/androidHostTest/kotlin/com/getcode/utils/network/RetryTest.kt diff --git a/libs/network/connectivity/public/src/main/kotlin/com/getcode/utils/network/connectivity/ConnectionStatusProvider.kt b/libs/network/connectivity/public/src/androidMain/kotlin/com/getcode/utils/network/connectivity/ConnectionStatusProvider.kt similarity index 100% rename from libs/network/connectivity/public/src/main/kotlin/com/getcode/utils/network/connectivity/ConnectionStatusProvider.kt rename to libs/network/connectivity/public/src/androidMain/kotlin/com/getcode/utils/network/connectivity/ConnectionStatusProvider.kt diff --git a/libs/network/connectivity/public/src/main/kotlin/com/getcode/utils/network/NetworkConnectionListener.kt b/libs/network/connectivity/public/src/commonMain/kotlin/com/getcode/utils/network/NetworkConnectionListener.kt similarity index 100% rename from libs/network/connectivity/public/src/main/kotlin/com/getcode/utils/network/NetworkConnectionListener.kt rename to libs/network/connectivity/public/src/commonMain/kotlin/com/getcode/utils/network/NetworkConnectionListener.kt diff --git a/libs/network/connectivity/public/src/main/kotlin/com/getcode/utils/network/Polling.kt b/libs/network/connectivity/public/src/commonMain/kotlin/com/getcode/utils/network/Polling.kt similarity index 100% rename from libs/network/connectivity/public/src/main/kotlin/com/getcode/utils/network/Polling.kt rename to libs/network/connectivity/public/src/commonMain/kotlin/com/getcode/utils/network/Polling.kt diff --git a/libs/network/connectivity/public/src/main/kotlin/com/getcode/utils/network/Retry.kt b/libs/network/connectivity/public/src/commonMain/kotlin/com/getcode/utils/network/Retry.kt similarity index 100% rename from libs/network/connectivity/public/src/main/kotlin/com/getcode/utils/network/Retry.kt rename to libs/network/connectivity/public/src/commonMain/kotlin/com/getcode/utils/network/Retry.kt diff --git a/libs/network/jwt/build.gradle.kts b/libs/network/jwt/build.gradle.kts index 4ae483c8bd..907929211b 100644 --- a/libs/network/jwt/build.gradle.kts +++ b/libs/network/jwt/build.gradle.kts @@ -1,7 +1,9 @@ plugins { - alias(libs.plugins.flipcash.android.library) + alias(libs.plugins.flipcash.kmp.app.library) } -android { - namespace = "${Gradle.codeNamespace}.libs.network.jwt" +kotlin { + android { + namespace = "${Gradle.codeNamespace}.libs.network.jwt" + } } diff --git a/libs/network/jwt/src/main/kotlin/com/getcode/network/jwt/JwtProvider.kt b/libs/network/jwt/src/commonMain/kotlin/com/getcode/network/jwt/JwtProvider.kt similarity index 100% rename from libs/network/jwt/src/main/kotlin/com/getcode/network/jwt/JwtProvider.kt rename to libs/network/jwt/src/commonMain/kotlin/com/getcode/network/jwt/JwtProvider.kt diff --git a/libs/network/jwt/src/main/kotlin/com/getcode/network/jwt/JwtSecuredEndpoint.kt b/libs/network/jwt/src/commonMain/kotlin/com/getcode/network/jwt/JwtSecuredEndpoint.kt similarity index 100% rename from libs/network/jwt/src/main/kotlin/com/getcode/network/jwt/JwtSecuredEndpoint.kt rename to libs/network/jwt/src/commonMain/kotlin/com/getcode/network/jwt/JwtSecuredEndpoint.kt diff --git a/libs/parcelable/build.gradle.kts b/libs/parcelable/build.gradle.kts new file mode 100644 index 0000000000..e06a9d2d4b --- /dev/null +++ b/libs/parcelable/build.gradle.kts @@ -0,0 +1,9 @@ +plugins { + alias(libs.plugins.flipcash.kmp.app.library) +} + +kotlin { + android { + namespace = "${Gradle.codeNamespace}.libs.parcelable" + } +} diff --git a/libs/parcelable/src/androidHostTest/kotlin/com/getcode/libs/parcelable/ParcelizeTest.kt b/libs/parcelable/src/androidHostTest/kotlin/com/getcode/libs/parcelable/ParcelizeTest.kt new file mode 100644 index 0000000000..de1cca403b --- /dev/null +++ b/libs/parcelable/src/androidHostTest/kotlin/com/getcode/libs/parcelable/ParcelizeTest.kt @@ -0,0 +1,15 @@ +package com.getcode.libs.parcelable + +import kotlin.test.Test +import kotlin.test.assertNotNull + +@Parcelize +data class Sample(val name: String) : Parcelable + +class ParcelizeTest { + @Test + fun `common Parcelize annotation generates a CREATOR`() { + // The parcelize plugin only adds the field when it treats the common annotation as its own. + assertNotNull(Sample::class.java.getField("CREATOR").get(null) as? android.os.Parcelable.Creator<*>) + } +} diff --git a/libs/parcelable/src/androidMain/kotlin/com/getcode/libs/parcelable/Parcelable.android.kt b/libs/parcelable/src/androidMain/kotlin/com/getcode/libs/parcelable/Parcelable.android.kt new file mode 100644 index 0000000000..f06cb51e54 --- /dev/null +++ b/libs/parcelable/src/androidMain/kotlin/com/getcode/libs/parcelable/Parcelable.android.kt @@ -0,0 +1,20 @@ +package com.getcode.libs.parcelable + +actual typealias Parcelable = android.os.Parcelable + +actual interface ManualParcelable : Parcelable { + actual override fun describeContents(): Int + actual override fun writeToParcel(dest: Parcel, flags: Int) +} + +actual typealias Parcel = android.os.Parcel + +actual fun parcelableCreator(newArray: (Int) -> Array, create: (Parcel) -> T): Any = + object : android.os.Parcelable.Creator { + override fun createFromParcel(source: Parcel): T = create(source) + override fun newArray(size: Int): Array = newArray(size) + } + +actual typealias Parcelize = kotlinx.parcelize.Parcelize + +actual typealias IgnoredOnParcel = kotlinx.parcelize.IgnoredOnParcel diff --git a/libs/parcelable/src/commonMain/kotlin/com/getcode/libs/parcelable/Parcelable.kt b/libs/parcelable/src/commonMain/kotlin/com/getcode/libs/parcelable/Parcelable.kt new file mode 100644 index 0000000000..c36000ae8c --- /dev/null +++ b/libs/parcelable/src/commonMain/kotlin/com/getcode/libs/parcelable/Parcelable.kt @@ -0,0 +1,45 @@ +package com.getcode.libs.parcelable + +/** + * `android.os.Parcelable` on Android; on the desktop JVM a marker interface nothing reads. + * + * Common code sees no members, so a [Parcelize] class compiles on both targets. A class that + * writes its own parcel format implements [ManualParcelable] instead. + */ +expect interface Parcelable + +/** + * A sub-interface of `android.os.Parcelable` on Android, with the two members declared so a class can + * hand-write its parcel format in common code. + */ +expect interface ManualParcelable : Parcelable { + fun describeContents(): Int + fun writeToParcel(dest: Parcel, flags: Int) +} + +/** `android.os.Parcel` on Android. The desktop JVM never creates one. */ +expect class Parcel { + fun writeString(value: String?) + fun readString(): String? +} + +/** + * Builds the `CREATOR` a hand-written [Parcelable] needs on Android. Android finds the field by + * reflection and casts it, so the declared type can stay [Any] in common code. + */ +expect fun parcelableCreator(newArray: (Int) -> Array, create: (Parcel) -> T): Any + +/** + * Common stand-in for `kotlinx.parcelize.Parcelize`. The parcelize compiler plugin is told to + * treat it as its own (`additionalAnnotation`), so it generates the Android implementation. + */ +@OptionalExpectation +@Target(AnnotationTarget.CLASS) +@Retention(AnnotationRetention.BINARY) +expect annotation class Parcelize() + +/** Common stand-in for `kotlinx.parcelize.IgnoredOnParcel`. */ +@OptionalExpectation +@Target(AnnotationTarget.PROPERTY) +@Retention(AnnotationRetention.SOURCE) +expect annotation class IgnoredOnParcel() diff --git a/libs/parcelable/src/commonTest/kotlin/com/getcode/libs/parcelable/ParcelizeProbe.kt b/libs/parcelable/src/commonTest/kotlin/com/getcode/libs/parcelable/ParcelizeProbe.kt new file mode 100644 index 0000000000..7631dbe02f --- /dev/null +++ b/libs/parcelable/src/commonTest/kotlin/com/getcode/libs/parcelable/ParcelizeProbe.kt @@ -0,0 +1,4 @@ +package com.getcode.libs.parcelable + +@Parcelize +data class ParcelizeProbe(val name: String, val count: Int) : Parcelable diff --git a/libs/parcelable/src/jvmMain/kotlin/com/getcode/libs/parcelable/Parcelable.jvm.kt b/libs/parcelable/src/jvmMain/kotlin/com/getcode/libs/parcelable/Parcelable.jvm.kt new file mode 100644 index 0000000000..4e8741c5c6 --- /dev/null +++ b/libs/parcelable/src/jvmMain/kotlin/com/getcode/libs/parcelable/Parcelable.jvm.kt @@ -0,0 +1,15 @@ +package com.getcode.libs.parcelable + +actual interface Parcelable + +actual interface ManualParcelable : Parcelable { + actual fun describeContents(): Int + actual fun writeToParcel(dest: Parcel, flags: Int) +} + +actual class Parcel private constructor() { + actual fun writeString(value: String?): Unit = throw UnsupportedOperationException() + actual fun readString(): String? = throw UnsupportedOperationException() +} + +actual fun parcelableCreator(newArray: (Int) -> Array, create: (Parcel) -> T): Any = Unit diff --git a/services/flipcash/build.gradle.kts b/services/flipcash/build.gradle.kts index 6770471c04..97e107fbf0 100644 --- a/services/flipcash/build.gradle.kts +++ b/services/flipcash/build.gradle.kts @@ -1,80 +1,65 @@ plugins { - alias(libs.plugins.flipcash.android.library) - id("com.google.devtools.ksp") + alias(libs.plugins.flipcash.kmp.app.library) + alias(libs.plugins.kotlin.ksp) id("org.jetbrains.kotlin.plugin.parcelize") } -android { - namespace = "${Gradle.codeNamespace}.services.flipcash" - - defaultConfig { - consumerProguardFiles("consumer-rules.pro") - - buildConfigField("Boolean", "NOTIFY_ERRORS", "false") - buildConfigField( - "String", - "GOOGLE_CLOUD_PROJECT_NUMBER", - "\"${tryReadProperty(rootProject.rootDir, "GOOGLE_CLOUD_PROJECT_NUMBER", "-1L")}\"" - ) - } - - buildFeatures { - buildConfig = true +kotlin { + android { + namespace = "${Gradle.codeNamespace}.services.flipcash" + optimization { + consumerKeepRules.apply { + publish = true + file("consumer-rules.pro") + } + } } - testFixtures { - enable = true + sourceSets { + commonMain.dependencies { + implementation(libs.flipcash2.client.protocol) + api(project(":libs:network:jwt")) + api(project(":services:opencode")) + implementation(project(":ui:resources")) + // `api`: ChatContentCrypto and ChatKeySource name ChatCipher and its KeyPair. + api(project(":libs:encryption:chat-cipher")) + + implementation(libs.bundles.hilt.common) + implementation(libs.kotlinx.serialization.json) + implementation(libs.grpc.okhttp) + implementation(libs.grpc.kotlin) + implementation(libs.grpc.protobuf.lite) + implementation(libs.protobuf.validate.runtime) + implementation(libs.androidx.paging.common) + implementation(libs.okhttp) + implementation(libs.event.bus) + } + androidMain.dependencies { + implementation(libs.grpc.android) + implementation(libs.androidx.lifecycle.runtime) + implementation(libs.androidx.lifecycle.process) + implementation(libs.mixpanel) + implementation(project.dependencies.platform(libs.firebase.bom)) + implementation(libs.firebase.installations) + implementation(libs.play.integrity) + implementation(libs.fingerprint.pro) + implementation(libs.hilt.android) + + // Not imported by this module; kept so the app's runtime classpath is unchanged. + implementation(libs.androidx.room.runtime) + implementation(libs.androidx.room.ktx) + implementation(libs.androidx.room.paging) + implementation(libs.androidx.paging.runtime) + } + getByName("androidHostTest").dependencies { + implementation(kotlin("test")) + implementation(libs.bundles.unit.testing) + implementation(project(":services:flipcash:test-fixtures")) + } } } dependencies { - implementation(libs.flipcash2.client.protocol) - api(project(":libs:network:jwt")) - api(project(":services:opencode")) - implementation(project(":ui:resources")) - // `api`: ChatContentCrypto and ChatKeySource name ChatCipher and its KeyPair. - api(project(":libs:encryption:chat-cipher")) - testFixturesImplementation(project(":libs:encryption:chat-cipher")) - - implementation(libs.javax.inject) - - implementation(libs.kotlinx.serialization.json) - implementation(libs.javax.inject) - - implementation(libs.grpc.android) - implementation(libs.grpc.okhttp) - implementation(libs.grpc.kotlin) - implementation(libs.grpc.protobuf.lite) - implementation(libs.protobuf.validate.runtime) - implementation(libs.androidx.lifecycle.runtime) - implementation(libs.androidx.lifecycle.process) - implementation(libs.androidx.room.runtime) - implementation(libs.androidx.room.ktx) - implementation(libs.androidx.room.paging) - implementation(libs.okhttp) - implementation(libs.mixpanel) - - implementation(platform(libs.firebase.bom)) - implementation(libs.firebase.installations) - - implementation(libs.play.integrity) - - implementation(libs.androidx.paging.runtime) - - ksp(libs.androidx.room.compiler) - - implementation(libs.fingerprint.pro) - - androidTestImplementation(libs.androidx.junit) - androidTestImplementation(libs.junit) - androidTestImplementation(libs.androidx.test.runner) - - implementation(libs.hilt.android) - ksp(libs.hilt.android.compiler) - ksp(libs.hilt.compiler) - - implementation(libs.event.bus) - - testImplementation(kotlin("test")) - testImplementation(libs.bundles.unit.testing) + add("kspAndroid", libs.hilt.android.compiler) + add("kspAndroid", libs.hilt.compiler) } diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/chat/ChatContentCryptoTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/chat/ChatContentCryptoTest.kt similarity index 100% rename from services/flipcash/src/test/kotlin/com/flipcash/services/chat/ChatContentCryptoTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/chat/ChatContentCryptoTest.kt diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/chat/E2eePolicyTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/chat/E2eePolicyTest.kt similarity index 100% rename from services/flipcash/src/test/kotlin/com/flipcash/services/chat/E2eePolicyTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/chat/E2eePolicyTest.kt diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/chat/GroupContentCryptoTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/chat/GroupContentCryptoTest.kt similarity index 100% rename from services/flipcash/src/test/kotlin/com/flipcash/services/chat/GroupContentCryptoTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/chat/GroupContentCryptoTest.kt diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/chat/GroupKeyEnvelopesTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/chat/GroupKeyEnvelopesTest.kt similarity index 100% rename from services/flipcash/src/test/kotlin/com/flipcash/services/chat/GroupKeyEnvelopesTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/chat/GroupKeyEnvelopesTest.kt diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/controllers/BlobStorageControllerChatMediaTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/controllers/BlobStorageControllerChatMediaTest.kt similarity index 99% rename from services/flipcash/src/test/kotlin/com/flipcash/services/controllers/BlobStorageControllerChatMediaTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/controllers/BlobStorageControllerChatMediaTest.kt index f0c7fac5c0..fb61b682e1 100644 --- a/services/flipcash/src/test/kotlin/com/flipcash/services/controllers/BlobStorageControllerChatMediaTest.kt +++ b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/controllers/BlobStorageControllerChatMediaTest.kt @@ -18,7 +18,7 @@ import com.flipcash.services.models.chat.ChatId import com.flipcash.services.models.chat.RejectionReason import com.flipcash.services.repository.BlobStorageRepository import com.flipcash.services.user.UserManager -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.model.accounts.AccountCluster import io.mockk.coEvery import io.mockk.coVerify diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/controllers/BlobStorageControllerTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/controllers/BlobStorageControllerTest.kt similarity index 99% rename from services/flipcash/src/test/kotlin/com/flipcash/services/controllers/BlobStorageControllerTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/controllers/BlobStorageControllerTest.kt index 6199bde5b0..9d3d17dcfc 100644 --- a/services/flipcash/src/test/kotlin/com/flipcash/services/controllers/BlobStorageControllerTest.kt +++ b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/controllers/BlobStorageControllerTest.kt @@ -15,7 +15,7 @@ import com.flipcash.services.models.chat.BlobStatus import com.flipcash.services.models.chat.RejectionReason import com.flipcash.services.repository.BlobStorageRepository import com.flipcash.services.user.UserManager -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.model.accounts.AccountCluster import io.mockk.coEvery import io.mockk.coVerify diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/controllers/ChatControllerTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/controllers/ChatControllerTest.kt similarity index 99% rename from services/flipcash/src/test/kotlin/com/flipcash/services/controllers/ChatControllerTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/controllers/ChatControllerTest.kt index d4c2fa2f53..4326c47d0c 100644 --- a/services/flipcash/src/test/kotlin/com/flipcash/services/controllers/ChatControllerTest.kt +++ b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/controllers/ChatControllerTest.kt @@ -23,7 +23,7 @@ import com.flipcash.services.models.UserProfile import com.flipcash.services.models.chat.MentionSuggestion import com.flipcash.services.repository.ChatRepository import com.flipcash.services.user.UserManager -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.model.accounts.AccountCluster import com.getcode.opencode.model.core.ID import io.mockk.every diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/controllers/ChatMessagingControllerTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/controllers/ChatMessagingControllerTest.kt similarity index 99% rename from services/flipcash/src/test/kotlin/com/flipcash/services/controllers/ChatMessagingControllerTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/controllers/ChatMessagingControllerTest.kt index 3ddd48f844..1da44fb5b1 100644 --- a/services/flipcash/src/test/kotlin/com/flipcash/services/controllers/ChatMessagingControllerTest.kt +++ b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/controllers/ChatMessagingControllerTest.kt @@ -18,7 +18,7 @@ import com.flipcash.services.repository.ReactorsPage import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flowOf import com.flipcash.services.user.UserManager -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.model.accounts.AccountCluster import io.mockk.every import io.mockk.mockk diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/controllers/ContactVerificationControllerTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/controllers/ContactVerificationControllerTest.kt similarity index 100% rename from services/flipcash/src/test/kotlin/com/flipcash/services/controllers/ContactVerificationControllerTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/controllers/ContactVerificationControllerTest.kt diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/controllers/EventStreamingControllerTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/controllers/EventStreamingControllerTest.kt similarity index 99% rename from services/flipcash/src/test/kotlin/com/flipcash/services/controllers/EventStreamingControllerTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/controllers/EventStreamingControllerTest.kt index 0cd2a4ad36..21db53db5a 100644 --- a/services/flipcash/src/test/kotlin/com/flipcash/services/controllers/EventStreamingControllerTest.kt +++ b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/controllers/EventStreamingControllerTest.kt @@ -6,7 +6,7 @@ import com.flipcash.services.models.chat.ChatId import com.flipcash.services.models.chat.ChatUpdate import com.flipcash.services.repository.EventStreamingRepository import com.flipcash.services.user.UserManager -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.model.accounts.AccountCluster import io.mockk.every import io.mockk.mockk diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/controllers/ProfileControllerTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/controllers/ProfileControllerTest.kt similarity index 99% rename from services/flipcash/src/test/kotlin/com/flipcash/services/controllers/ProfileControllerTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/controllers/ProfileControllerTest.kt index 8118af6d55..f97941216a 100644 --- a/services/flipcash/src/test/kotlin/com/flipcash/services/controllers/ProfileControllerTest.kt +++ b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/controllers/ProfileControllerTest.kt @@ -12,7 +12,7 @@ import com.flipcash.services.models.chat.MediaItem import com.flipcash.services.models.ProfileIdentifier import com.flipcash.services.repository.ProfileRepository import com.flipcash.services.user.UserManager -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.model.accounts.AccountCluster import com.getcode.opencode.model.core.ID import com.getcode.opencode.model.financial.Fiat diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/internal/domain/ActivityFeedMessageMapperTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/domain/ActivityFeedMessageMapperTest.kt similarity index 100% rename from services/flipcash/src/test/kotlin/com/flipcash/services/internal/domain/ActivityFeedMessageMapperTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/domain/ActivityFeedMessageMapperTest.kt diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/internal/domain/ChatMetadataMapperTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/domain/ChatMetadataMapperTest.kt similarity index 100% rename from services/flipcash/src/test/kotlin/com/flipcash/services/internal/domain/ChatMetadataMapperTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/domain/ChatMetadataMapperTest.kt diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/internal/domain/SocialAccountMapperTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/domain/SocialAccountMapperTest.kt similarity index 100% rename from services/flipcash/src/test/kotlin/com/flipcash/services/internal/domain/SocialAccountMapperTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/domain/SocialAccountMapperTest.kt diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/internal/domain/UserFlagsMapperTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/domain/UserFlagsMapperTest.kt similarity index 100% rename from services/flipcash/src/test/kotlin/com/flipcash/services/internal/domain/UserFlagsMapperTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/domain/UserFlagsMapperTest.kt diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/internal/domain/UserProfileMapperTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/domain/UserProfileMapperTest.kt similarity index 100% rename from services/flipcash/src/test/kotlin/com/flipcash/services/internal/domain/UserProfileMapperTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/domain/UserProfileMapperTest.kt diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/internal/extensions/JpegMetadataTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/extensions/JpegMetadataTest.kt similarity index 100% rename from services/flipcash/src/test/kotlin/com/flipcash/services/internal/extensions/JpegMetadataTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/extensions/JpegMetadataTest.kt diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/internal/network/api/BlobAccessContextValidationTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/network/api/BlobAccessContextValidationTest.kt similarity index 100% rename from services/flipcash/src/test/kotlin/com/flipcash/services/internal/network/api/BlobAccessContextValidationTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/network/api/BlobAccessContextValidationTest.kt diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/internal/network/api/BlobStorageApiDeadlineTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/network/api/BlobStorageApiDeadlineTest.kt similarity index 98% rename from services/flipcash/src/test/kotlin/com/flipcash/services/internal/network/api/BlobStorageApiDeadlineTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/network/api/BlobStorageApiDeadlineTest.kt index 34861e284a..eac29fe23d 100644 --- a/services/flipcash/src/test/kotlin/com/flipcash/services/internal/network/api/BlobStorageApiDeadlineTest.kt +++ b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/network/api/BlobStorageApiDeadlineTest.kt @@ -2,7 +2,7 @@ package com.flipcash.services.internal.network.api import androidx.lifecycle.ProcessLifecycleOwner import com.codeinc.flipcash.gen.common.v1.Common -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import io.grpc.ManagedChannel import io.grpc.Status import io.grpc.StatusException diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/internal/network/api/GetBlobsRequestSigningTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/network/api/GetBlobsRequestSigningTest.kt similarity index 100% rename from services/flipcash/src/test/kotlin/com/flipcash/services/internal/network/api/GetBlobsRequestSigningTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/network/api/GetBlobsRequestSigningTest.kt diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/internal/network/extensions/CashContentMappingTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/network/extensions/CashContentMappingTest.kt similarity index 100% rename from services/flipcash/src/test/kotlin/com/flipcash/services/internal/network/extensions/CashContentMappingTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/network/extensions/CashContentMappingTest.kt diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/internal/network/extensions/ChatMetadataExtensionTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/network/extensions/ChatMetadataExtensionTest.kt similarity index 100% rename from services/flipcash/src/test/kotlin/com/flipcash/services/internal/network/extensions/ChatMetadataExtensionTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/network/extensions/ChatMetadataExtensionTest.kt diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/internal/network/extensions/ChatRulesProtoMappingTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/network/extensions/ChatRulesProtoMappingTest.kt similarity index 100% rename from services/flipcash/src/test/kotlin/com/flipcash/services/internal/network/extensions/ChatRulesProtoMappingTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/network/extensions/ChatRulesProtoMappingTest.kt diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/internal/network/extensions/MediaContentMappingTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/network/extensions/MediaContentMappingTest.kt similarity index 100% rename from services/flipcash/src/test/kotlin/com/flipcash/services/internal/network/extensions/MediaContentMappingTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/network/extensions/MediaContentMappingTest.kt diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/internal/network/extensions/MessageContentEncryptedMappingTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/network/extensions/MessageContentEncryptedMappingTest.kt similarity index 100% rename from services/flipcash/src/test/kotlin/com/flipcash/services/internal/network/extensions/MessageContentEncryptedMappingTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/network/extensions/MessageContentEncryptedMappingTest.kt diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/internal/network/extensions/PushPayloadMuteMappingTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/network/extensions/PushPayloadMuteMappingTest.kt similarity index 100% rename from services/flipcash/src/test/kotlin/com/flipcash/services/internal/network/extensions/PushPayloadMuteMappingTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/network/extensions/PushPayloadMuteMappingTest.kt diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/internal/network/extensions/RosterUpdateExtensionTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/network/extensions/RosterUpdateExtensionTest.kt similarity index 100% rename from services/flipcash/src/test/kotlin/com/flipcash/services/internal/network/extensions/RosterUpdateExtensionTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/network/extensions/RosterUpdateExtensionTest.kt diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/internal/network/extensions/SystemContentMappingTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/network/extensions/SystemContentMappingTest.kt similarity index 100% rename from services/flipcash/src/test/kotlin/com/flipcash/services/internal/network/extensions/SystemContentMappingTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/network/extensions/SystemContentMappingTest.kt diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/internal/network/extensions/WidgetAndNeverMappingTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/network/extensions/WidgetAndNeverMappingTest.kt similarity index 100% rename from services/flipcash/src/test/kotlin/com/flipcash/services/internal/network/extensions/WidgetAndNeverMappingTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/network/extensions/WidgetAndNeverMappingTest.kt diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/internal/network/services/PhoneVerificationServiceTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/network/services/PhoneVerificationServiceTest.kt similarity index 99% rename from services/flipcash/src/test/kotlin/com/flipcash/services/internal/network/services/PhoneVerificationServiceTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/network/services/PhoneVerificationServiceTest.kt index 5fe017e87b..384b7cf66e 100644 --- a/services/flipcash/src/test/kotlin/com/flipcash/services/internal/network/services/PhoneVerificationServiceTest.kt +++ b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/network/services/PhoneVerificationServiceTest.kt @@ -3,7 +3,7 @@ package com.flipcash.services.internal.network.services import com.flipcash.services.internal.network.api.PhoneVerificationApi import com.flipcash.services.models.ContactMethod import com.flipcash.services.models.PhoneVerificationError -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.model.core.errors.ValidationException import dev.bmcreations.protovalidate.FieldViolation import dev.bmcreations.protovalidate.ProtoValidationException diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/internal/proto/ProtoWireFormatTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/proto/ProtoWireFormatTest.kt similarity index 100% rename from services/flipcash/src/test/kotlin/com/flipcash/services/internal/proto/ProtoWireFormatTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/internal/proto/ProtoWireFormatTest.kt diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/models/DmPaymentMetadataTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/models/DmPaymentMetadataTest.kt similarity index 100% rename from services/flipcash/src/test/kotlin/com/flipcash/services/models/DmPaymentMetadataTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/models/DmPaymentMetadataTest.kt diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/models/ErrorsTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/models/ErrorsTest.kt similarity index 100% rename from services/flipcash/src/test/kotlin/com/flipcash/services/models/ErrorsTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/models/ErrorsTest.kt diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/models/HandleTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/models/HandleTest.kt similarity index 100% rename from services/flipcash/src/test/kotlin/com/flipcash/services/models/HandleTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/models/HandleTest.kt diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/models/blob/UploadPolicyTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/models/blob/UploadPolicyTest.kt similarity index 100% rename from services/flipcash/src/test/kotlin/com/flipcash/services/models/blob/UploadPolicyTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/models/blob/UploadPolicyTest.kt diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/models/chat/BlobExpiryTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/models/chat/BlobExpiryTest.kt similarity index 100% rename from services/flipcash/src/test/kotlin/com/flipcash/services/models/chat/BlobExpiryTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/models/chat/BlobExpiryTest.kt diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/models/chat/BlobIdEqualityTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/models/chat/BlobIdEqualityTest.kt similarity index 100% rename from services/flipcash/src/test/kotlin/com/flipcash/services/models/chat/BlobIdEqualityTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/models/chat/BlobIdEqualityTest.kt diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/models/chat/BlobIdSerializationTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/models/chat/BlobIdSerializationTest.kt similarity index 100% rename from services/flipcash/src/test/kotlin/com/flipcash/services/models/chat/BlobIdSerializationTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/models/chat/BlobIdSerializationTest.kt diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/models/chat/ChatIdTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/models/chat/ChatIdTest.kt similarity index 100% rename from services/flipcash/src/test/kotlin/com/flipcash/services/models/chat/ChatIdTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/models/chat/ChatIdTest.kt diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/models/chat/DmAddressabilityTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/models/chat/DmAddressabilityTest.kt similarity index 100% rename from services/flipcash/src/test/kotlin/com/flipcash/services/models/chat/DmAddressabilityTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/models/chat/DmAddressabilityTest.kt diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/models/chat/DomainModelsTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/models/chat/DomainModelsTest.kt similarity index 100% rename from services/flipcash/src/test/kotlin/com/flipcash/services/models/chat/DomainModelsTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/models/chat/DomainModelsTest.kt diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/models/chat/MediaItemTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/models/chat/MediaItemTest.kt similarity index 100% rename from services/flipcash/src/test/kotlin/com/flipcash/services/models/chat/MediaItemTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/models/chat/MediaItemTest.kt diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/models/chat/MuteLapseTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/models/chat/MuteLapseTest.kt similarity index 100% rename from services/flipcash/src/test/kotlin/com/flipcash/services/models/chat/MuteLapseTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/models/chat/MuteLapseTest.kt diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/user/AnalyticsIdentityTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/user/AnalyticsIdentityTest.kt similarity index 100% rename from services/flipcash/src/test/kotlin/com/flipcash/services/user/AnalyticsIdentityTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/user/AnalyticsIdentityTest.kt diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/user/UserManagerTest.kt b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/user/UserManagerTest.kt similarity index 96% rename from services/flipcash/src/test/kotlin/com/flipcash/services/user/UserManagerTest.kt rename to services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/user/UserManagerTest.kt index 8fa1dd64f5..fde805c379 100644 --- a/services/flipcash/src/test/kotlin/com/flipcash/services/user/UserManagerTest.kt +++ b/services/flipcash/src/androidHostTest/kotlin/com/flipcash/services/user/UserManagerTest.kt @@ -10,7 +10,6 @@ import com.getcode.opencode.model.financial.usdf import com.getcode.opencode.utils.generate import com.getcode.solana.keys.PublicKey import com.hoc081098.channeleventbus.ChannelEventBus -import com.mixpanel.android.mpmetrics.MixpanelAPI import io.mockk.clearMocks import io.mockk.every import io.mockk.mockk @@ -28,7 +27,7 @@ import kotlin.test.assertNull class UserManagerTest { private val mnemonicManager: MnemonicManager = mockk(relaxed = true) - private val mixpanelAPI: MixpanelAPI = mockk(relaxed = true) + private val analyticsIdentifier: AnalyticsIdentifier = mockk(relaxed = true) private val eventBus: ChannelEventBus = mockk(relaxed = true) private val accountController: AccountController = mockk(relaxed = true) @@ -58,7 +57,7 @@ class UserManagerTest { private fun createUserManager() = UserManager( mnemonicManager = mnemonicManager, - mixpanelAPI = mixpanelAPI, + analyticsIdentifier = analyticsIdentifier, eventBus = eventBus, accountController = accountController, ) diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/ForegroundGate.kt b/services/flipcash/src/androidMain/kotlin/com/flipcash/services/ProcessForegroundGate.kt similarity index 64% rename from services/flipcash/src/main/kotlin/com/flipcash/services/ForegroundGate.kt rename to services/flipcash/src/androidMain/kotlin/com/flipcash/services/ProcessForegroundGate.kt index c6256c461c..23afd99b8a 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/ForegroundGate.kt +++ b/services/flipcash/src/androidMain/kotlin/com/flipcash/services/ProcessForegroundGate.kt @@ -8,16 +8,6 @@ import kotlinx.coroutines.withContext import javax.inject.Inject import javax.inject.Singleton -/** - * Whether the app is in the foreground. Work whose deadline should count foreground time only - * (chat media finalization) waits on [awaitForeground] before each step, so a backgrounded app - * neither burns its budget nor polls from a process the OS may be about to freeze. - */ -fun interface ForegroundGate { - /** Returns immediately when the app is foregrounded, otherwise suspends until it is. */ - suspend fun awaitForeground() -} - /** [ForegroundGate] backed by [ProcessLifecycleOwner]: foreground means at least STARTED. */ @Singleton internal class ProcessForegroundGate @Inject constructor() : ForegroundGate { diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/controllers/ModerationController.kt b/services/flipcash/src/androidMain/kotlin/com/flipcash/services/controllers/ModerationController.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/controllers/ModerationController.kt rename to services/flipcash/src/androidMain/kotlin/com/flipcash/services/controllers/ModerationController.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/controllers/PushController.kt b/services/flipcash/src/androidMain/kotlin/com/flipcash/services/controllers/PushController.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/controllers/PushController.kt rename to services/flipcash/src/androidMain/kotlin/com/flipcash/services/controllers/PushController.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/inject/FlipcashModule.kt b/services/flipcash/src/androidMain/kotlin/com/flipcash/services/inject/FlipcashModule.kt similarity index 97% rename from services/flipcash/src/main/kotlin/com/flipcash/services/inject/FlipcashModule.kt rename to services/flipcash/src/androidMain/kotlin/com/flipcash/services/inject/FlipcashModule.kt index 1daeefddf9..e45cd2ff18 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/inject/FlipcashModule.kt +++ b/services/flipcash/src/androidMain/kotlin/com/flipcash/services/inject/FlipcashModule.kt @@ -1,6 +1,8 @@ package com.flipcash.services.inject import android.content.Context +import com.flipcash.services.user.AnalyticsIdentifier +import com.mixpanel.android.mpmetrics.MixpanelAPI import com.flipcash.services.internal.annotations.FlipcashManagedChannel import com.flipcash.services.internal.annotations.FlipcashManagedStreamingChannel import com.flipcash.services.internal.annotations.FlipcashProtocol @@ -94,6 +96,10 @@ import javax.inject.Singleton @Module @InstallIn(SingletonComponent::class) internal object FlipcashModule { + @Provides + fun provideAnalyticsIdentifier(mixpanelAPI: MixpanelAPI): AnalyticsIdentifier = + AnalyticsIdentifier { mixpanelAPI.identify(it) } + @Singleton @FlipcashProtocol @Provides diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/extensions/Installations.kt b/services/flipcash/src/androidMain/kotlin/com/flipcash/services/internal/extensions/Installations.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/extensions/Installations.kt rename to services/flipcash/src/androidMain/kotlin/com/flipcash/services/internal/extensions/Installations.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/BlobUploader.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/BlobUploader.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/BlobUploader.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/BlobUploader.kt diff --git a/services/flipcash/src/commonMain/kotlin/com/flipcash/services/ForegroundGate.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/ForegroundGate.kt new file mode 100644 index 0000000000..e0fb571324 --- /dev/null +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/ForegroundGate.kt @@ -0,0 +1,11 @@ +package com.flipcash.services + +/** + * Whether the app is in the foreground. Work whose deadline should count foreground time only + * (chat media finalization) waits on [awaitForeground] before each step, so a backgrounded app + * neither burns its budget nor polls from a process the OS may be about to freeze. + */ +fun interface ForegroundGate { + /** Returns immediately when the app is foregrounded, otherwise suspends until it is. */ + suspend fun awaitForeground() +} diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/chat/ChatContentCrypto.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/chat/ChatContentCrypto.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/chat/ChatContentCrypto.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/chat/ChatContentCrypto.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/chat/ChatKeySource.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/chat/ChatKeySource.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/chat/ChatKeySource.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/chat/ChatKeySource.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/chat/E2eePolicy.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/chat/E2eePolicy.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/chat/E2eePolicy.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/chat/E2eePolicy.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/chat/GroupContentCrypto.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/chat/GroupContentCrypto.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/chat/GroupContentCrypto.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/chat/GroupContentCrypto.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/chat/GroupKeyEnvelopes.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/chat/GroupKeyEnvelopes.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/chat/GroupKeyEnvelopes.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/chat/GroupKeyEnvelopes.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/chat/MessageEncryption.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/chat/MessageEncryption.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/chat/MessageEncryption.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/chat/MessageEncryption.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/chat/SealedMedia.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/chat/SealedMedia.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/chat/SealedMedia.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/chat/SealedMedia.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/controllers/AccountController.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/controllers/AccountController.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/controllers/AccountController.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/controllers/AccountController.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/controllers/ActivityFeedController.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/controllers/ActivityFeedController.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/controllers/ActivityFeedController.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/controllers/ActivityFeedController.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/controllers/BlobStorageController.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/controllers/BlobStorageController.kt similarity index 99% rename from services/flipcash/src/main/kotlin/com/flipcash/services/controllers/BlobStorageController.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/controllers/BlobStorageController.kt index 804a34410b..a4fdb8cffd 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/controllers/BlobStorageController.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/controllers/BlobStorageController.kt @@ -16,7 +16,7 @@ import com.flipcash.services.models.chat.ChatId import com.flipcash.services.models.blob.UploadReservation import com.flipcash.services.repository.BlobStorageRepository import com.flipcash.services.user.UserManager -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.utils.base58 import kotlinx.coroutines.delay import javax.inject.Inject diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/controllers/BlocklistController.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/controllers/BlocklistController.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/controllers/BlocklistController.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/controllers/BlocklistController.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/controllers/ChatController.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/controllers/ChatController.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/controllers/ChatController.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/controllers/ChatController.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/controllers/ChatMessagingController.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/controllers/ChatMessagingController.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/controllers/ChatMessagingController.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/controllers/ChatMessagingController.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/controllers/CommunityController.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/controllers/CommunityController.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/controllers/CommunityController.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/controllers/CommunityController.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/controllers/ContactListController.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/controllers/ContactListController.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/controllers/ContactListController.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/controllers/ContactListController.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/controllers/ContactVerificationController.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/controllers/ContactVerificationController.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/controllers/ContactVerificationController.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/controllers/ContactVerificationController.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/controllers/EventStreamingController.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/controllers/EventStreamingController.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/controllers/EventStreamingController.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/controllers/EventStreamingController.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/controllers/PollController.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/controllers/PollController.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/controllers/PollController.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/controllers/PollController.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/controllers/ProfileController.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/controllers/ProfileController.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/controllers/ProfileController.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/controllers/ProfileController.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/controllers/PurchaseController.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/controllers/PurchaseController.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/controllers/PurchaseController.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/controllers/PurchaseController.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/controllers/ReportingController.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/controllers/ReportingController.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/controllers/ReportingController.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/controllers/ReportingController.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/controllers/ResolverController.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/controllers/ResolverController.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/controllers/ResolverController.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/controllers/ResolverController.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/controllers/SettingsController.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/controllers/SettingsController.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/controllers/SettingsController.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/controllers/SettingsController.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/controllers/ThirdPartyController.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/controllers/ThirdPartyController.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/controllers/ThirdPartyController.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/controllers/ThirdPartyController.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/extensions/KeyPair.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/extensions/KeyPair.kt similarity index 65% rename from services/flipcash/src/main/kotlin/com/flipcash/services/extensions/KeyPair.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/extensions/KeyPair.kt index 445a8833e3..8b139b66b8 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/extensions/KeyPair.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/extensions/KeyPair.kt @@ -1,13 +1,10 @@ package com.flipcash.services.extensions -import android.util.Base64 import com.flipcash.services.internal.extensions.toPublicKey import com.getcode.crypt.Sha256Hash -import com.getcode.ed25519.Ed25519 -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.model.core.ID import com.getcode.solana.keys.PublicKey -import com.getcode.solana.keys.Seed32 import java.io.ByteArrayOutputStream fun derivePoolBetId(poolId: ID, userId: ID): PublicKey { @@ -15,6 +12,6 @@ fun derivePoolBetId(poolId: ID, userId: ID): PublicKey { buffer.write(poolId.toByteArray()) buffer.write(userId.toByteArray()) val hash = Sha256Hash.hash(buffer.toByteArray()) - val seed = Base64.encodeToString(hash, Base64.DEFAULT) - return Ed25519.createKeyPair(seed).publicKeyBytes.toPublicKey() + // Same key as the former Base64.DEFAULT-encoded seed string. + return Ed25519.createKeyPair(hash).publicKeyBytes.toPublicKey() } \ No newline at end of file diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/inject/ChatCryptoModule.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/inject/ChatCryptoModule.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/inject/ChatCryptoModule.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/inject/ChatCryptoModule.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/annotations/FlipcashManagedChannel.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/annotations/FlipcashManagedChannel.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/annotations/FlipcashManagedChannel.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/annotations/FlipcashManagedChannel.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/annotations/FlipcashProtocol.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/annotations/FlipcashProtocol.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/annotations/FlipcashProtocol.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/annotations/FlipcashProtocol.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/domain/ActivityFeedMessageMapper.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/domain/ActivityFeedMessageMapper.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/domain/ActivityFeedMessageMapper.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/domain/ActivityFeedMessageMapper.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/domain/BlockedUserMapper.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/domain/BlockedUserMapper.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/domain/BlockedUserMapper.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/domain/BlockedUserMapper.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/domain/ChatMetadataMapper.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/domain/ChatMetadataMapper.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/domain/ChatMetadataMapper.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/domain/ChatMetadataMapper.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/domain/ContactMapper.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/domain/ContactMapper.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/domain/ContactMapper.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/domain/ContactMapper.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/domain/ImageModerationResponseMapper.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/domain/ImageModerationResponseMapper.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/domain/ImageModerationResponseMapper.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/domain/ImageModerationResponseMapper.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/domain/ModerationAttestationMapper.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/domain/ModerationAttestationMapper.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/domain/ModerationAttestationMapper.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/domain/ModerationAttestationMapper.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/domain/SocialAccountMapper.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/domain/SocialAccountMapper.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/domain/SocialAccountMapper.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/domain/SocialAccountMapper.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/domain/TextModerationResponseMapper.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/domain/TextModerationResponseMapper.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/domain/TextModerationResponseMapper.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/domain/TextModerationResponseMapper.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/domain/UserFlagsMapper.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/domain/UserFlagsMapper.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/domain/UserFlagsMapper.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/domain/UserFlagsMapper.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/domain/UserProfileMapper.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/domain/UserProfileMapper.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/domain/UserProfileMapper.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/domain/UserProfileMapper.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/domain/mapper/Mapper.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/domain/mapper/Mapper.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/domain/mapper/Mapper.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/domain/mapper/Mapper.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/extensions/ByteArray.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/extensions/ByteArray.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/extensions/ByteArray.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/extensions/ByteArray.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/extensions/Instant.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/extensions/Instant.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/extensions/Instant.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/extensions/Instant.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/extensions/JpegMetadata.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/extensions/JpegMetadata.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/extensions/JpegMetadata.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/extensions/JpegMetadata.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/extensions/KeyPair.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/extensions/KeyPair.kt similarity index 80% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/extensions/KeyPair.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/extensions/KeyPair.kt index 727cb06c3f..c48ed2738b 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/extensions/KeyPair.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/extensions/KeyPair.kt @@ -1,6 +1,6 @@ package com.flipcash.services.internal.extensions -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.solana.keys.PublicKey internal fun KeyPair.asPublicKey(): PublicKey { diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/extensions/PublicKey.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/extensions/PublicKey.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/extensions/PublicKey.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/extensions/PublicKey.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/model/billing/IapMetadata.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/model/billing/IapMetadata.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/model/billing/IapMetadata.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/model/billing/IapMetadata.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/model/billing/Receipt.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/model/billing/Receipt.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/model/billing/Receipt.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/model/billing/Receipt.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/model/moderation/ModerationRequest.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/model/moderation/ModerationRequest.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/model/moderation/ModerationRequest.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/model/moderation/ModerationRequest.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/model/thirdparty/OnRampProvider.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/model/thirdparty/OnRampProvider.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/model/thirdparty/OnRampProvider.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/model/thirdparty/OnRampProvider.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/model/thirdparty/UsdcLiquidtyPool.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/model/thirdparty/UsdcLiquidtyPool.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/model/thirdparty/UsdcLiquidtyPool.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/model/thirdparty/UsdcLiquidtyPool.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/HttpBlobUploader.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/HttpBlobUploader.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/HttpBlobUploader.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/HttpBlobUploader.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/AccountApi.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/AccountApi.kt similarity index 98% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/AccountApi.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/AccountApi.kt index fd6c0b52d6..987d1d8cab 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/AccountApi.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/AccountApi.kt @@ -9,7 +9,7 @@ import com.flipcash.services.internal.network.extensions.asPublicKey import com.flipcash.services.internal.network.extensions.asUserId import com.flipcash.services.internal.network.extensions.authenticate import com.flipcash.services.internal.network.extensions.sign -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.internal.network.core.GrpcApi import com.getcode.opencode.model.core.ID import com.google.protobuf.Timestamp diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/ActivityFeedApi.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/ActivityFeedApi.kt similarity index 98% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/ActivityFeedApi.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/ActivityFeedApi.kt index 27c4815e4a..92c55c6150 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/ActivityFeedApi.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/ActivityFeedApi.kt @@ -10,7 +10,7 @@ import com.flipcash.services.internal.network.extensions.authenticate import com.flipcash.services.internal.network.extensions.toNotificationIds import com.flipcash.services.models.ActivityFeedType import com.flipcash.services.models.QueryOptions -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.internal.network.core.GrpcApi import com.getcode.opencode.model.core.ID import dev.bmcreations.protovalidate.orThrow diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/BlobStorageApi.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/BlobStorageApi.kt similarity index 99% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/BlobStorageApi.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/BlobStorageApi.kt index 2f4a7f4654..66d4f657a7 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/BlobStorageApi.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/BlobStorageApi.kt @@ -12,7 +12,7 @@ import com.flipcash.services.internal.network.extensions.authenticate import com.flipcash.services.models.chat.BlobAccessContext import com.flipcash.services.models.chat.BlobId import com.flipcash.services.models.chat.ChatId -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.internal.network.core.GrpcApi import com.getcode.utils.toByteString import dev.bmcreations.protovalidate.orThrow diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/BlocklistApi.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/BlocklistApi.kt similarity index 98% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/BlocklistApi.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/BlocklistApi.kt index 829de957a5..6f53872b87 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/BlocklistApi.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/BlocklistApi.kt @@ -8,7 +8,7 @@ import com.flipcash.services.internal.network.extensions.asQueryOptions import com.flipcash.services.internal.network.extensions.asUserId import com.flipcash.services.internal.network.extensions.authenticate import com.flipcash.services.models.QueryOptions -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.internal.network.core.GrpcApi import com.getcode.opencode.model.core.ID import dev.bmcreations.protovalidate.orThrow diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/ChatApi.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/ChatApi.kt similarity index 99% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/ChatApi.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/ChatApi.kt index 1dbae26170..64c6ddd113 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/ChatApi.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/ChatApi.kt @@ -26,7 +26,7 @@ import com.flipcash.services.models.chat.MuteState import com.flipcash.services.models.chat.StartChatParameters import com.flipcash.services.models.chat.ViewMode import com.getcode.utils.toByteString -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.model.core.ID import com.getcode.opencode.internal.network.core.GrpcApi import dev.bmcreations.protovalidate.orThrow diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/ChatMessagingApi.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/ChatMessagingApi.kt similarity index 99% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/ChatMessagingApi.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/ChatMessagingApi.kt index 3563dfd296..90837231bc 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/ChatMessagingApi.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/ChatMessagingApi.kt @@ -25,7 +25,7 @@ import com.flipcash.services.models.chat.TypingState import com.flipcash.services.models.chat.ViewMode import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flowOn -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.internal.network.core.GrpcApi import dev.bmcreations.protovalidate.orThrow import io.grpc.ManagedChannel diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/CommunityApi.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/CommunityApi.kt similarity index 97% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/CommunityApi.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/CommunityApi.kt index 837140bdce..3537dba74f 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/CommunityApi.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/CommunityApi.kt @@ -5,7 +5,7 @@ import com.codeinc.flipcash.gen.community.v1.CommunityGrpcKt import com.codeinc.flipcash.gen.community.v1.validate import com.flipcash.services.internal.annotations.FlipcashManagedChannel import com.flipcash.services.internal.network.extensions.authenticate -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.internal.network.core.GrpcApi import com.getcode.solana.keys.Mint import com.getcode.utils.toByteString diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/ContactListApi.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/ContactListApi.kt similarity index 98% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/ContactListApi.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/ContactListApi.kt index 46dfb6272d..84a95cf134 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/ContactListApi.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/ContactListApi.kt @@ -7,7 +7,7 @@ import com.flipcash.services.models.ContactMethod import com.flipcash.services.internal.annotations.FlipcashManagedChannel import com.flipcash.services.internal.network.extensions.asHash import com.flipcash.services.internal.network.extensions.authenticate -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.internal.network.core.GrpcApi import com.getcode.solana.keys.Checksum import dev.bmcreations.protovalidate.orThrow diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/EmailVerificationApi.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/EmailVerificationApi.kt similarity index 98% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/EmailVerificationApi.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/EmailVerificationApi.kt index e8ca56740d..dc9b764be6 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/EmailVerificationApi.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/EmailVerificationApi.kt @@ -7,7 +7,7 @@ import com.codeinc.flipcash.gen.common.v1.Common import com.flipcash.services.internal.annotations.FlipcashManagedChannel import com.flipcash.services.internal.network.extensions.authenticate import com.flipcash.services.models.ContactMethod -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.internal.network.core.GrpcApi import com.codeinc.flipcash.gen.email.v1.validate import dev.bmcreations.protovalidate.orThrow diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/EventStreamingApi.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/EventStreamingApi.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/EventStreamingApi.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/EventStreamingApi.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/ModerationApi.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/ModerationApi.kt similarity index 97% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/ModerationApi.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/ModerationApi.kt index d5a28fb07b..9a75bace9a 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/ModerationApi.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/ModerationApi.kt @@ -5,7 +5,7 @@ import com.codeinc.flipcash.gen.moderation.v1.ModerationService import com.codeinc.flipcash.gen.moderation.v1.validate import com.flipcash.services.internal.annotations.FlipcashManagedChannel import com.flipcash.services.internal.network.extensions.authenticate -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.internal.network.core.GrpcApi import com.getcode.utils.toByteString import dev.bmcreations.protovalidate.orThrow diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/PhoneVerificationApi.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/PhoneVerificationApi.kt similarity index 99% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/PhoneVerificationApi.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/PhoneVerificationApi.kt index 0cf8fc42a3..d97f5ed07a 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/PhoneVerificationApi.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/PhoneVerificationApi.kt @@ -7,7 +7,7 @@ import com.codeinc.flipcash.gen.phone.v1.PhoneVerificationService import com.flipcash.services.internal.annotations.FlipcashManagedChannel import com.flipcash.services.internal.network.extensions.authenticate import com.flipcash.services.models.ContactMethod -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.internal.network.core.GrpcApi import com.codeinc.flipcash.gen.phone.v1.validate import dev.bmcreations.protovalidate.orThrow diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/PollApi.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/PollApi.kt similarity index 98% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/PollApi.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/PollApi.kt index fa14b13aa5..f75cbc2d87 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/PollApi.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/PollApi.kt @@ -8,7 +8,7 @@ import com.flipcash.services.internal.annotations.FlipcashManagedChannel import com.flipcash.services.internal.network.extensions.asChatId import com.flipcash.services.internal.network.extensions.authenticate import com.flipcash.services.models.chat.ChatId -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.internal.network.core.GrpcApi import dev.bmcreations.protovalidate.orThrow import io.grpc.ManagedChannel diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/ProfileApi.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/ProfileApi.kt similarity index 99% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/ProfileApi.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/ProfileApi.kt index 0da8ac1a53..25be394dea 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/ProfileApi.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/ProfileApi.kt @@ -13,7 +13,7 @@ import com.flipcash.services.models.ProfileIdentifier import com.flipcash.services.models.SocialAccountLinkRequest import com.flipcash.services.models.SocialAccountUnlinkRequest import com.flipcash.services.models.chat.BlobId -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.internal.network.core.GrpcApi import com.getcode.opencode.model.financial.Fiat import com.getcode.utils.toByteString diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/PurchaseApi.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/PurchaseApi.kt similarity index 97% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/PurchaseApi.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/PurchaseApi.kt index e357917859..a5285af4c8 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/PurchaseApi.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/PurchaseApi.kt @@ -8,7 +8,7 @@ import com.flipcash.services.internal.annotations.FlipcashManagedChannel import com.flipcash.services.internal.model.billing.IapMetadata import com.flipcash.services.internal.model.billing.Receipt import com.flipcash.services.internal.network.extensions.authenticate -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.internal.network.core.GrpcApi import dev.bmcreations.protovalidate.orThrow import io.grpc.ManagedChannel diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/PushApi.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/PushApi.kt similarity index 98% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/PushApi.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/PushApi.kt index 3ee2494b5b..ea3dcaa825 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/PushApi.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/PushApi.kt @@ -7,7 +7,7 @@ import com.codeinc.flipcash.gen.push.v1.PushService import com.codeinc.flipcash.gen.push.v1.validate import com.flipcash.services.internal.annotations.FlipcashManagedChannel import com.flipcash.services.internal.network.extensions.authenticate -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.internal.network.core.GrpcApi import dev.bmcreations.protovalidate.orThrow import io.grpc.Deadline diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/ReportingApi.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/ReportingApi.kt similarity index 98% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/ReportingApi.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/ReportingApi.kt index 1e000b00c2..7e840ce700 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/ReportingApi.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/ReportingApi.kt @@ -8,7 +8,7 @@ import com.flipcash.services.internal.network.extensions.asMessageId import com.flipcash.services.internal.network.extensions.asUserId import com.flipcash.services.internal.network.extensions.authenticate import com.flipcash.services.models.ReportTarget -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.internal.network.core.GrpcApi import com.getcode.utils.toByteString import dev.bmcreations.protovalidate.orThrow diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/ResolverApi.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/ResolverApi.kt similarity index 97% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/ResolverApi.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/ResolverApi.kt index 36ee7fa64a..cb5a3a173b 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/ResolverApi.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/ResolverApi.kt @@ -8,7 +8,7 @@ import com.flipcash.services.internal.annotations.FlipcashManagedChannel import com.flipcash.services.internal.network.extensions.asUserId import com.flipcash.services.internal.network.extensions.authenticate import com.flipcash.services.internal.network.extensions.asUsername -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.internal.network.core.GrpcApi import dev.bmcreations.protovalidate.orThrow import io.grpc.ManagedChannel diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/SettingsApi.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/SettingsApi.kt similarity index 97% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/SettingsApi.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/SettingsApi.kt index 13db7db1dc..df32d27e61 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/SettingsApi.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/SettingsApi.kt @@ -6,7 +6,7 @@ import com.codeinc.flipcash.gen.settings.v1.SettingsService import com.codeinc.flipcash.gen.settings.v1.validate import com.flipcash.services.internal.annotations.FlipcashManagedChannel import com.flipcash.services.internal.network.extensions.authenticate -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.internal.network.core.GrpcApi import dev.bmcreations.protovalidate.orThrow import io.grpc.ManagedChannel diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/ThirdPartyApi.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/ThirdPartyApi.kt similarity index 97% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/ThirdPartyApi.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/ThirdPartyApi.kt index 157c7b8a8f..17218c4c4f 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/api/ThirdPartyApi.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/api/ThirdPartyApi.kt @@ -6,7 +6,7 @@ import com.codeinc.flipcash.gen.thirdparty.v1.validate import com.flipcash.services.internal.annotations.FlipcashManagedChannel import com.flipcash.services.internal.network.extensions.asApiKey import com.flipcash.services.internal.network.extensions.authenticate -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.network.jwt.JwtSecuredEndpoint import com.getcode.opencode.internal.network.core.GrpcApi import dev.bmcreations.protovalidate.orThrow diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/extensions/AuthenticateMessage.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/extensions/AuthenticateMessage.kt similarity index 96% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/extensions/AuthenticateMessage.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/extensions/AuthenticateMessage.kt index 4ac8d6eece..4cb8ad9969 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/extensions/AuthenticateMessage.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/extensions/AuthenticateMessage.kt @@ -1,7 +1,7 @@ package com.flipcash.services.internal.network.extensions import com.codeinc.flipcash.gen.common.v1.Common -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.google.protobuf.GeneratedMessageLite import java.io.ByteArrayOutputStream diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/extensions/LocalToProtobuf.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/extensions/LocalToProtobuf.kt similarity index 99% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/extensions/LocalToProtobuf.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/extensions/LocalToProtobuf.kt index f7a4fd6dc8..27991070c4 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/extensions/LocalToProtobuf.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/extensions/LocalToProtobuf.kt @@ -18,7 +18,7 @@ import com.flipcash.services.models.chat.MuteState import com.flipcash.services.models.chat.PointerType import com.flipcash.services.models.chat.TypingState import com.flipcash.services.models.chat.ViewMode -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.network.jwt.ApiProvider import com.getcode.opencode.model.core.ID import com.getcode.opencode.model.financial.Fiat diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/extensions/ProtobufToLocal.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/extensions/ProtobufToLocal.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/extensions/ProtobufToLocal.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/extensions/ProtobufToLocal.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/extensions/SignMessage.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/extensions/SignMessage.kt similarity index 95% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/extensions/SignMessage.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/extensions/SignMessage.kt index 5a7771f207..ff5f1184e9 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/extensions/SignMessage.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/extensions/SignMessage.kt @@ -1,7 +1,7 @@ package com.flipcash.services.internal.network.extensions import com.codeinc.flipcash.gen.common.v1.Common -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.solana.keys.PublicKey import com.google.protobuf.GeneratedMessageLite import java.io.ByteArrayOutputStream diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/AccountService.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/AccountService.kt similarity index 98% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/AccountService.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/AccountService.kt index 31ff0cd3b6..509bb4ac68 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/AccountService.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/AccountService.kt @@ -6,7 +6,7 @@ import com.getcode.opencode.internal.network.extensions.foldWithSuppression import com.flipcash.services.models.GetUserFlagsError import com.flipcash.services.models.LoginError import com.flipcash.services.models.RegisterError -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.model.core.ID import javax.inject.Inject import com.codeinc.flipcash.gen.account.v1.FlipcashAccountService as RpcAccountService diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/ActivityFeedService.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/ActivityFeedService.kt similarity index 98% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/ActivityFeedService.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/ActivityFeedService.kt index 0760eae2be..dc22d083f7 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/ActivityFeedService.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/ActivityFeedService.kt @@ -8,7 +8,7 @@ import com.getcode.opencode.internal.network.extensions.foldWithSuppression import com.flipcash.services.models.ActivityFeedType import com.flipcash.services.models.GetActivityFeedMessagesError import com.flipcash.services.models.QueryOptions -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.model.core.ID import javax.inject.Inject diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/BlobStorageService.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/BlobStorageService.kt similarity index 99% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/BlobStorageService.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/BlobStorageService.kt index cdb154b747..c5bbb738fb 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/BlobStorageService.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/BlobStorageService.kt @@ -17,7 +17,7 @@ import com.flipcash.services.models.chat.BlobId import com.flipcash.services.models.chat.BlobState import com.flipcash.services.models.chat.BlobStatus import com.flipcash.services.models.chat.ChatId -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.internal.network.extensions.foldWithSuppression import com.getcode.opencode.utils.toValidationOrElse import javax.inject.Inject diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/BlocklistService.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/BlocklistService.kt similarity index 98% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/BlocklistService.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/BlocklistService.kt index 8ecf02657f..2ad5ab4ea7 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/BlocklistService.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/BlocklistService.kt @@ -7,7 +7,7 @@ import com.flipcash.services.models.GetBlocklistError import com.flipcash.services.models.IsBlockedError import com.flipcash.services.models.QueryOptions import com.flipcash.services.models.UnblockUserError -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.internal.network.extensions.foldWithSuppression import com.getcode.opencode.model.core.ID import com.getcode.opencode.utils.toValidationOrElse diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/ChatMessagingService.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/ChatMessagingService.kt similarity index 99% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/ChatMessagingService.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/ChatMessagingService.kt index 4b331bd4f1..b275c397fc 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/ChatMessagingService.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/ChatMessagingService.kt @@ -32,7 +32,7 @@ import com.flipcash.services.models.chat.ReactionSummary import com.flipcash.services.models.chat.Reactor import com.flipcash.services.models.chat.TypingState import com.flipcash.services.models.chat.ViewMode -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.internal.network.extensions.foldWithSuppression import com.getcode.opencode.utils.toValidationOrElse import kotlinx.coroutines.flow.Flow diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/ChatService.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/ChatService.kt similarity index 99% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/ChatService.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/ChatService.kt index 77b514b9e1..c018912006 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/ChatService.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/ChatService.kt @@ -34,7 +34,7 @@ import com.flipcash.services.models.chat.MuteState import com.flipcash.services.models.chat.StartChatParameters import com.flipcash.services.models.chat.ChatType import com.flipcash.services.models.chat.ViewMode -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.internal.network.extensions.foldWithSuppression import com.getcode.opencode.model.core.ID import com.getcode.opencode.utils.toValidationOrElse diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/CommunityService.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/CommunityService.kt similarity index 97% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/CommunityService.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/CommunityService.kt index 734835b67b..e435bab7f0 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/CommunityService.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/CommunityService.kt @@ -2,7 +2,7 @@ package com.flipcash.services.internal.network.services import com.flipcash.services.internal.network.api.CommunityApi import com.flipcash.services.models.GetCommunityError -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.internal.network.extensions.foldWithSuppression import com.getcode.opencode.utils.toValidationOrElse import com.getcode.solana.keys.Mint diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/ContactListService.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/ContactListService.kt similarity index 99% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/ContactListService.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/ContactListService.kt index eb531ef5cf..f557a79186 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/ContactListService.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/ContactListService.kt @@ -7,7 +7,7 @@ import com.flipcash.services.models.CheckSyncError import com.flipcash.services.models.DeltaUploadError import com.flipcash.services.models.FullUploadError import com.flipcash.services.models.GetContactsError -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.internal.network.extensions.foldWithSuppression import com.getcode.opencode.utils.toValidationOrElse import com.getcode.solana.keys.Checksum diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/EmailVerificationService.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/EmailVerificationService.kt similarity index 99% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/EmailVerificationService.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/EmailVerificationService.kt index 662a69ee25..68612a47c8 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/EmailVerificationService.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/EmailVerificationService.kt @@ -4,7 +4,7 @@ import com.flipcash.services.internal.network.api.EmailVerificationApi import com.getcode.opencode.utils.toValidationOrElse import com.flipcash.services.models.ContactMethod import com.flipcash.services.models.EmailVerificationError -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.internal.network.extensions.foldWithSuppression import javax.inject.Inject import com.codeinc.flipcash.gen.email.v1.EmailVerificationService as RpcEmailService diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/EventStreamingService.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/EventStreamingService.kt similarity index 99% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/EventStreamingService.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/EventStreamingService.kt index 6147f3a773..5c12725f8e 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/EventStreamingService.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/EventStreamingService.kt @@ -9,7 +9,7 @@ import com.flipcash.services.internal.network.extensions.toChatUpdate import com.flipcash.services.models.StreamEventsError import com.flipcash.services.models.chat.BlobUpdate import com.flipcash.services.models.chat.ChatUpdate -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.internal.bidi.BidirectionalStreamReference import com.getcode.opencode.internal.bidi.openBidirectionalStream import com.getcode.utils.ClockSource diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/ModerationService.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/ModerationService.kt similarity index 98% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/ModerationService.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/ModerationService.kt index ad53cba74e..542e804718 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/ModerationService.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/ModerationService.kt @@ -5,7 +5,7 @@ import com.flipcash.services.internal.network.api.ModerationApi import com.getcode.opencode.utils.toValidationOrElse import com.flipcash.services.models.ImageModerationError import com.flipcash.services.models.TextModerationError -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.internal.network.extensions.foldWithSuppression import javax.inject.Inject diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/PhoneVerificationService.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/PhoneVerificationService.kt similarity index 99% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/PhoneVerificationService.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/PhoneVerificationService.kt index 1f91754338..25126929bb 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/PhoneVerificationService.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/PhoneVerificationService.kt @@ -5,7 +5,7 @@ import com.getcode.opencode.utils.toValidationOrElse import com.flipcash.services.models.ContactMethod import com.flipcash.services.models.LinkForPaymentError import com.flipcash.services.models.PhoneVerificationError -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.internal.network.extensions.foldWithSuppression import javax.inject.Inject import com.codeinc.flipcash.gen.phone.v1.PhoneVerificationService as RpcPhoneService diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/PollService.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/PollService.kt similarity index 99% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/PollService.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/PollService.kt index 153369ada4..dd6c93282e 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/PollService.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/PollService.kt @@ -9,7 +9,7 @@ import com.flipcash.services.models.GetPollError import com.flipcash.services.models.GetPollsError import com.flipcash.services.models.VoteError import com.flipcash.services.models.chat.ChatId -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.internal.network.extensions.foldWithSuppression import com.getcode.opencode.utils.toValidationOrElse import javax.inject.Inject diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/ProfileService.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/ProfileService.kt similarity index 99% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/ProfileService.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/ProfileService.kt index 8c4ab55269..7c607e07dd 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/ProfileService.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/ProfileService.kt @@ -21,7 +21,7 @@ import com.flipcash.services.models.UpdateTipCardError import com.flipcash.services.models.chat.BlobId import com.flipcash.services.models.chat.MediaItem import com.flipcash.services.internal.network.extensions.toMediaItem -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.internal.network.extensions.foldWithSuppression import com.getcode.opencode.model.financial.Fiat import javax.inject.Inject diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/PurchaseService.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/PurchaseService.kt similarity index 97% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/PurchaseService.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/PurchaseService.kt index 1cded8a70e..ff831d66e2 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/PurchaseService.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/PurchaseService.kt @@ -7,7 +7,7 @@ import com.flipcash.services.internal.network.api.PurchaseApi import com.getcode.opencode.utils.toValidationOrElse import com.getcode.opencode.internal.network.extensions.foldWithSuppression import com.flipcash.services.models.PurchaseAckError -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import javax.inject.Inject internal class PurchaseService @Inject constructor( diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/PushService.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/PushService.kt similarity index 97% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/PushService.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/PushService.kt index acefecced7..df99f1137b 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/PushService.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/PushService.kt @@ -5,7 +5,7 @@ import com.getcode.opencode.utils.toValidationOrElse import com.getcode.opencode.internal.network.extensions.foldWithSuppression import com.flipcash.services.models.AddTokenError import com.flipcash.services.models.DeleteTokenError -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import javax.inject.Inject import com.codeinc.flipcash.gen.push.v1.PushService as RpcPushService diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/ReportingService.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/ReportingService.kt similarity index 97% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/ReportingService.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/ReportingService.kt index 2c175aa065..e39c90c848 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/ReportingService.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/ReportingService.kt @@ -3,7 +3,7 @@ package com.flipcash.services.internal.network.services import com.flipcash.services.internal.network.api.ReportingApi import com.flipcash.services.models.ReportError import com.flipcash.services.models.ReportTarget -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.internal.network.extensions.foldWithSuppression import com.getcode.opencode.utils.toValidationOrElse import javax.inject.Inject diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/ResolverService.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/ResolverService.kt similarity index 97% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/ResolverService.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/ResolverService.kt index 6b108116e8..25dec988be 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/ResolverService.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/ResolverService.kt @@ -4,7 +4,7 @@ import com.flipcash.services.internal.network.api.ResolverApi import com.flipcash.services.internal.network.extensions.toPublicKey import com.flipcash.services.models.ResolveContactError import com.flipcash.services.models.ResolveIdentifier -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.internal.network.extensions.foldWithSuppression import com.getcode.opencode.utils.toValidationOrElse import com.getcode.solana.keys.PublicKey diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/SettingsService.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/SettingsService.kt similarity index 97% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/SettingsService.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/SettingsService.kt index bc1aef9cc0..d1a63aa1bc 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/SettingsService.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/SettingsService.kt @@ -4,7 +4,7 @@ import com.codeinc.flipcash.gen.settings.v1.SettingsService import com.flipcash.services.internal.network.api.SettingsApi import com.getcode.opencode.utils.toValidationOrElse import com.flipcash.services.models.UpdateSettingsError -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.internal.network.extensions.foldWithSuppression import javax.inject.Inject diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/ThirdPartyService.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/ThirdPartyService.kt similarity index 98% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/ThirdPartyService.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/ThirdPartyService.kt index 949abe7613..58613e8594 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/services/ThirdPartyService.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/network/services/ThirdPartyService.kt @@ -5,7 +5,7 @@ import com.flipcash.services.internal.network.api.ThirdPartyApi import com.getcode.opencode.utils.toValidationOrElse import com.flipcash.services.models.GetJwtError import com.flipcash.services.models.Jwt -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.network.jwt.JwtSecuredEndpoint import com.getcode.opencode.internal.network.extensions.foldWithSuppression import javax.inject.Inject diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalAccountRepository.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalAccountRepository.kt similarity index 96% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalAccountRepository.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalAccountRepository.kt index 1fc023cd1b..aa0cddf95f 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalAccountRepository.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalAccountRepository.kt @@ -4,7 +4,7 @@ import com.flipcash.services.internal.domain.UserFlagsMapper import com.flipcash.services.models.UserFlags import com.flipcash.services.internal.network.services.AccountService import com.flipcash.services.repository.AccountRepository -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.model.core.ID import com.getcode.utils.ErrorUtils diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalActivityFeedRepository.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalActivityFeedRepository.kt similarity index 97% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalActivityFeedRepository.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalActivityFeedRepository.kt index 462960041b..01c7c2182c 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalActivityFeedRepository.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalActivityFeedRepository.kt @@ -6,7 +6,7 @@ import com.flipcash.services.models.ActivityFeedNotification import com.flipcash.services.models.ActivityFeedType import com.flipcash.services.models.QueryOptions import com.flipcash.services.repository.ActivityFeedRepository -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.model.core.ID import com.getcode.utils.ErrorUtils diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalBlobStorageRepository.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalBlobStorageRepository.kt similarity index 97% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalBlobStorageRepository.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalBlobStorageRepository.kt index 12333c5b2c..e53231a493 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalBlobStorageRepository.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalBlobStorageRepository.kt @@ -9,7 +9,7 @@ import com.flipcash.services.models.chat.BlobState import com.flipcash.services.models.chat.BlobStatus import com.flipcash.services.models.chat.ChatId import com.flipcash.services.repository.BlobStorageRepository -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.utils.ErrorUtils internal class InternalBlobStorageRepository( diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalBlocklistRepository.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalBlocklistRepository.kt similarity index 97% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalBlocklistRepository.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalBlocklistRepository.kt index ef4a5cac06..053d0c8aa1 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalBlocklistRepository.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalBlocklistRepository.kt @@ -6,7 +6,7 @@ import com.flipcash.services.internal.network.services.BlocklistService import com.flipcash.services.models.BlocklistPage import com.flipcash.services.models.QueryOptions import com.flipcash.services.repository.BlocklistRepository -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.model.core.ID import com.getcode.utils.ErrorUtils diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalChatMessagingRepository.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalChatMessagingRepository.kt similarity index 99% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalChatMessagingRepository.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalChatMessagingRepository.kt index 1e8ae54c97..5d78af8f7f 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalChatMessagingRepository.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalChatMessagingRepository.kt @@ -16,7 +16,7 @@ import com.flipcash.services.models.chat.ViewMode import com.flipcash.services.repository.ChatMessagingRepository import com.flipcash.services.repository.DeltaUpdate import com.flipcash.services.repository.ReactorsPage -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.utils.ErrorUtils import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalChatRepository.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalChatRepository.kt similarity index 99% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalChatRepository.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalChatRepository.kt index 4084edaec9..3637627e68 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalChatRepository.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalChatRepository.kt @@ -32,7 +32,7 @@ import com.flipcash.services.models.chat.StoredKeyEnvelope import com.flipcash.services.models.chat.ViewerState import com.flipcash.services.models.chat.ViewMode import com.flipcash.services.repository.ChatRepository -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.model.core.ID import com.getcode.utils.ErrorUtils import kotlin.time.Instant diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalCommunityRepository.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalCommunityRepository.kt similarity index 96% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalCommunityRepository.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalCommunityRepository.kt index f036295c6f..76a5a055b2 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalCommunityRepository.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalCommunityRepository.kt @@ -7,7 +7,7 @@ import com.flipcash.services.internal.network.services.CommunityService import com.flipcash.services.models.Community import com.flipcash.services.models.CommunityLeader import com.flipcash.services.repository.CommunityRepository -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.solana.keys.Mint import com.getcode.utils.ErrorUtils diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalContactListRepository.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalContactListRepository.kt similarity index 97% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalContactListRepository.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalContactListRepository.kt index 899f75f7ae..747eed4988 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalContactListRepository.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalContactListRepository.kt @@ -5,7 +5,7 @@ import com.flipcash.services.internal.network.services.ContactListService import com.flipcash.services.models.ContactMethod import com.flipcash.services.models.FlipcashContactEntry import com.flipcash.services.repository.ContactListRepository -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.solana.keys.Checksum import com.getcode.utils.ErrorUtils import kotlinx.coroutines.flow.Flow diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalContactVerificationRepository.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalContactVerificationRepository.kt similarity index 98% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalContactVerificationRepository.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalContactVerificationRepository.kt index a39028866d..29abda4825 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalContactVerificationRepository.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalContactVerificationRepository.kt @@ -4,7 +4,7 @@ import com.flipcash.services.internal.network.services.EmailVerificationService import com.flipcash.services.internal.network.services.PhoneVerificationService import com.flipcash.services.models.ContactMethod import com.flipcash.services.repository.ContactVerificationRepository -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.utils.ErrorUtils internal class InternalContactVerificationRepository( diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalEventStreamingRepository.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalEventStreamingRepository.kt similarity index 95% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalEventStreamingRepository.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalEventStreamingRepository.kt index 962cf1949a..35c0a84e83 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalEventStreamingRepository.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalEventStreamingRepository.kt @@ -5,7 +5,7 @@ import com.flipcash.services.internal.network.services.EventStreamingService import com.flipcash.services.models.chat.BlobUpdate import com.flipcash.services.models.chat.ChatUpdate import com.flipcash.services.repository.EventStreamingRepository -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import kotlinx.coroutines.CoroutineScope internal class InternalEventStreamingRepository( diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalModerationRepository.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalModerationRepository.kt similarity index 97% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalModerationRepository.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalModerationRepository.kt index 6f57a1fa66..fed70d6845 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalModerationRepository.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalModerationRepository.kt @@ -6,7 +6,7 @@ import com.flipcash.services.internal.model.moderation.ModerationRequest import com.flipcash.services.internal.network.services.ModerationService import com.flipcash.services.models.ModerationResult import com.flipcash.services.repository.ModerationRepository -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.utils.ErrorUtils internal class InternalModerationRepository( diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalPollRepository.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalPollRepository.kt similarity index 97% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalPollRepository.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalPollRepository.kt index ff3c08da78..64cc033afb 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalPollRepository.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalPollRepository.kt @@ -7,7 +7,7 @@ import com.flipcash.services.models.GetPollError import com.flipcash.services.models.VoteError import com.flipcash.services.models.chat.ChatId import com.flipcash.services.repository.PollRepository -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.utils.ErrorUtils internal class InternalPollRepository( diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalProfileRepository.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalProfileRepository.kt similarity index 99% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalProfileRepository.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalProfileRepository.kt index 053fe18879..5e18d12b54 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalProfileRepository.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalProfileRepository.kt @@ -15,7 +15,7 @@ import com.flipcash.services.models.UserProfile import com.flipcash.services.models.chat.BlobId import com.flipcash.services.models.chat.MediaItem import com.flipcash.services.repository.ProfileRepository -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.model.financial.Fiat import com.getcode.utils.ErrorUtils diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalPurchaseRepository.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalPurchaseRepository.kt similarity index 94% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalPurchaseRepository.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalPurchaseRepository.kt index 5ed5454830..afa33010c0 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalPurchaseRepository.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalPurchaseRepository.kt @@ -4,7 +4,7 @@ import com.flipcash.services.internal.model.billing.IapMetadata import com.flipcash.services.internal.model.billing.Receipt import com.flipcash.services.internal.network.services.PurchaseService import com.flipcash.services.repository.PurchaseRepository -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.utils.ErrorUtils internal class InternalPurchaseRepository( diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalPushRepository.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalPushRepository.kt similarity index 95% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalPushRepository.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalPushRepository.kt index 8284b45dc0..22902e8510 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalPushRepository.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalPushRepository.kt @@ -2,7 +2,7 @@ package com.flipcash.services.internal.repositories import com.flipcash.services.internal.network.services.PushService import com.flipcash.services.repository.PushRepository -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.utils.ErrorUtils internal class InternalPushRepository( diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalReportingRepository.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalReportingRepository.kt similarity index 94% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalReportingRepository.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalReportingRepository.kt index 8fa313459b..2814e6ca1b 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalReportingRepository.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalReportingRepository.kt @@ -3,7 +3,7 @@ package com.flipcash.services.internal.repositories import com.flipcash.services.internal.network.services.ReportingService import com.flipcash.services.models.ReportTarget import com.flipcash.services.repository.ReportingRepository -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.utils.ErrorUtils internal class InternalReportingRepository( diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalResolverRepository.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalResolverRepository.kt similarity index 94% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalResolverRepository.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalResolverRepository.kt index a30a5e2889..2368a72356 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalResolverRepository.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalResolverRepository.kt @@ -3,7 +3,7 @@ package com.flipcash.services.internal.repositories import com.flipcash.services.internal.network.services.ResolverService import com.flipcash.services.models.ResolveIdentifier import com.flipcash.services.repository.ResolverRepository -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.solana.keys.PublicKey import com.getcode.utils.ErrorUtils diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalSettingsRepository.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalSettingsRepository.kt similarity index 93% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalSettingsRepository.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalSettingsRepository.kt index e9a0982b6f..953326461e 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalSettingsRepository.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalSettingsRepository.kt @@ -2,7 +2,7 @@ package com.flipcash.services.internal.repositories import com.flipcash.services.internal.network.services.SettingsService import com.flipcash.services.repository.SettingsRepository -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.utils.ErrorUtils internal class InternalSettingsRepository( diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalThirdPartyRepository.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalThirdPartyRepository.kt similarity index 94% rename from services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalThirdPartyRepository.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalThirdPartyRepository.kt index 27de642c1c..3053735059 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/repositories/InternalThirdPartyRepository.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/internal/repositories/InternalThirdPartyRepository.kt @@ -3,7 +3,7 @@ package com.flipcash.services.internal.repositories import com.flipcash.services.internal.network.services.ThirdPartyService import com.flipcash.services.models.Jwt import com.flipcash.services.repository.ThirdPartyRepository -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.network.jwt.JwtSecuredEndpoint import com.getcode.utils.ErrorUtils diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/modals/ModalManager.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/modals/ModalManager.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/modals/ModalManager.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/modals/ModalManager.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/ActivityFeedNotification.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/ActivityFeedNotification.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/ActivityFeedNotification.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/ActivityFeedNotification.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/ActivityFeedType.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/ActivityFeedType.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/ActivityFeedType.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/ActivityFeedType.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/BlockedUser.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/BlockedUser.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/BlockedUser.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/BlockedUser.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/Community.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/Community.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/Community.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/Community.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/ContactMethod.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/ContactMethod.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/ContactMethod.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/ContactMethod.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/DmPaymentMetadata.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/DmPaymentMetadata.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/DmPaymentMetadata.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/DmPaymentMetadata.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/Errors.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/Errors.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/Errors.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/Errors.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/FlipcashContactEntry.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/FlipcashContactEntry.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/FlipcashContactEntry.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/FlipcashContactEntry.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/Handle.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/Handle.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/Handle.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/Handle.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/Jwt.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/Jwt.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/Jwt.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/Jwt.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/ModerationResult.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/ModerationResult.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/ModerationResult.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/ModerationResult.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/NotificationPayload.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/NotificationPayload.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/NotificationPayload.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/NotificationPayload.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/ProfileIdentifier.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/ProfileIdentifier.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/ProfileIdentifier.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/ProfileIdentifier.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/QueryOptions.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/QueryOptions.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/QueryOptions.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/QueryOptions.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/ReactionBoostMetadata.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/ReactionBoostMetadata.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/ReactionBoostMetadata.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/ReactionBoostMetadata.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/ReportTarget.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/ReportTarget.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/ReportTarget.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/ReportTarget.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/ResolveIdentifier.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/ResolveIdentifier.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/ResolveIdentifier.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/ResolveIdentifier.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/SocialAccountLinking.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/SocialAccountLinking.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/SocialAccountLinking.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/SocialAccountLinking.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/TipPresets.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/TipPresets.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/TipPresets.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/TipPresets.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/UserFlags.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/UserFlags.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/UserFlags.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/UserFlags.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/UserProfile.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/UserProfile.kt similarity index 97% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/UserProfile.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/UserProfile.kt index a136ddb90e..055704e556 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/models/UserProfile.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/UserProfile.kt @@ -1,10 +1,10 @@ package com.flipcash.services.models -import android.os.Parcelable +import com.getcode.libs.parcelable.Parcelable import com.flipcash.services.models.chat.MediaItem import com.getcode.opencode.model.core.ID import com.getcode.opencode.model.financial.Fiat -import kotlinx.parcelize.Parcelize +import com.getcode.libs.parcelable.Parcelize import kotlinx.serialization.Serializable import kotlin.time.Instant diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/VerifiableContactMethod.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/VerifiableContactMethod.kt similarity index 83% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/VerifiableContactMethod.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/VerifiableContactMethod.kt index fcbf85dad4..4c481fa6d3 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/models/VerifiableContactMethod.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/VerifiableContactMethod.kt @@ -1,7 +1,7 @@ package com.flipcash.services.models -import android.os.Parcelable -import kotlinx.parcelize.Parcelize +import com.getcode.libs.parcelable.Parcelable +import com.getcode.libs.parcelable.Parcelize import kotlinx.serialization.Serializable /** diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/blob/UploadPolicy.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/blob/UploadPolicy.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/blob/UploadPolicy.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/blob/UploadPolicy.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/blob/UploadTarget.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/blob/UploadTarget.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/blob/UploadTarget.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/blob/UploadTarget.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/BlobAccessContext.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/BlobAccessContext.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/BlobAccessContext.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/BlobAccessContext.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/BlobId.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/BlobId.kt similarity index 96% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/BlobId.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/BlobId.kt index 4e33312965..ff0ee4912c 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/BlobId.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/BlobId.kt @@ -1,7 +1,7 @@ package com.flipcash.services.models.chat -import android.os.Parcelable -import kotlinx.parcelize.Parcelize +import com.getcode.libs.parcelable.Parcelable +import com.getcode.libs.parcelable.Parcelize import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.KSerializer import kotlinx.serialization.Serializable diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/BlobMetadata.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/BlobMetadata.kt similarity index 95% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/BlobMetadata.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/BlobMetadata.kt index e8c716ed51..bc78eea3a9 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/BlobMetadata.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/BlobMetadata.kt @@ -1,10 +1,10 @@ package com.flipcash.services.models.chat -import android.os.Parcelable +import com.getcode.libs.parcelable.Parcelable import kotlin.time.Duration import kotlin.time.Duration.Companion.seconds import kotlin.time.Instant -import kotlinx.parcelize.Parcelize +import com.getcode.libs.parcelable.Parcelize import kotlinx.serialization.Serializable @Parcelize diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/BlobUpdate.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/BlobUpdate.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/BlobUpdate.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/BlobUpdate.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/ChatEvent.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/ChatEvent.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/ChatEvent.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/ChatEvent.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/ChatFeedPage.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/ChatFeedPage.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/ChatFeedPage.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/ChatFeedPage.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/ChatId.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/ChatId.kt similarity index 82% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/ChatId.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/ChatId.kt index c8e5fb00d8..6627b85909 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/ChatId.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/ChatId.kt @@ -1,7 +1,8 @@ package com.flipcash.services.models.chat -import android.os.Parcel -import android.os.Parcelable +import com.getcode.libs.parcelable.ManualParcelable +import com.getcode.libs.parcelable.Parcel +import com.getcode.libs.parcelable.parcelableCreator import com.getcode.utils.base58 import kotlinx.serialization.KSerializer import kotlinx.serialization.Serializable @@ -26,7 +27,7 @@ object ChatIdAsHexSerializer : KSerializer { } @Serializable(with = ChatIdAsHexSerializer::class) -data class ChatId(val bytes: ByteArray) : Parcelable { +data class ChatId(val bytes: ByteArray) : ManualParcelable { constructor(bytes: List): this(bytes.toByteArray()) @OptIn(ExperimentalStdlibApi::class) @@ -53,10 +54,6 @@ data class ChatId(val bytes: ByteArray) : Parcelable { companion object { @JvmField - val CREATOR: Parcelable.Creator = - object : Parcelable.Creator { - override fun createFromParcel(parcel: Parcel) = ChatId(parcel) - override fun newArray(size: Int) = arrayOfNulls(size) - } + val CREATOR: Any = parcelableCreator({ arrayOfNulls(it) }) { parcel -> ChatId(parcel) } } } diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/ChatMember.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/ChatMember.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/ChatMember.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/ChatMember.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/ChatMessage.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/ChatMessage.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/ChatMessage.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/ChatMessage.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/ChatMetadata.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/ChatMetadata.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/ChatMetadata.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/ChatMetadata.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/ChatMutation.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/ChatMutation.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/ChatMutation.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/ChatMutation.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/ChatRules.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/ChatRules.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/ChatRules.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/ChatRules.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/ChatType.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/ChatType.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/ChatType.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/ChatType.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/ChatUpdate.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/ChatUpdate.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/ChatUpdate.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/ChatUpdate.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/ClientMessageId.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/ClientMessageId.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/ClientMessageId.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/ClientMessageId.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/DeliveryStatus.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/DeliveryStatus.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/DeliveryStatus.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/DeliveryStatus.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/DmAddressability.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/DmAddressability.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/DmAddressability.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/DmAddressability.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/EditChatParameters.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/EditChatParameters.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/EditChatParameters.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/EditChatParameters.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/Emoji.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/Emoji.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/Emoji.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/Emoji.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/EmojiReaction.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/EmojiReaction.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/EmojiReaction.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/EmojiReaction.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/HoldingsSummary.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/HoldingsSummary.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/HoldingsSummary.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/HoldingsSummary.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/IdempotencyKey.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/IdempotencyKey.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/IdempotencyKey.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/IdempotencyKey.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/ImageMetadata.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/ImageMetadata.kt similarity index 70% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/ImageMetadata.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/ImageMetadata.kt index 56b0ba1771..5b6a99e17a 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/ImageMetadata.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/ImageMetadata.kt @@ -1,7 +1,7 @@ package com.flipcash.services.models.chat -import android.os.Parcelable -import kotlinx.parcelize.Parcelize +import com.getcode.libs.parcelable.Parcelable +import com.getcode.libs.parcelable.Parcelize import kotlinx.serialization.Serializable @Parcelize diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/KeyEnvelope.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/KeyEnvelope.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/KeyEnvelope.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/KeyEnvelope.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/LinkPreview.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/LinkPreview.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/LinkPreview.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/LinkPreview.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/Lobby.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/Lobby.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/Lobby.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/Lobby.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/MediaItem.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/MediaItem.kt similarity index 98% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/MediaItem.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/MediaItem.kt index 105ce557a3..83801dc5eb 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/MediaItem.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/MediaItem.kt @@ -1,8 +1,8 @@ package com.flipcash.services.models.chat -import android.os.Parcelable +import com.getcode.libs.parcelable.Parcelable import kotlin.time.Instant -import kotlinx.parcelize.Parcelize +import com.getcode.libs.parcelable.Parcelize import kotlinx.serialization.Serializable @Parcelize diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/MediaItemRendition.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/MediaItemRendition.kt similarity index 92% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/MediaItemRendition.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/MediaItemRendition.kt index 00ee018398..d9cedba26d 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/MediaItemRendition.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/MediaItemRendition.kt @@ -1,9 +1,9 @@ package com.flipcash.services.models.chat -import android.os.Parcelable +import com.getcode.libs.parcelable.Parcelable import com.getcode.utils.base58 import kotlin.time.Instant -import kotlinx.parcelize.Parcelize +import com.getcode.libs.parcelable.Parcelize import kotlinx.serialization.Serializable @Parcelize diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/MentionSuggestion.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/MentionSuggestion.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/MentionSuggestion.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/MentionSuggestion.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/MessageContent.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/MessageContent.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/MessageContent.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/MessageContent.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/MessagePointer.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/MessagePointer.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/MessagePointer.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/MessagePointer.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/MetadataUpdate.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/MetadataUpdate.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/MetadataUpdate.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/MetadataUpdate.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/MuteExtensions.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/MuteExtensions.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/MuteExtensions.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/MuteExtensions.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/MuteState.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/MuteState.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/MuteState.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/MuteState.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/ReactionSummary.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/ReactionSummary.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/ReactionSummary.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/ReactionSummary.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/ReactionUpdate.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/ReactionUpdate.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/ReactionUpdate.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/ReactionUpdate.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/Reactor.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/Reactor.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/Reactor.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/Reactor.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/RosterChange.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/RosterChange.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/RosterChange.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/RosterChange.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/RosterPage.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/RosterPage.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/RosterPage.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/RosterPage.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/RosterSummary.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/RosterSummary.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/RosterSummary.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/RosterSummary.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/SampledChatter.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/SampledChatter.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/SampledChatter.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/SampledChatter.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/StartChatParameters.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/StartChatParameters.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/StartChatParameters.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/StartChatParameters.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/TypingNotification.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/TypingNotification.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/TypingNotification.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/TypingNotification.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/ViewMode.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/ViewMode.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/ViewMode.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/ViewMode.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/ViewerState.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/ViewerState.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/ViewerState.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/ViewerState.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/WidgetContent.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/WidgetContent.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/WidgetContent.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/models/chat/WidgetContent.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/persistence/DataSource.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/persistence/DataSource.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/persistence/DataSource.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/persistence/DataSource.kt diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/repository/AccountRepository.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/AccountRepository.kt similarity index 88% rename from services/flipcash/src/main/kotlin/com/flipcash/services/repository/AccountRepository.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/AccountRepository.kt index b74ef73ec8..8cf4f97cbd 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/repository/AccountRepository.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/AccountRepository.kt @@ -1,7 +1,7 @@ package com.flipcash.services.repository import com.flipcash.services.models.UserFlags -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.model.core.ID interface AccountRepository { diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/repository/ActivityFeedRepository.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/ActivityFeedRepository.kt similarity index 94% rename from services/flipcash/src/main/kotlin/com/flipcash/services/repository/ActivityFeedRepository.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/ActivityFeedRepository.kt index df6b4a13ad..a6f3568e1c 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/repository/ActivityFeedRepository.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/ActivityFeedRepository.kt @@ -3,7 +3,7 @@ package com.flipcash.services.repository import com.flipcash.services.models.ActivityFeedNotification import com.flipcash.services.models.ActivityFeedType import com.flipcash.services.models.QueryOptions -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.model.core.ID interface ActivityFeedRepository { diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/repository/BlobStorageRepository.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/BlobStorageRepository.kt similarity index 96% rename from services/flipcash/src/main/kotlin/com/flipcash/services/repository/BlobStorageRepository.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/BlobStorageRepository.kt index 9b743e830d..91e7058c88 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/repository/BlobStorageRepository.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/BlobStorageRepository.kt @@ -7,7 +7,7 @@ import com.flipcash.services.models.chat.BlobId import com.flipcash.services.models.chat.BlobState import com.flipcash.services.models.chat.BlobStatus import com.flipcash.services.models.chat.ChatId -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 interface BlobStorageRepository { suspend fun getUploadPolicy(owner: Ed25519.KeyPair): Result diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/repository/BlocklistRepository.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/BlocklistRepository.kt similarity index 91% rename from services/flipcash/src/main/kotlin/com/flipcash/services/repository/BlocklistRepository.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/BlocklistRepository.kt index 74d3cb391c..e356a47bbb 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/repository/BlocklistRepository.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/BlocklistRepository.kt @@ -2,7 +2,7 @@ package com.flipcash.services.repository import com.flipcash.services.models.BlocklistPage import com.flipcash.services.models.QueryOptions -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.model.core.ID interface BlocklistRepository { diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/repository/ChatMessagingRepository.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/ChatMessagingRepository.kt similarity index 98% rename from services/flipcash/src/main/kotlin/com/flipcash/services/repository/ChatMessagingRepository.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/ChatMessagingRepository.kt index 56a5086347..a2890da48a 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/repository/ChatMessagingRepository.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/ChatMessagingRepository.kt @@ -12,7 +12,7 @@ import com.flipcash.services.models.chat.ReactionSummary import com.flipcash.services.models.chat.Reactor import com.flipcash.services.models.chat.TypingState import com.flipcash.services.models.chat.ViewMode -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import kotlinx.coroutines.flow.Flow interface ChatMessagingRepository { diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/repository/ChatRepository.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/ChatRepository.kt similarity index 99% rename from services/flipcash/src/main/kotlin/com/flipcash/services/repository/ChatRepository.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/ChatRepository.kt index 7adaaa9b88..faa60b85b2 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/repository/ChatRepository.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/ChatRepository.kt @@ -20,7 +20,7 @@ import com.flipcash.services.models.chat.StartChatParameters import com.flipcash.services.models.chat.StoredKeyEnvelope import com.flipcash.services.models.chat.ViewerState import com.flipcash.services.models.chat.ViewMode -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.model.core.ID interface ChatRepository { diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/repository/CommunityRepository.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/CommunityRepository.kt similarity index 83% rename from services/flipcash/src/main/kotlin/com/flipcash/services/repository/CommunityRepository.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/CommunityRepository.kt index 1a542b9d01..5d89f1ccdd 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/repository/CommunityRepository.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/CommunityRepository.kt @@ -1,7 +1,7 @@ package com.flipcash.services.repository import com.flipcash.services.models.Community -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.solana.keys.Mint interface CommunityRepository { diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/repository/ContactListRepository.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/ContactListRepository.kt similarity index 95% rename from services/flipcash/src/main/kotlin/com/flipcash/services/repository/ContactListRepository.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/ContactListRepository.kt index d637bf49f1..3f0b4239e6 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/repository/ContactListRepository.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/ContactListRepository.kt @@ -2,7 +2,7 @@ package com.flipcash.services.repository import com.flipcash.services.models.ContactMethod import com.flipcash.services.models.FlipcashContactEntry -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.solana.keys.Checksum import kotlinx.coroutines.flow.Flow diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/repository/ContactVerificationRepository.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/ContactVerificationRepository.kt similarity index 93% rename from services/flipcash/src/main/kotlin/com/flipcash/services/repository/ContactVerificationRepository.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/ContactVerificationRepository.kt index 54dbf6c330..abc94a7556 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/repository/ContactVerificationRepository.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/ContactVerificationRepository.kt @@ -1,7 +1,7 @@ package com.flipcash.services.repository import com.flipcash.services.models.ContactMethod -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 interface ContactVerificationRepository { suspend fun sendVerificationCode(method: ContactMethod, owner: Ed25519.KeyPair): Result diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/repository/EventStreamingRepository.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/EventStreamingRepository.kt similarity index 92% rename from services/flipcash/src/main/kotlin/com/flipcash/services/repository/EventStreamingRepository.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/EventStreamingRepository.kt index 3cb761ee6d..187805db92 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/repository/EventStreamingRepository.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/EventStreamingRepository.kt @@ -3,7 +3,7 @@ package com.flipcash.services.repository import com.flipcash.services.internal.network.services.EventStreamReference import com.flipcash.services.models.chat.BlobUpdate import com.flipcash.services.models.chat.ChatUpdate -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import kotlinx.coroutines.CoroutineScope interface EventStreamingRepository { diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/repository/ModerationRepository.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/ModerationRepository.kt similarity index 89% rename from services/flipcash/src/main/kotlin/com/flipcash/services/repository/ModerationRepository.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/ModerationRepository.kt index c58e152b63..181846f831 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/repository/ModerationRepository.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/ModerationRepository.kt @@ -1,7 +1,7 @@ package com.flipcash.services.repository import com.flipcash.services.models.ModerationResult -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 interface ModerationRepository { suspend fun moderateText(text: String, owner: Ed25519.KeyPair): Result diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/repository/PollRepository.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/PollRepository.kt similarity index 94% rename from services/flipcash/src/main/kotlin/com/flipcash/services/repository/PollRepository.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/PollRepository.kt index 014d67b143..bd42a695e4 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/repository/PollRepository.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/PollRepository.kt @@ -2,7 +2,7 @@ package com.flipcash.services.repository import com.codeinc.flipcash.gen.poll.v1.Model import com.flipcash.services.models.chat.ChatId -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair /** * Polls in group chats. Poll values are the generated `poll.v1` types for now; a domain model diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/repository/ProfileRepository.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/ProfileRepository.kt similarity index 97% rename from services/flipcash/src/main/kotlin/com/flipcash/services/repository/ProfileRepository.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/ProfileRepository.kt index 13a175663b..4e20508129 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/repository/ProfileRepository.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/ProfileRepository.kt @@ -7,7 +7,7 @@ import com.flipcash.services.models.SocialAccountUnlinkRequest import com.flipcash.services.models.UserProfile import com.flipcash.services.models.chat.BlobId import com.flipcash.services.models.chat.MediaItem -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.model.financial.Fiat interface ProfileRepository { diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/repository/PurchaseRepository.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/PurchaseRepository.kt similarity index 87% rename from services/flipcash/src/main/kotlin/com/flipcash/services/repository/PurchaseRepository.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/PurchaseRepository.kt index 7ee1032aae..7a764f8a14 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/repository/PurchaseRepository.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/PurchaseRepository.kt @@ -2,7 +2,7 @@ package com.flipcash.services.repository import com.flipcash.services.internal.model.billing.IapMetadata import com.flipcash.services.internal.model.billing.Receipt -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair interface PurchaseRepository { suspend fun onPurchaseCompleted( diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/repository/PushRepository.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/PushRepository.kt similarity index 86% rename from services/flipcash/src/main/kotlin/com/flipcash/services/repository/PushRepository.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/PushRepository.kt index 229949d355..7333cf80a9 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/repository/PushRepository.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/PushRepository.kt @@ -1,6 +1,6 @@ package com.flipcash.services.repository -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair interface PushRepository { suspend fun addToken( diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/repository/ReportingRepository.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/ReportingRepository.kt similarity index 88% rename from services/flipcash/src/main/kotlin/com/flipcash/services/repository/ReportingRepository.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/ReportingRepository.kt index 071ceb7093..a502b3ddfc 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/repository/ReportingRepository.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/ReportingRepository.kt @@ -1,7 +1,7 @@ package com.flipcash.services.repository import com.flipcash.services.models.ReportTarget -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair interface ReportingRepository { /** Files a report against [target]. Reporting the same target more than once is a no-op. */ diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/repository/ResolverRepository.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/ResolverRepository.kt similarity index 85% rename from services/flipcash/src/main/kotlin/com/flipcash/services/repository/ResolverRepository.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/ResolverRepository.kt index 5e2b7ecf6a..fb06119465 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/repository/ResolverRepository.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/ResolverRepository.kt @@ -1,7 +1,7 @@ package com.flipcash.services.repository import com.flipcash.services.models.ResolveIdentifier -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.solana.keys.PublicKey interface ResolverRepository { diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/repository/SettingsRepository.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/SettingsRepository.kt similarity index 81% rename from services/flipcash/src/main/kotlin/com/flipcash/services/repository/SettingsRepository.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/SettingsRepository.kt index 3871d4aa20..dcc3e3c81b 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/repository/SettingsRepository.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/SettingsRepository.kt @@ -1,6 +1,6 @@ package com.flipcash.services.repository -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 interface SettingsRepository { suspend fun update(locale: String?, region: String?, owner: Ed25519.KeyPair): Result diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/repository/ThirdPartyRepository.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/ThirdPartyRepository.kt similarity index 88% rename from services/flipcash/src/main/kotlin/com/flipcash/services/repository/ThirdPartyRepository.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/ThirdPartyRepository.kt index 861fb273c5..1a8a298d13 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/repository/ThirdPartyRepository.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/repository/ThirdPartyRepository.kt @@ -1,7 +1,7 @@ package com.flipcash.services.repository import com.flipcash.services.models.Jwt -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.network.jwt.JwtSecuredEndpoint interface ThirdPartyRepository { diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/user/AnalyticsIdentity.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/user/AnalyticsIdentity.kt similarity index 74% rename from services/flipcash/src/main/kotlin/com/flipcash/services/user/AnalyticsIdentity.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/user/AnalyticsIdentity.kt index 5c94772ab2..c9ad4f9b0d 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/user/AnalyticsIdentity.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/user/AnalyticsIdentity.kt @@ -12,3 +12,8 @@ import com.getcode.opencode.model.core.ID */ @OptIn(ExperimentalStdlibApi::class) fun ID.analyticsDistinctId(): String = toByteArray().toHexString() + +/** Tells the analytics backend which account is signed in (Mixpanel's `identify` on Android). */ +fun interface AnalyticsIdentifier { + fun identify(distinctId: String?) +} diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/user/UserManager.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/user/UserManager.kt similarity index 97% rename from services/flipcash/src/main/kotlin/com/flipcash/services/user/UserManager.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/user/UserManager.kt index 2496834fb9..260abee535 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/user/UserManager.kt +++ b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/user/UserManager.kt @@ -1,5 +1,6 @@ package com.flipcash.services.user +import com.getcode.utils.BuildFlags import com.flipcash.services.models.UserFlags import com.flipcash.services.models.UserProfile import com.getcode.crypt.DerivePath @@ -14,11 +15,9 @@ import com.getcode.opencode.model.core.ID import com.getcode.opencode.model.core.NoId import com.getcode.opencode.model.financial.Token import com.getcode.opencode.model.financial.usdf -import com.getcode.services.opencode.BuildConfig import com.getcode.utils.TraceManager import com.getcode.utils.trace import com.hoc081098.channeleventbus.ChannelEventBus -import com.mixpanel.android.mpmetrics.MixpanelAPI import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow @@ -82,7 +81,7 @@ sealed interface AuthState { @Singleton class UserManager @Inject constructor( private val mnemonicManager: MnemonicManager, - private val mixpanelAPI: MixpanelAPI, + private val analyticsIdentifier: AnalyticsIdentifier, private val eventBus: ChannelEventBus, accountController: AccountController, ) { @@ -218,12 +217,12 @@ class UserManager @Inject constructor( } private fun associate() { - if (!BuildConfig.DEBUG) { + if (!BuildFlags.isDebug) { // Hex, not base58 — matches iOS so one user is one Mixpanel profile. // See AnalyticsIdentity.kt. val distinctId = accountId?.analyticsDistinctId() TraceManager.userId = distinctId - mixpanelAPI.identify(distinctId) + analyticsIdentifier.identify(distinctId) } } diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/validators/Validator.kt b/services/flipcash/src/commonMain/kotlin/com/flipcash/services/validators/Validator.kt similarity index 100% rename from services/flipcash/src/main/kotlin/com/flipcash/services/validators/Validator.kt rename to services/flipcash/src/commonMain/kotlin/com/flipcash/services/validators/Validator.kt diff --git a/services/flipcash/test-fixtures/build.gradle.kts b/services/flipcash/test-fixtures/build.gradle.kts new file mode 100644 index 0000000000..4ff5c24cc8 --- /dev/null +++ b/services/flipcash/test-fixtures/build.gradle.kts @@ -0,0 +1,16 @@ +plugins { + alias(libs.plugins.flipcash.kmp.app.library) +} + +kotlin { + android { + namespace = "${Gradle.codeNamespace}.services.flipcash.testfixtures" + } + + sourceSets { + commonMain.dependencies { + api(project(":services:flipcash")) + implementation(project(":libs:encryption:chat-cipher")) + } + } +} diff --git a/services/flipcash/src/testFixtures/kotlin/com/flipcash/services/chat/FakeChatCipher.kt b/services/flipcash/test-fixtures/src/commonMain/kotlin/com/flipcash/services/chat/FakeChatCipher.kt similarity index 100% rename from services/flipcash/src/testFixtures/kotlin/com/flipcash/services/chat/FakeChatCipher.kt rename to services/flipcash/test-fixtures/src/commonMain/kotlin/com/flipcash/services/chat/FakeChatCipher.kt diff --git a/services/opencode/build.gradle.kts b/services/opencode/build.gradle.kts index a7f5334f2d..bccc54869c 100644 --- a/services/opencode/build.gradle.kts +++ b/services/opencode/build.gradle.kts @@ -1,96 +1,90 @@ plugins { - alias(libs.plugins.flipcash.android.library) - alias(libs.plugins.flipcash.android.ed25519.shadow) - id("com.google.devtools.ksp") - id("dagger.hilt.android.plugin") + alias(libs.plugins.flipcash.kmp.app.library) + alias(libs.plugins.kotlin.ksp) id("org.jetbrains.kotlin.plugin.parcelize") } -android { - namespace = "${Gradle.codeNamespace}.services.opencode" - - defaultConfig { - consumerProguardFiles("consumer-rules.pro") - - buildConfigField("Boolean", "NOTIFY_ERRORS", "false") - buildConfigField( - "String", - "GOOGLE_CLOUD_PROJECT_NUMBER", - "\"${tryReadProperty(rootProject.rootDir, "GOOGLE_CLOUD_PROJECT_NUMBER", "-1L")}\"" - ) +kotlin { + android { + namespace = "${Gradle.codeNamespace}.services.opencode" + androidResources { enable = true } } - buildFeatures { - buildConfig = true + sourceSets { + commonMain.dependencies { + implementation(libs.ocp.client.protocol) + api(project(":libs:currency-math")) + api(project(":libs:datetime")) + api(project(":libs:encryption:base58")) + api(project(":libs:encryption:ed25519")) + api(project(":libs:encryption:hmac")) + api(project(":libs:encryption:keys")) + api(project(":libs:encryption:mnemonic")) + api(project(":libs:encryption:sha256")) + api(project(":libs:encryption:sha512")) + api(project(":libs:encryption:utils")) + api(project(":libs:logging")) + api(project(":libs:locale:public")) + api(project(":libs:network:connectivity:public")) + implementation(project(":ui:resources")) + + implementation(libs.protobuf.validate.runtime) + implementation(libs.bundles.hilt.common) + implementation(libs.kotlinx.serialization.json) + implementation(libs.kotlinx.datetime) + implementation(libs.kotlinx.coroutines.core) + implementation(libs.grpc.okhttp) + implementation(libs.grpc.kotlin) + implementation(libs.grpc.protobuf.lite) + implementation(libs.event.bus) + } + androidMain.dependencies { + api(project(":libs:locale:bindings")) + implementation(project(":libs:locale:impl")) + api(project(":libs:network:connectivity:bindings")) + api(project(":vendor:kik:scanner")) + + implementation(libs.grpc.android) + implementation(libs.androidx.lifecycle.runtime) + implementation(libs.androidx.lifecycle.process) + implementation(libs.hilt.android) + + // Not imported by this module; kept so the app's runtime classpath is unchanged. + implementation(libs.androidx.datastore) + implementation(libs.okhttp) + implementation(libs.mixpanel) + implementation(project.dependencies.platform(libs.firebase.bom)) + implementation(libs.firebase.installations) + implementation(libs.firebase.perf) + implementation(libs.firebase.messaging) + implementation(libs.play.integrity) + implementation(libs.androidx.paging.runtime) + implementation(libs.fingerprint.pro) + implementation(libs.retrofit) + implementation(libs.retrofit.converter.gson) + implementation(libs.okhttp.logging.interceptor) + } + getByName("androidHostTest").dependencies { + implementation(kotlin("test")) + implementation(libs.bundles.unit.testing) + implementation(project(":libs:currency-math:test-fixtures")) + implementation(project(":libs:test-utils")) + } + jvmTest.dependencies { + implementation(kotlin("test")) + implementation(libs.kotlinx.coroutines.test) + } } - } dependencies { - implementation(libs.ocp.client.protocol) - api(project(":libs:currency-math")) - api(project(":libs:datetime")) - api(project(":libs:encryption:base58")) - api(project(":libs:encryption:ed25519")) - api(project(":libs:encryption:hmac")) - api(project(":libs:encryption:keys")) - api(project(":libs:encryption:mnemonic")) - api(project(":libs:encryption:sha256")) - api(project(":libs:encryption:sha512")) - api(project(":libs:encryption:utils")) - api(project(":libs:logging")) - api(project(":libs:locale:bindings")) - implementation(project(":libs:locale:impl")) - api(project(":libs:network:connectivity:bindings")) - implementation(project(":ui:resources")) - - api(project(":vendor:kik:scanner")) - - implementation(libs.protobuf.validate.runtime) - - implementation(libs.javax.inject) - - implementation(libs.kotlinx.serialization.json) - implementation(libs.javax.inject) - - implementation(libs.grpc.android) - implementation(libs.grpc.okhttp) - implementation(libs.grpc.kotlin) - implementation(libs.grpc.protobuf.lite) - implementation(libs.androidx.lifecycle.runtime) - implementation(libs.androidx.lifecycle.process) - implementation(libs.androidx.datastore) - implementation(libs.okhttp) - implementation(libs.mixpanel) - - implementation(platform(libs.firebase.bom)) - implementation(libs.firebase.installations) - implementation(libs.firebase.perf) - implementation(libs.firebase.messaging) - - implementation(libs.play.integrity) - - implementation(libs.androidx.paging.runtime) - - ksp(libs.androidx.room.compiler) - - implementation(libs.fingerprint.pro) - - androidTestImplementation(libs.androidx.junit) - androidTestImplementation(libs.junit) - androidTestImplementation(libs.androidx.test.runner) - - implementation(libs.retrofit) - implementation(libs.retrofit.converter.gson) - implementation(libs.okhttp.logging.interceptor) - - implementation(libs.hilt.android) - ksp(libs.hilt.android.compiler) - ksp(libs.hilt.compiler) - - implementation(libs.event.bus) + add("kspAndroid", libs.hilt.android.compiler) + add("kspAndroid", libs.hilt.compiler) +} - testImplementation(kotlin("test")) - testImplementation(libs.bundles.unit.testing) - testImplementation(testFixtures(project(":libs:currency-math"))) +// The headless balance test reads its recovery phrase from local.properties (gitignored) or the +// FLIPCASH_TEST_MNEMONIC environment variable, and skips when neither is set. +tasks.named("jvmTest") { + val mnemonic = tryReadProperty(rootProject.rootDir, "flipcash.test.mnemonic", "") + if (mnemonic.isNotBlank()) systemProperty("flipcash.test.mnemonic", mnemonic) } diff --git a/services/opencode/consumer-rules.pro b/services/opencode/consumer-rules.pro deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/services/opencode/src/androidTest/kotlin/com/getcode/opencode/model/core/OpenCodePayloadTests.kt b/services/opencode/src/androidDeviceTest/kotlin/com/getcode/opencode/model/core/OpenCodePayloadTests.kt similarity index 100% rename from services/opencode/src/androidTest/kotlin/com/getcode/opencode/model/core/OpenCodePayloadTests.kt rename to services/opencode/src/androidDeviceTest/kotlin/com/getcode/opencode/model/core/OpenCodePayloadTests.kt diff --git a/services/opencode/src/androidTest/kotlin/com/getcode/opencode/solana/swap/SwapTests.kt b/services/opencode/src/androidDeviceTest/kotlin/com/getcode/opencode/solana/swap/SwapTests.kt similarity index 100% rename from services/opencode/src/androidTest/kotlin/com/getcode/opencode/solana/swap/SwapTests.kt rename to services/opencode/src/androidDeviceTest/kotlin/com/getcode/opencode/solana/swap/SwapTests.kt diff --git a/services/opencode/src/androidTest/kotlin/com/getcode/opencode/tests/PublicKey.kt b/services/opencode/src/androidDeviceTest/kotlin/com/getcode/opencode/tests/PublicKey.kt similarity index 100% rename from services/opencode/src/androidTest/kotlin/com/getcode/opencode/tests/PublicKey.kt rename to services/opencode/src/androidDeviceTest/kotlin/com/getcode/opencode/tests/PublicKey.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/controllers/AccountControllerTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/controllers/AccountControllerTest.kt similarity index 99% rename from services/opencode/src/test/kotlin/com/getcode/opencode/controllers/AccountControllerTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/controllers/AccountControllerTest.kt index 4836c226f9..4a4d43843e 100644 --- a/services/opencode/src/test/kotlin/com/getcode/opencode/controllers/AccountControllerTest.kt +++ b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/controllers/AccountControllerTest.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.controllers -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.model.accounts.AccountCluster import com.getcode.opencode.model.accounts.AccountFilter import com.getcode.opencode.model.accounts.AccountInfo diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/controllers/TokenControllerFetchTokenBalancesTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/controllers/TokenControllerFetchTokenBalancesTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/controllers/TokenControllerFetchTokenBalancesTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/controllers/TokenControllerFetchTokenBalancesTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/controllers/TransactionControllerPollIntentMetadataTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/controllers/TransactionControllerPollIntentMetadataTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/controllers/TransactionControllerPollIntentMetadataTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/controllers/TransactionControllerPollIntentMetadataTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/internal/bidi/OpenBidirectionalStreamTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/bidi/OpenBidirectionalStreamTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/internal/bidi/OpenBidirectionalStreamTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/bidi/OpenBidirectionalStreamTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/internal/exchange/RealVerifiedFiatCalculatorTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/exchange/RealVerifiedFiatCalculatorTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/internal/exchange/RealVerifiedFiatCalculatorTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/exchange/RealVerifiedFiatCalculatorTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/internal/extensions/ByteArrayExtensionsTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/extensions/ByteArrayExtensionsTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/internal/extensions/ByteArrayExtensionsTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/extensions/ByteArrayExtensionsTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/internal/extensions/CurrencyCodeExtensionsTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/extensions/CurrencyCodeExtensionsTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/internal/extensions/CurrencyCodeExtensionsTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/extensions/CurrencyCodeExtensionsTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/internal/extensions/ResultExtensionsTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/extensions/ResultExtensionsTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/internal/extensions/ResultExtensionsTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/extensions/ResultExtensionsTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/internal/extensions/VerifiedStateExtTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/extensions/VerifiedStateExtTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/internal/extensions/VerifiedStateExtTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/extensions/VerifiedStateExtTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/internal/manager/VerifiedProtoManagerTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/manager/VerifiedProtoManagerTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/internal/manager/VerifiedProtoManagerTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/manager/VerifiedProtoManagerTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/internal/network/api/intents/IntentMultiTransferTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/network/api/intents/IntentMultiTransferTest.kt similarity index 99% rename from services/opencode/src/test/kotlin/com/getcode/opencode/internal/network/api/intents/IntentMultiTransferTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/network/api/intents/IntentMultiTransferTest.kt index b29ea9ccc0..f8224f5e97 100644 --- a/services/opencode/src/test/kotlin/com/getcode/opencode/internal/network/api/intents/IntentMultiTransferTest.kt +++ b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/network/api/intents/IntentMultiTransferTest.kt @@ -3,7 +3,7 @@ package com.getcode.opencode.internal.network.api.intents import com.codeinc.opencode.gen.currency.v1.coreMintFiatExchangeRate import com.codeinc.opencode.gen.currency.v1.verifiedCoreMintFiatExchangeRate import com.getcode.crypt.DerivedKey -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.internal.manager.VerifiedState import com.getcode.opencode.internal.network.api.intents.actions.ActionPublicTransfer import com.getcode.opencode.model.accounts.AccountCluster diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/internal/network/pollers/SwapPollerTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/network/pollers/SwapPollerTest.kt similarity index 99% rename from services/opencode/src/test/kotlin/com/getcode/opencode/internal/network/pollers/SwapPollerTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/network/pollers/SwapPollerTest.kt index 3a37cb8f77..ade9d37dda 100644 --- a/services/opencode/src/test/kotlin/com/getcode/opencode/internal/network/pollers/SwapPollerTest.kt +++ b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/network/pollers/SwapPollerTest.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.internal.network.pollers -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.internal.network.services.SwapService import com.getcode.opencode.internal.solana.model.SwapId import com.getcode.opencode.model.core.errors.GetSwapError diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/internal/network/services/CurrencyServiceTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/network/services/CurrencyServiceTest.kt similarity index 99% rename from services/opencode/src/test/kotlin/com/getcode/opencode/internal/network/services/CurrencyServiceTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/network/services/CurrencyServiceTest.kt index 471001af39..38e141b3c6 100644 --- a/services/opencode/src/test/kotlin/com/getcode/opencode/internal/network/services/CurrencyServiceTest.kt +++ b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/network/services/CurrencyServiceTest.kt @@ -2,7 +2,7 @@ package com.getcode.opencode.internal.network.services import com.codeinc.opencode.gen.common.v1.Model import com.codeinc.opencode.gen.currency.v1.OcpCurrencyService as CurrencyProto -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.internal.domain.mapping.HistoricalMintDataMapper import com.getcode.opencode.internal.domain.mapping.LiveMintDataMapper import com.getcode.opencode.internal.domain.mapping.MintMapper diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/internal/proto/ProtoWireFormatTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/proto/ProtoWireFormatTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/internal/proto/ProtoWireFormatTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/proto/ProtoWireFormatTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/internal/solana/ShortVecTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/solana/ShortVecTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/internal/solana/ShortVecTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/solana/ShortVecTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/internal/solana/extensions/PdaDerivationTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/solana/extensions/PdaDerivationTest.kt similarity index 99% rename from services/opencode/src/test/kotlin/com/getcode/opencode/internal/solana/extensions/PdaDerivationTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/solana/extensions/PdaDerivationTest.kt index c199c269c9..df17956491 100644 --- a/services/opencode/src/test/kotlin/com/getcode/opencode/internal/solana/extensions/PdaDerivationTest.kt +++ b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/solana/extensions/PdaDerivationTest.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.internal.solana.extensions -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.solana.keys.Mint import com.getcode.solana.keys.PublicKey import com.getcode.vendor.Base58 diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/internal/solana/extensions/UInt16Test.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/solana/extensions/UInt16Test.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/internal/solana/extensions/UInt16Test.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/solana/extensions/UInt16Test.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/internal/solana/model/CoinbaseStablecoinPoolAccountTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/solana/model/CoinbaseStablecoinPoolAccountTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/internal/solana/model/CoinbaseStablecoinPoolAccountTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/solana/model/CoinbaseStablecoinPoolAccountTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/internal/solana/programs/CoinbaseStableSwapperProgramTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/solana/programs/CoinbaseStableSwapperProgramTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/internal/solana/programs/CoinbaseStableSwapperProgramTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/solana/programs/CoinbaseStableSwapperProgramTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/internal/solana/programs/CurrencyCreatorProgramTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/solana/programs/CurrencyCreatorProgramTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/internal/solana/programs/CurrencyCreatorProgramTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/solana/programs/CurrencyCreatorProgramTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/internal/solana/programs/ProgramAddressesTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/solana/programs/ProgramAddressesTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/internal/solana/programs/ProgramAddressesTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/solana/programs/ProgramAddressesTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/internal/solana/programs/SysVarTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/solana/programs/SysVarTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/internal/solana/programs/SysVarTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/solana/programs/SysVarTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/internal/solana/programs/VirtualMachineProgramTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/solana/programs/VirtualMachineProgramTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/internal/solana/programs/VirtualMachineProgramTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/solana/programs/VirtualMachineProgramTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/internal/transactors/ClaimValidationTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/transactors/ClaimValidationTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/internal/transactors/ClaimValidationTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/transactors/ClaimValidationTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/internal/transactors/GiveBillTransactorTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/transactors/GiveBillTransactorTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/internal/transactors/GiveBillTransactorTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/transactors/GiveBillTransactorTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/internal/transactors/GrabBillTransactorTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/transactors/GrabBillTransactorTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/internal/transactors/GrabBillTransactorTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/transactors/GrabBillTransactorTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/internal/transactors/ReceiveGiftCardTransactorTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/transactors/ReceiveGiftCardTransactorTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/internal/transactors/ReceiveGiftCardTransactorTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/transactors/ReceiveGiftCardTransactorTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/internal/transactors/SendGiftCardTransactorTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/transactors/SendGiftCardTransactorTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/internal/transactors/SendGiftCardTransactorTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/internal/transactors/SendGiftCardTransactorTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/model/core/OpenCodePayloadTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/model/core/OpenCodePayloadTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/model/core/OpenCodePayloadTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/model/core/OpenCodePayloadTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/model/core/errors/SodiumErrorTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/model/core/errors/SodiumErrorTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/model/core/errors/SodiumErrorTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/model/core/errors/SodiumErrorTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/model/core/errors/SubmitIntentErrorTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/model/core/errors/SubmitIntentErrorTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/model/core/errors/SubmitIntentErrorTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/model/core/errors/SubmitIntentErrorTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/model/core/errors/SwapErrorTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/model/core/errors/SwapErrorTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/model/core/errors/SwapErrorTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/model/core/errors/SwapErrorTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/model/financial/DistributionTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/model/financial/DistributionTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/model/financial/DistributionTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/model/financial/DistributionTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/model/financial/FeeTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/model/financial/FeeTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/model/financial/FeeTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/model/financial/FeeTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/model/financial/FiatTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/model/financial/FiatTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/model/financial/FiatTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/model/financial/FiatTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/model/financial/FiatTests.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/model/financial/FiatTests.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/model/financial/FiatTests.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/model/financial/FiatTests.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/model/financial/HistoricalMintDataTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/model/financial/HistoricalMintDataTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/model/financial/HistoricalMintDataTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/model/financial/HistoricalMintDataTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/model/financial/LaunchpadSellFeeTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/model/financial/LaunchpadSellFeeTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/model/financial/LaunchpadSellFeeTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/model/financial/LaunchpadSellFeeTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/model/financial/LimitsTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/model/financial/LimitsTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/model/financial/LimitsTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/model/financial/LimitsTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/model/financial/LocalFiatTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/model/financial/LocalFiatTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/model/financial/LocalFiatTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/model/financial/LocalFiatTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/model/financial/MintMetadataTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/model/financial/MintMetadataTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/model/financial/MintMetadataTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/model/financial/MintMetadataTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/model/financial/RateTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/model/financial/RateTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/model/financial/RateTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/model/financial/RateTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/model/transactions/SwapMetadataTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/model/transactions/SwapMetadataTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/model/transactions/SwapMetadataTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/model/transactions/SwapMetadataTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/solana/CompactMessageVectorTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/solana/CompactMessageVectorTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/solana/CompactMessageVectorTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/solana/CompactMessageVectorTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/solana/InstructionIntegrationTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/solana/InstructionIntegrationTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/solana/InstructionIntegrationTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/solana/InstructionIntegrationTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/solana/MultiPaymentIntentVectorTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/solana/MultiPaymentIntentVectorTest.kt similarity index 99% rename from services/opencode/src/test/kotlin/com/getcode/opencode/solana/MultiPaymentIntentVectorTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/solana/MultiPaymentIntentVectorTest.kt index 65d18b2fa0..9d043be112 100644 --- a/services/opencode/src/test/kotlin/com/getcode/opencode/solana/MultiPaymentIntentVectorTest.kt +++ b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/solana/MultiPaymentIntentVectorTest.kt @@ -3,7 +3,7 @@ package com.getcode.opencode.solana import com.codeinc.opencode.gen.currency.v1.coreMintFiatExchangeRate import com.codeinc.opencode.gen.currency.v1.verifiedCoreMintFiatExchangeRate import com.getcode.crypt.DerivedKey -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.internal.manager.VerifiedState import com.getcode.opencode.internal.network.api.intents.IntentMultiTransfer import com.getcode.opencode.model.accounts.AccountCluster diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/solana/SolanaMessageVectorTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/solana/SolanaMessageVectorTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/solana/SolanaMessageVectorTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/solana/SolanaMessageVectorTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/solana/SolanaTransactionLookupTableTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/solana/SolanaTransactionLookupTableTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/solana/SolanaTransactionLookupTableTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/solana/SolanaTransactionLookupTableTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/solana/VersionedMessageV0Test.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/solana/VersionedMessageV0Test.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/solana/VersionedMessageV0Test.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/solana/VersionedMessageV0Test.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/solana/swap/ClientBuiltDepositSwapV2Test.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/solana/swap/ClientBuiltDepositSwapV2Test.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/solana/swap/ClientBuiltDepositSwapV2Test.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/solana/swap/ClientBuiltDepositSwapV2Test.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/solana/swap/CoinbaseStablecoinDepositTransactionTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/solana/swap/CoinbaseStablecoinDepositTransactionTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/solana/swap/CoinbaseStablecoinDepositTransactionTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/solana/swap/CoinbaseStablecoinDepositTransactionTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/solana/swap/CoinbaseStablecoinSwapperInstructionsTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/solana/swap/CoinbaseStablecoinSwapperInstructionsTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/solana/swap/CoinbaseStablecoinSwapperInstructionsTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/solana/swap/CoinbaseStablecoinSwapperInstructionsTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/solana/swap/ExistingCurrencyBuyFeeTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/solana/swap/ExistingCurrencyBuyFeeTest.kt similarity index 99% rename from services/opencode/src/test/kotlin/com/getcode/opencode/solana/swap/ExistingCurrencyBuyFeeTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/solana/swap/ExistingCurrencyBuyFeeTest.kt index 5f01ae02b9..c1ec51f146 100644 --- a/services/opencode/src/test/kotlin/com/getcode/opencode/solana/swap/ExistingCurrencyBuyFeeTest.kt +++ b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/solana/swap/ExistingCurrencyBuyFeeTest.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.solana.swap -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.internal.manager.VerifiedState import com.getcode.opencode.internal.network.api.intents.IntentStatefulSwap import com.getcode.opencode.internal.solana.model.SwapId diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/solana/swap/StablecoinSwapVersionRequestTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/solana/swap/StablecoinSwapVersionRequestTest.kt similarity index 98% rename from services/opencode/src/test/kotlin/com/getcode/opencode/solana/swap/StablecoinSwapVersionRequestTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/solana/swap/StablecoinSwapVersionRequestTest.kt index ad8168edc2..4928b382dd 100644 --- a/services/opencode/src/test/kotlin/com/getcode/opencode/solana/swap/StablecoinSwapVersionRequestTest.kt +++ b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/solana/swap/StablecoinSwapVersionRequestTest.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.solana.swap -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.internal.network.api.intents.IntentStatelessSwap import com.getcode.opencode.internal.network.extensions.stablecoinParams import com.getcode.opencode.internal.solana.model.SwapId diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/solana/swap/StatelessSwapInstructionsTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/solana/swap/StatelessSwapInstructionsTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/solana/swap/StatelessSwapInstructionsTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/solana/swap/StatelessSwapInstructionsTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/tests/PublicKey.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/tests/PublicKey.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/tests/PublicKey.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/tests/PublicKey.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/utils/DoubleExtensionsTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/utils/DoubleExtensionsTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/utils/DoubleExtensionsTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/utils/DoubleExtensionsTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/utils/LongTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/utils/LongTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/utils/LongTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/utils/LongTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/utils/MapsTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/utils/MapsTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/utils/MapsTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/utils/MapsTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/utils/StringExtensionsTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/utils/StringExtensionsTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/utils/StringExtensionsTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/utils/StringExtensionsTest.kt diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/utils/ThrowableExtensionsTest.kt b/services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/utils/ThrowableExtensionsTest.kt similarity index 100% rename from services/opencode/src/test/kotlin/com/getcode/opencode/utils/ThrowableExtensionsTest.kt rename to services/opencode/src/androidHostTest/kotlin/com/getcode/opencode/utils/ThrowableExtensionsTest.kt diff --git a/services/opencode/src/test/resources/compact_message.json b/services/opencode/src/androidHostTest/resources/compact_message.json similarity index 100% rename from services/opencode/src/test/resources/compact_message.json rename to services/opencode/src/androidHostTest/resources/compact_message.json diff --git a/services/opencode/src/test/resources/multi_payment_intent.json b/services/opencode/src/androidHostTest/resources/multi_payment_intent.json similarity index 100% rename from services/opencode/src/test/resources/multi_payment_intent.json rename to services/opencode/src/androidHostTest/resources/multi_payment_intent.json diff --git a/services/opencode/src/test/resources/solana_message.json b/services/opencode/src/androidHostTest/resources/solana_message.json similarity index 100% rename from services/opencode/src/test/resources/solana_message.json rename to services/opencode/src/androidHostTest/resources/solana_message.json diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/ControllerFactory.kt b/services/opencode/src/androidMain/kotlin/com/getcode/opencode/ControllerFactory.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/ControllerFactory.kt rename to services/opencode/src/androidMain/kotlin/com/getcode/opencode/ControllerFactory.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/ExchangeFactory.kt b/services/opencode/src/androidMain/kotlin/com/getcode/opencode/ExchangeFactory.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/ExchangeFactory.kt rename to services/opencode/src/androidMain/kotlin/com/getcode/opencode/ExchangeFactory.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/NetworkFactory.kt b/services/opencode/src/androidMain/kotlin/com/getcode/opencode/NetworkFactory.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/NetworkFactory.kt rename to services/opencode/src/androidMain/kotlin/com/getcode/opencode/NetworkFactory.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/RepositoryFactory.kt b/services/opencode/src/androidMain/kotlin/com/getcode/opencode/RepositoryFactory.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/RepositoryFactory.kt rename to services/opencode/src/androidMain/kotlin/com/getcode/opencode/RepositoryFactory.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/inject/OpenCodeModule.kt b/services/opencode/src/androidMain/kotlin/com/getcode/opencode/inject/OpenCodeModule.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/inject/OpenCodeModule.kt rename to services/opencode/src/androidMain/kotlin/com/getcode/opencode/inject/OpenCodeModule.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/inject/SessionListenersModule.kt b/services/opencode/src/androidMain/kotlin/com/getcode/opencode/inject/SessionListenersModule.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/inject/SessionListenersModule.kt rename to services/opencode/src/androidMain/kotlin/com/getcode/opencode/inject/SessionListenersModule.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/inject/TransactorModule.kt b/services/opencode/src/androidMain/kotlin/com/getcode/opencode/inject/TransactorModule.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/inject/TransactorModule.kt rename to services/opencode/src/androidMain/kotlin/com/getcode/opencode/inject/TransactorModule.kt diff --git a/services/opencode/src/androidMain/kotlin/com/getcode/opencode/internal/platform/ProcessLifecycle.android.kt b/services/opencode/src/androidMain/kotlin/com/getcode/opencode/internal/platform/ProcessLifecycle.android.kt new file mode 100644 index 0000000000..5b35bce979 --- /dev/null +++ b/services/opencode/src/androidMain/kotlin/com/getcode/opencode/internal/platform/ProcessLifecycle.android.kt @@ -0,0 +1,25 @@ +package com.getcode.opencode.internal.platform + +import android.os.Handler +import android.os.Looper +import androidx.lifecycle.DefaultLifecycleObserver +import androidx.lifecycle.LifecycleOwner +import androidx.lifecycle.ProcessLifecycleOwner + +internal actual fun observeProcessLifecycle( + immediateOnMain: Boolean, + onStart: () -> Unit, + onStop: () -> Unit, +) { + val observer = object : DefaultLifecycleObserver { + override fun onStart(owner: LifecycleOwner) = onStart() + override fun onStop(owner: LifecycleOwner) = onStop() + } + // LifecycleRegistry.addObserver rejects any thread but the main one. + val register = Runnable { ProcessLifecycleOwner.get().lifecycle.addObserver(observer) } + if (immediateOnMain && Looper.myLooper() == Looper.getMainLooper()) { + register.run() + } else { + Handler(Looper.getMainLooper()).post(register) + } +} diff --git a/services/opencode/src/androidMain/kotlin/com/getcode/opencode/model/core/ScanCodeEncoder.android.kt b/services/opencode/src/androidMain/kotlin/com/getcode/opencode/model/core/ScanCodeEncoder.android.kt new file mode 100644 index 0000000000..b788a36e57 --- /dev/null +++ b/services/opencode/src/androidMain/kotlin/com/getcode/opencode/model/core/ScanCodeEncoder.android.kt @@ -0,0 +1,5 @@ +package com.getcode.opencode.model.core + +import com.kik.scan.Scanner + +internal actual fun encodeScanCode(payload: ByteArray): ByteArray? = Scanner.encode(payload) diff --git a/services/opencode/src/main/res/drawable/ic_currency_dollar_active.xml b/services/opencode/src/androidMain/res/drawable/ic_currency_dollar_active.xml similarity index 100% rename from services/opencode/src/main/res/drawable/ic_currency_dollar_active.xml rename to services/opencode/src/androidMain/res/drawable/ic_currency_dollar_active.xml diff --git a/services/opencode/src/main/res/drawable/ic_currency_dollar_inactive.xml b/services/opencode/src/androidMain/res/drawable/ic_currency_dollar_inactive.xml similarity index 100% rename from services/opencode/src/main/res/drawable/ic_currency_dollar_inactive.xml rename to services/opencode/src/androidMain/res/drawable/ic_currency_dollar_inactive.xml diff --git a/services/opencode/src/main/res/drawable/ic_currency_xaf.xml b/services/opencode/src/androidMain/res/drawable/ic_currency_xaf.xml similarity index 100% rename from services/opencode/src/main/res/drawable/ic_currency_xaf.xml rename to services/opencode/src/androidMain/res/drawable/ic_currency_xaf.xml diff --git a/services/opencode/src/main/res/drawable/ic_currency_xof.xml b/services/opencode/src/androidMain/res/drawable/ic_currency_xof.xml similarity index 100% rename from services/opencode/src/main/res/drawable/ic_currency_xof.xml rename to services/opencode/src/androidMain/res/drawable/ic_currency_xof.xml diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/ManagerFactory.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/ManagerFactory.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/ManagerFactory.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/ManagerFactory.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/ProtocolConfig.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/ProtocolConfig.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/ProtocolConfig.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/ProtocolConfig.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/controllers/AccountController.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/controllers/AccountController.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/controllers/AccountController.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/controllers/AccountController.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/controllers/BalanceController.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/controllers/BalanceController.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/controllers/BalanceController.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/controllers/BalanceController.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/controllers/CurrencyController.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/controllers/CurrencyController.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/controllers/CurrencyController.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/controllers/CurrencyController.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/controllers/MessagingController.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/controllers/MessagingController.kt similarity index 99% rename from services/opencode/src/main/kotlin/com/getcode/opencode/controllers/MessagingController.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/controllers/MessagingController.kt index d543271c26..bf7eca2735 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/controllers/MessagingController.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/controllers/MessagingController.kt @@ -1,7 +1,7 @@ package com.getcode.opencode.controllers import com.codeinc.opencode.gen.messaging.v1.OcpMessagingService -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.internal.domain.mapping.BillCustomizationMapper import com.getcode.opencode.internal.domain.mapping.HolderMetricsMapper import com.getcode.opencode.internal.domain.mapping.MarketCapMetricsMapper diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/controllers/TokenController.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/controllers/TokenController.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/controllers/TokenController.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/controllers/TokenController.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/controllers/TransactionController.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/controllers/TransactionController.kt similarity index 99% rename from services/opencode/src/main/kotlin/com/getcode/opencode/controllers/TransactionController.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/controllers/TransactionController.kt index ce500e641e..092e741e4c 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/controllers/TransactionController.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/controllers/TransactionController.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.controllers -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.exchange.VerifiedFiat import com.getcode.opencode.exchange.valuedAt import com.getcode.opencode.internal.manager.VerifiedState diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/controllers/TransactionOperations.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/controllers/TransactionOperations.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/controllers/TransactionOperations.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/controllers/TransactionOperations.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/events/Events.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/events/Events.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/events/Events.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/events/Events.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/exchange/Exchange.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/exchange/Exchange.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/exchange/Exchange.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/exchange/Exchange.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/exchange/VerifiedFiatCalculator.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/exchange/VerifiedFiatCalculator.kt similarity index 91% rename from services/opencode/src/main/kotlin/com/getcode/opencode/exchange/VerifiedFiatCalculator.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/exchange/VerifiedFiatCalculator.kt index 39d46804fc..3e9a656a4c 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/exchange/VerifiedFiatCalculator.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/exchange/VerifiedFiatCalculator.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.exchange -import android.os.Parcelable +import com.getcode.libs.parcelable.Parcelable import com.getcode.opencode.internal.manager.VerifiedState import com.getcode.opencode.model.financial.CurrencyCode import com.getcode.opencode.model.financial.Fiat @@ -8,8 +8,8 @@ import com.getcode.opencode.model.financial.LocalFiat import com.getcode.opencode.model.financial.Rate import com.getcode.opencode.model.financial.Token import com.getcode.solana.keys.Mint -import kotlinx.parcelize.IgnoredOnParcel -import kotlinx.parcelize.Parcelize +import com.getcode.libs.parcelable.IgnoredOnParcel +import com.getcode.libs.parcelable.Parcelize import kotlinx.serialization.Serializable import kotlinx.serialization.Transient diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/generators/GiftCardGenerator.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/generators/GiftCardGenerator.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/generators/GiftCardGenerator.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/generators/GiftCardGenerator.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/generators/MnemonicGenerator.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/generators/MnemonicGenerator.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/generators/MnemonicGenerator.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/generators/MnemonicGenerator.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/annotations/OpenCodeManagedChannel.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/annotations/OpenCodeManagedChannel.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/annotations/OpenCodeManagedChannel.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/annotations/OpenCodeManagedChannel.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/annotations/Protocol.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/annotations/Protocol.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/annotations/Protocol.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/annotations/Protocol.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/bidi/BidirectionalStreamReference.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/bidi/BidirectionalStreamReference.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/bidi/BidirectionalStreamReference.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/bidi/BidirectionalStreamReference.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/bidi/OpenStream.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/bidi/OpenStream.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/bidi/OpenStream.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/bidi/OpenStream.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/bidi/OpenStreamForResult.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/bidi/OpenStreamForResult.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/bidi/OpenStreamForResult.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/bidi/OpenStreamForResult.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/BillCustomizationMapper.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/mapping/BillCustomizationMapper.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/BillCustomizationMapper.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/mapping/BillCustomizationMapper.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/HistoricalMintDataMapper.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/mapping/HistoricalMintDataMapper.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/HistoricalMintDataMapper.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/mapping/HistoricalMintDataMapper.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/HolderMetricsMapper.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/mapping/HolderMetricsMapper.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/HolderMetricsMapper.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/mapping/HolderMetricsMapper.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/LaunchpadMetadataMapper.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/mapping/LaunchpadMetadataMapper.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/LaunchpadMetadataMapper.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/mapping/LaunchpadMetadataMapper.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/LiveMintDataMapper.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/mapping/LiveMintDataMapper.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/LiveMintDataMapper.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/mapping/LiveMintDataMapper.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/MarketCapMetricsMapper.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/mapping/MarketCapMetricsMapper.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/MarketCapMetricsMapper.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/mapping/MarketCapMetricsMapper.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/MessageMapper.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/mapping/MessageMapper.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/MessageMapper.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/mapping/MessageMapper.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/MintMapper.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/mapping/MintMapper.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/MintMapper.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/mapping/MintMapper.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/OwnerBalanceMapper.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/mapping/OwnerBalanceMapper.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/OwnerBalanceMapper.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/mapping/OwnerBalanceMapper.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/SocialLinkMapper.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/mapping/SocialLinkMapper.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/SocialLinkMapper.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/mapping/SocialLinkMapper.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/SwapMetadataMapper.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/mapping/SwapMetadataMapper.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/SwapMetadataMapper.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/mapping/SwapMetadataMapper.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/TransactionMetadataMapper.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/mapping/TransactionMetadataMapper.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/TransactionMetadataMapper.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/mapping/TransactionMetadataMapper.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/VmMetadataMapper.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/mapping/VmMetadataMapper.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/VmMetadataMapper.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/mapping/VmMetadataMapper.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/repositories/InternalAccountRepository.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/repositories/InternalAccountRepository.kt similarity index 98% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/repositories/InternalAccountRepository.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/repositories/InternalAccountRepository.kt index 645fcdd99f..1a55e433f7 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/repositories/InternalAccountRepository.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/repositories/InternalAccountRepository.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.internal.domain.repositories -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.internal.network.api.TransactionApi import com.getcode.opencode.internal.network.api.intents.IntentCreateAccount import com.getcode.opencode.internal.network.executors.IntentExecutor diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/repositories/InternalBalanceRepository.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/repositories/InternalBalanceRepository.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/repositories/InternalBalanceRepository.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/repositories/InternalBalanceRepository.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/repositories/InternalCurrencyRepository.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/repositories/InternalCurrencyRepository.kt similarity index 98% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/repositories/InternalCurrencyRepository.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/repositories/InternalCurrencyRepository.kt index e046c1679f..80e01bd3a1 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/repositories/InternalCurrencyRepository.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/repositories/InternalCurrencyRepository.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.internal.domain.repositories -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.model.ui.DiscoverCategory import com.getcode.opencode.model.financial.LiveMintDataResponse import com.getcode.opencode.model.ui.WindowedRange diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/repositories/InternalEventRepository.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/repositories/InternalEventRepository.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/repositories/InternalEventRepository.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/repositories/InternalEventRepository.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/repositories/InternalMessagingRepository.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/repositories/InternalMessagingRepository.kt similarity index 98% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/repositories/InternalMessagingRepository.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/repositories/InternalMessagingRepository.kt index 040ff1f5e6..11d8e44244 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/repositories/InternalMessagingRepository.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/repositories/InternalMessagingRepository.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.internal.domain.repositories -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.internal.network.extensions.asMessageId import com.getcode.opencode.internal.network.extensions.asSolanaAccountId import com.getcode.opencode.internal.network.services.MessagingService diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/repositories/InternalSwapRepository.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/repositories/InternalSwapRepository.kt similarity index 97% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/repositories/InternalSwapRepository.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/repositories/InternalSwapRepository.kt index 900cce6fd6..54088e9f31 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/repositories/InternalSwapRepository.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/repositories/InternalSwapRepository.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.internal.domain.repositories -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.internal.network.pollers.SwapPoller import com.getcode.opencode.internal.network.services.SwapService import com.getcode.opencode.internal.solana.model.SwapId diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/repositories/InternalTransactionRepository.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/repositories/InternalTransactionRepository.kt similarity index 99% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/repositories/InternalTransactionRepository.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/repositories/InternalTransactionRepository.kt index 5a689cc613..fe67be6c6b 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/repositories/InternalTransactionRepository.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/domain/repositories/InternalTransactionRepository.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.internal.domain.repositories -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.internal.manager.VerifiedState import com.getcode.opencode.internal.network.services.TransactionService import com.getcode.opencode.internal.solana.model.SwapId diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/exchange/OpenCodeExchange.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/exchange/OpenCodeExchange.kt similarity index 89% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/exchange/OpenCodeExchange.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/exchange/OpenCodeExchange.kt index a481d72cab..2a41088692 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/exchange/OpenCodeExchange.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/exchange/OpenCodeExchange.kt @@ -1,14 +1,10 @@ package com.getcode.opencode.internal.exchange -import androidx.lifecycle.DefaultLifecycleObserver -import androidx.lifecycle.LifecycleOwner -import android.os.Handler -import android.os.Looper -import androidx.lifecycle.ProcessLifecycleOwner import com.getcode.opencode.controllers.CurrencyController import com.getcode.opencode.exchange.Exchange import com.getcode.opencode.internal.extensions.fromCode import com.getcode.opencode.internal.manager.VerifiedProtoManager +import com.getcode.opencode.internal.platform.observeProcessLifecycle import com.getcode.opencode.model.financial.Currency import com.getcode.opencode.model.financial.CurrencyCode import com.getcode.opencode.model.financial.Rate @@ -34,7 +30,7 @@ internal class OpenCodeExchange @Inject constructor( private val verifiedStateManager: VerifiedProtoManager, private val resources: ResourceHelper, private val locale: LocaleHelper, -) : Exchange, DefaultLifecycleObserver { +) : Exchange { private var ratesCollectionJob: Job? = null private var exchangeRatesStream: Job? = null @@ -42,26 +38,19 @@ internal class OpenCodeExchange @Inject constructor( private val scope = CoroutineScope(SupervisorJob() + Dispatchers.IO) init { - // Posted, not called directly: addObserver is main-thread-only, and this singleton is built - // off the main thread so its construction stays off the startup path. - Handler(Looper.getMainLooper()).post { - ProcessLifecycleOwner.get().lifecycle.addObserver(this) - } + // Deferred, not registered in place: this singleton is built off the main thread so its + // construction stays off the startup path, and its fields below are not yet initialized. + observeProcessLifecycle( + immediateOnMain = false, + onStart = ::streamRates, + onStop = ::stopStreamingRates, + ) scope.launch { val currencyCode = locale.getDefaultCurrencyName() preferredCurrency = CurrencyCode.tryValueOf(currencyCode) } } - override fun onStart(owner: LifecycleOwner) { - streamRates() - } - - override fun onStop(owner: LifecycleOwner) { - super.onStop(owner) - stopStreamingRates() - } - private val _preferredRate = MutableStateFlow(Rate.oneToOne) override val preferredRate: Rate diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/exchange/RealVerifiedFiatCalculator.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/exchange/RealVerifiedFiatCalculator.kt similarity index 99% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/exchange/RealVerifiedFiatCalculator.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/exchange/RealVerifiedFiatCalculator.kt index 6767901e9b..61b0a98d0b 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/exchange/RealVerifiedFiatCalculator.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/exchange/RealVerifiedFiatCalculator.kt @@ -16,7 +16,6 @@ import com.getcode.opencode.model.financial.Rate import com.getcode.opencode.model.core.errors.ComputeVerifiedFiatError import com.getcode.opencode.model.financial.Token import com.getcode.opencode.model.financial.min -import com.getcode.services.opencode.BuildConfig import com.getcode.solana.keys.Mint import com.getcode.utils.TraceType import com.getcode.utils.trace diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/extensions/ByteArray.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/extensions/ByteArray.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/extensions/ByteArray.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/extensions/ByteArray.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/extensions/Currency.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/extensions/Currency.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/extensions/Currency.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/extensions/Currency.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/extensions/CurrencyCode.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/extensions/CurrencyCode.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/extensions/CurrencyCode.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/extensions/CurrencyCode.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/extensions/Instant.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/extensions/Instant.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/extensions/Instant.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/extensions/Instant.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/extensions/KeyPair.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/extensions/KeyPair.kt similarity index 80% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/extensions/KeyPair.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/extensions/KeyPair.kt index cd92a63dc7..70f54933b7 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/extensions/KeyPair.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/extensions/KeyPair.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.internal.extensions -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.solana.keys.PublicKey internal fun KeyPair.toPublicKey(): PublicKey { diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/extensions/PublicKey.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/extensions/PublicKey.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/extensions/PublicKey.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/extensions/PublicKey.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/extensions/Result.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/extensions/Result.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/extensions/Result.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/extensions/Result.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/extensions/VerifiedState.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/extensions/VerifiedState.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/extensions/VerifiedState.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/extensions/VerifiedState.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/generator/Generator.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/generator/Generator.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/generator/Generator.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/generator/Generator.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/manager/VerifiedProtoManager.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/manager/VerifiedProtoManager.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/manager/VerifiedProtoManager.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/manager/VerifiedProtoManager.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/AccountApi.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/AccountApi.kt similarity index 98% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/AccountApi.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/AccountApi.kt index 39f245770a..c1534cb1d9 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/AccountApi.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/AccountApi.kt @@ -3,7 +3,7 @@ package com.getcode.opencode.internal.network.api import com.codeinc.opencode.gen.account.v1.AccountGrpcKt import com.codeinc.opencode.gen.account.v1.OcpAccountService import com.codeinc.opencode.gen.account.v1.validate -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.internal.annotations.OpenCodeManagedChannel import com.getcode.opencode.internal.network.core.GrpcApi import com.getcode.opencode.internal.network.extensions.asSolanaAccountId diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/BalanceApi.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/BalanceApi.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/BalanceApi.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/BalanceApi.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/CurrencyApi.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/CurrencyApi.kt similarity index 99% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/CurrencyApi.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/CurrencyApi.kt index 95453a5f0a..59391faf70 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/CurrencyApi.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/CurrencyApi.kt @@ -3,7 +3,7 @@ package com.getcode.opencode.internal.network.api import com.codeinc.opencode.gen.currency.v1.CurrencyGrpcKt import com.codeinc.opencode.gen.currency.v1.OcpCurrencyService import com.codeinc.opencode.gen.currency.v1.validate -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.internal.annotations.OpenCodeManagedChannel import com.getcode.opencode.internal.annotations.OpenCodeManagedStreamingChannel import com.getcode.opencode.model.ui.DiscoverCategory diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/MessagingApi.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/MessagingApi.kt similarity index 98% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/MessagingApi.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/MessagingApi.kt index d925ca6ce9..bbed853fa3 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/MessagingApi.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/MessagingApi.kt @@ -4,8 +4,8 @@ import com.codeinc.opencode.gen.common.v1.Model import com.codeinc.opencode.gen.messaging.v1.MessagingGrpcKt import com.codeinc.opencode.gen.messaging.v1.OcpMessagingService import com.codeinc.opencode.gen.messaging.v1.validate -import com.getcode.ed25519.Ed25519 -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519 +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.internal.annotations.OpenCodeManagedChannel import com.getcode.opencode.internal.network.core.GrpcApi import com.getcode.opencode.internal.network.extensions.asRendezvousKey diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/TransactionApi.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/TransactionApi.kt similarity index 99% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/TransactionApi.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/TransactionApi.kt index b277484aef..a0d520f467 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/TransactionApi.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/TransactionApi.kt @@ -15,7 +15,7 @@ import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService.VoidGiftCar import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService.VoidGiftCardResponse import com.codeinc.opencode.gen.transaction.v1.TransactionGrpcKt import com.codeinc.opencode.gen.transaction.v1.validate -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.internal.annotations.OpenCodeManagedChannel import com.getcode.opencode.internal.network.core.GrpcApi import com.getcode.opencode.internal.network.extensions.asIntentId diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentCreateAccount.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/intents/IntentCreateAccount.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentCreateAccount.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/intents/IntentCreateAccount.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentDistribution.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/intents/IntentDistribution.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentDistribution.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/intents/IntentDistribution.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentFundSwap.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/intents/IntentFundSwap.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentFundSwap.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/intents/IntentFundSwap.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentMultiTransfer.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/intents/IntentMultiTransfer.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentMultiTransfer.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/intents/IntentMultiTransfer.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentRemoteReceive.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/intents/IntentRemoteReceive.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentRemoteReceive.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/intents/IntentRemoteReceive.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentRemoteSend.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/intents/IntentRemoteSend.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentRemoteSend.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/intents/IntentRemoteSend.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentStatefulSwap.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/intents/IntentStatefulSwap.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentStatefulSwap.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/intents/IntentStatefulSwap.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentStatelessSwap.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/intents/IntentStatelessSwap.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentStatelessSwap.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/intents/IntentStatelessSwap.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentTransfer.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/intents/IntentTransfer.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentTransfer.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/intents/IntentTransfer.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentWithdraw.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/intents/IntentWithdraw.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentWithdraw.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/intents/IntentWithdraw.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/actions/ActionFeePayment.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/intents/actions/ActionFeePayment.kt similarity index 98% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/actions/ActionFeePayment.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/intents/actions/ActionFeePayment.kt index 2e079ba676..aa2a3d7365 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/actions/ActionFeePayment.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/intents/actions/ActionFeePayment.kt @@ -1,7 +1,7 @@ package com.getcode.opencode.internal.network.api.intents.actions import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.internal.network.extensions.asSolanaAccountId import com.getcode.opencode.model.accounts.AccountCluster import com.getcode.opencode.model.financial.Fee diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/actions/ActionOpenAccount.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/intents/actions/ActionOpenAccount.kt similarity index 98% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/actions/ActionOpenAccount.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/intents/actions/ActionOpenAccount.kt index 780e364902..3c00018eea 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/actions/ActionOpenAccount.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/intents/actions/ActionOpenAccount.kt @@ -1,7 +1,7 @@ package com.getcode.opencode.internal.network.api.intents.actions import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.solana.intents.ServerParameter import com.getcode.opencode.model.accounts.AccountCluster import com.getcode.opencode.internal.network.extensions.asSolanaAccountId diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/actions/ActionPublicTransfer.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/intents/actions/ActionPublicTransfer.kt similarity index 98% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/actions/ActionPublicTransfer.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/intents/actions/ActionPublicTransfer.kt index 2cc1150ea6..dc92f00e77 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/actions/ActionPublicTransfer.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/intents/actions/ActionPublicTransfer.kt @@ -1,7 +1,7 @@ package com.getcode.opencode.internal.network.api.intents.actions import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.internal.network.extensions.asSolanaAccountId import com.getcode.opencode.model.financial.Fiat import com.getcode.opencode.solana.SolanaTransaction diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/actions/ActionPublicWithdraw.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/intents/actions/ActionPublicWithdraw.kt similarity index 98% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/actions/ActionPublicWithdraw.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/intents/actions/ActionPublicWithdraw.kt index 7ed8af366f..9416f027b8 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/actions/ActionPublicWithdraw.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/api/intents/actions/ActionPublicWithdraw.kt @@ -1,7 +1,7 @@ package com.getcode.opencode.internal.network.api.intents.actions import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.internal.network.extensions.asSolanaAccountId import com.getcode.opencode.model.accounts.AccountCluster import com.getcode.opencode.model.financial.Fiat diff --git a/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/core/GrpcApi.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/core/GrpcApi.kt new file mode 100644 index 0000000000..88f65bded9 --- /dev/null +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/core/GrpcApi.kt @@ -0,0 +1,24 @@ +package com.getcode.opencode.internal.network.core + +import com.getcode.opencode.internal.platform.observeProcessLifecycle +import io.grpc.ManagedChannel + +abstract class GrpcApi(protected val managedChannels: List) { + + constructor(managedChannel: ManagedChannel): this(listOf(managedChannel)) + constructor(vararg managedChannels: ManagedChannel): this(managedChannels.toList()) + + init { + // Registering on the constructing thread would pin construction of every api -- and so of the whole object graph hanging off + // them -- to the main thread. Posting keeps that off the startup path. addObserver replays the + // current state, so a registration that lands after the process is already started still warms + // the channel. + observeProcessLifecycle(immediateOnMain = true, onStart = ::warmUp) + } + + private fun warmUp() { + // getState(true) requests a connection attempt if idle, + // pre-connecting TCP + TLS + HTTP/2 in the background + managedChannels.onEach { it.getState(true) } + } +} diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/executors/IntentExecutor.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/executors/IntentExecutor.kt similarity index 98% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/executors/IntentExecutor.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/executors/IntentExecutor.kt index 6d9f07fbb6..3ff1cd101e 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/executors/IntentExecutor.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/executors/IntentExecutor.kt @@ -1,9 +1,10 @@ package com.getcode.opencode.internal.network.executors +import com.getcode.utils.BuildFlags import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService.SubmitIntentRequest import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService.SubmitIntentResponse -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.internal.bidi.BidirectionalStreamReference import com.getcode.opencode.internal.bidi.openBidirectionalStreamForResult import com.getcode.opencode.internal.network.api.TransactionApi @@ -12,7 +13,6 @@ import com.getcode.opencode.solana.SolanaTransaction import com.getcode.opencode.solana.diff import com.getcode.opencode.solana.intents.IntentType import com.getcode.opencode.solana.intents.ServerParameter -import com.getcode.services.opencode.BuildConfig import com.getcode.solana.keys.base58 import com.getcode.solana.keys.redact import com.getcode.utils.TraceType @@ -161,7 +161,7 @@ class IntentExecutor( val submitSignatures = intent.requestToSubmitSignatures() requestChannel(submitSignatures) } catch (e: Exception) { - if (BuildConfig.DEBUG) { + if (BuildFlags.isDebug) { e.printStackTrace() } trace( diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/executors/StatefulSwapExecutor.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/executors/StatefulSwapExecutor.kt similarity index 99% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/executors/StatefulSwapExecutor.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/executors/StatefulSwapExecutor.kt index 3781ce5302..794709daee 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/executors/StatefulSwapExecutor.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/executors/StatefulSwapExecutor.kt @@ -1,5 +1,6 @@ package com.getcode.opencode.internal.network.executors +import com.getcode.utils.BuildFlags import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService import com.getcode.opencode.internal.bidi.BidirectionalStreamReference import com.getcode.opencode.internal.bidi.openBidirectionalStreamForResult @@ -15,7 +16,6 @@ import com.getcode.opencode.model.transactions.SwapProgram import com.getcode.opencode.model.transactions.VerifiedSwapMetadata import com.getcode.opencode.solana.SolanaTransaction import com.getcode.opencode.solana.diff -import com.getcode.services.opencode.BuildConfig import com.getcode.solana.keys.Signature import com.getcode.solana.keys.base58 import com.getcode.utils.TraceType @@ -209,7 +209,7 @@ private fun handleServerParameters( onResult(Result.failure(SwapError.Other(cause = IllegalArgumentException("Invalid server parameters")))) } } catch (e: Exception) { - if (BuildConfig.DEBUG) { + if (BuildFlags.isDebug) { e.printStackTrace() } onResult(Result.failure(SwapError.Other(cause = e))) diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/executors/StatelessSwapExecutor.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/executors/StatelessSwapExecutor.kt similarity index 98% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/executors/StatelessSwapExecutor.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/executors/StatelessSwapExecutor.kt index a05c274d10..71b9bae9b5 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/executors/StatelessSwapExecutor.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/executors/StatelessSwapExecutor.kt @@ -1,5 +1,6 @@ package com.getcode.opencode.internal.network.executors +import com.getcode.utils.BuildFlags import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService import com.getcode.opencode.internal.bidi.BidirectionalStreamReference import com.getcode.opencode.internal.bidi.openBidirectionalStreamForResult @@ -13,7 +14,6 @@ import com.getcode.opencode.model.core.errors.SwapError import com.getcode.opencode.model.transactions.StatelessSwapRequest import com.getcode.opencode.model.transactions.StatelessSwapResult import com.getcode.opencode.model.transactions.StatelessSwapSuccess -import com.getcode.services.opencode.BuildConfig import com.getcode.utils.TraceType import com.getcode.utils.trace import kotlinx.coroutines.CoroutineScope @@ -141,7 +141,7 @@ private fun handleServerParameters( intent.parameters = params requestChannel(intent.requestToSubmitSignatures()) } catch (e: Exception) { - if (BuildConfig.DEBUG) e.printStackTrace() + if (BuildFlags.isDebug) e.printStackTrace() onResult(Result.failure(SwapError.Other(cause = e))) } } diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/extensions/FoldWithSuppression.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/extensions/FoldWithSuppression.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/extensions/FoldWithSuppression.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/extensions/FoldWithSuppression.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/extensions/LocalToProtobuf.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/extensions/LocalToProtobuf.kt similarity index 99% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/extensions/LocalToProtobuf.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/extensions/LocalToProtobuf.kt index 377ea7a5ff..c8ef1d48d6 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/extensions/LocalToProtobuf.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/extensions/LocalToProtobuf.kt @@ -7,7 +7,7 @@ import com.codeinc.opencode.gen.messaging.v1.requestToGiveBill import com.codeinc.opencode.gen.messaging.v1.requestToGrabBill import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService.OpenAccountsMetadata.AccountSet -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.internal.solana.model.SwapId import com.getcode.opencode.internal.solana.programs.CoinbaseStableSwapperProgram import com.getcode.opencode.model.accounts.AccountType diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/extensions/ProtobufToLocal.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/extensions/ProtobufToLocal.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/extensions/ProtobufToLocal.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/extensions/ProtobufToLocal.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/extensions/SignMessage.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/extensions/SignMessage.kt similarity index 94% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/extensions/SignMessage.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/extensions/SignMessage.kt index 07b782112b..68948875a4 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/extensions/SignMessage.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/extensions/SignMessage.kt @@ -1,7 +1,7 @@ package com.getcode.opencode.internal.network.extensions import com.codeinc.opencode.gen.common.v1.Model -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.google.protobuf.GeneratedMessageLite import java.io.ByteArrayOutputStream diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/funding/SwapFunding.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/funding/SwapFunding.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/funding/SwapFunding.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/funding/SwapFunding.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/pollers/SwapPoller.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/pollers/SwapPoller.kt similarity index 99% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/pollers/SwapPoller.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/pollers/SwapPoller.kt index 31e70afcd8..9d9eac6b7e 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/pollers/SwapPoller.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/pollers/SwapPoller.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.internal.network.pollers -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.internal.network.services.SwapService import com.getcode.opencode.internal.solana.model.SwapId import com.getcode.opencode.model.core.errors.GetSwapError diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/serializer/UUIDSerializer.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/serializer/UUIDSerializer.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/serializer/UUIDSerializer.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/serializer/UUIDSerializer.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/services/AccountService.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/services/AccountService.kt similarity index 98% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/services/AccountService.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/services/AccountService.kt index 4e6348afbe..87eaf5412d 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/services/AccountService.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/services/AccountService.kt @@ -1,7 +1,7 @@ package com.getcode.opencode.internal.network.services import com.codeinc.opencode.gen.account.v1.OcpAccountService -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.internal.network.api.AccountApi import com.getcode.opencode.internal.network.extensions.foldWithSuppression import com.getcode.opencode.model.accounts.AccountFilter diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/services/BalanceService.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/services/BalanceService.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/services/BalanceService.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/services/BalanceService.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/services/CurrencyService.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/services/CurrencyService.kt similarity index 99% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/services/CurrencyService.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/services/CurrencyService.kt index 81287849ab..12e14c2b76 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/services/CurrencyService.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/services/CurrencyService.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.internal.network.services -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.internal.domain.mapping.HistoricalMintDataMapper import com.getcode.opencode.internal.domain.mapping.LiveMintDataMapper import com.getcode.opencode.internal.domain.mapping.MintMapper diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/services/MessagingService.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/services/MessagingService.kt similarity index 99% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/services/MessagingService.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/services/MessagingService.kt index 7234016308..7e1fd4828c 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/services/MessagingService.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/services/MessagingService.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.internal.network.services -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.internal.bidi.BidirectionalStreamReference import com.getcode.opencode.internal.bidi.openBidirectionalStreamForResult import com.getcode.opencode.internal.network.api.MessagingApi diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/services/SwapService.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/services/SwapService.kt similarity index 98% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/services/SwapService.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/services/SwapService.kt index da68c86837..3f0fa99e44 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/services/SwapService.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/services/SwapService.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.internal.network.services -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.internal.domain.mapping.SwapMetadataMapper import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService import com.getcode.opencode.internal.network.api.TransactionApi diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/services/TransactionService.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/services/TransactionService.kt similarity index 99% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/services/TransactionService.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/services/TransactionService.kt index 332e90afc3..4804c6c971 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/services/TransactionService.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/services/TransactionService.kt @@ -2,8 +2,8 @@ package com.getcode.opencode.internal.network.services import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService import com.codeinc.opencode.gen.transaction.v1.feeAmountOrNull -import com.getcode.ed25519.Ed25519 -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519 +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.internal.domain.mapping.TransactionMetadataMapper import com.getcode.opencode.internal.manager.VerifiedState import com.getcode.opencode.internal.network.api.TransactionApi diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/streamers/LiveMintDataStreamer.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/streamers/LiveMintDataStreamer.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/streamers/LiveMintDataStreamer.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/network/streamers/LiveMintDataStreamer.kt diff --git a/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/platform/ProcessLifecycle.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/platform/ProcessLifecycle.kt new file mode 100644 index 0000000000..43ba429751 --- /dev/null +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/platform/ProcessLifecycle.kt @@ -0,0 +1,15 @@ +package com.getcode.opencode.internal.platform + +/** + * Calls [onStart] and [onStop] as the app process enters and leaves the foreground. + * + * Registration replays the current state, so a process that is already started calls [onStart] + * once registered. With [immediateOnMain], a caller already on the main thread registers in place; + * otherwise registration is always deferred, so neither callback runs during the caller's own + * construction. + */ +internal expect fun observeProcessLifecycle( + immediateOnMain: Boolean, + onStart: () -> Unit, + onStop: () -> Unit = {}, +) diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/Definitions.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/Definitions.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/Definitions.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/Definitions.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/ShortVec.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/ShortVec.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/ShortVec.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/ShortVec.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/extensions/AssociatedTokenAccount.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/extensions/AssociatedTokenAccount.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/extensions/AssociatedTokenAccount.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/extensions/AssociatedTokenAccount.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/extensions/ExtractServerParameters.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/extensions/ExtractServerParameters.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/extensions/ExtractServerParameters.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/extensions/ExtractServerParameters.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/extensions/PublicKey.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/extensions/PublicKey.kt similarity index 99% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/extensions/PublicKey.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/extensions/PublicKey.kt index 766c543ae1..d0beab61a7 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/extensions/PublicKey.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/extensions/PublicKey.kt @@ -1,7 +1,7 @@ package com.getcode.opencode.internal.solana.extensions import com.getcode.crypt.Sha256Hash -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.internal.solana.vmAuthority import com.getcode.opencode.internal.solana.programs.AssociatedTokenProgram import com.getcode.opencode.internal.solana.programs.CoinbaseStableSwapperProgram diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/extensions/TimelockDerivedAccounts.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/extensions/TimelockDerivedAccounts.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/extensions/TimelockDerivedAccounts.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/extensions/TimelockDerivedAccounts.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/extensions/Token.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/extensions/Token.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/extensions/Token.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/extensions/Token.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/extensions/UInt16.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/extensions/UInt16.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/extensions/UInt16.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/extensions/UInt16.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/model/CoinbaseStablecoinPoolAccount.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/model/CoinbaseStablecoinPoolAccount.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/model/CoinbaseStablecoinPoolAccount.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/model/CoinbaseStablecoinPoolAccount.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/model/CoinbaseSwapAccounts.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/model/CoinbaseSwapAccounts.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/model/CoinbaseSwapAccounts.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/model/CoinbaseSwapAccounts.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/model/MessageAddressLookupTable.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/model/MessageAddressLookupTable.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/model/MessageAddressLookupTable.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/model/MessageAddressLookupTable.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/model/SwapId.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/model/SwapId.kt similarity index 90% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/model/SwapId.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/model/SwapId.kt index 0177547be0..084b97a961 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/model/SwapId.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/model/SwapId.kt @@ -1,10 +1,10 @@ package com.getcode.opencode.internal.solana.model -import android.os.Parcelable +import com.getcode.libs.parcelable.Parcelable import com.getcode.opencode.utils.generate import com.getcode.solana.keys.PublicKey import com.getcode.utils.serializer.ByteListAsBase64Serializer -import kotlinx.parcelize.Parcelize +import com.getcode.libs.parcelable.Parcelize import kotlinx.serialization.Serializable @Serializable diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/model/Vault.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/model/Vault.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/model/Vault.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/model/Vault.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/AssociatedTokenProgram.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/AssociatedTokenProgram.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/AssociatedTokenProgram.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/AssociatedTokenProgram.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/AssociatedTokenProgram_CreateIdempotent.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/AssociatedTokenProgram_CreateIdempotent.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/AssociatedTokenProgram_CreateIdempotent.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/AssociatedTokenProgram_CreateIdempotent.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/CoinbaseStableSwapperProgram.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/CoinbaseStableSwapperProgram.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/CoinbaseStableSwapperProgram.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/CoinbaseStableSwapperProgram.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/CoinbaseStableSwapperProgram_SwapV2.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/CoinbaseStableSwapperProgram_SwapV2.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/CoinbaseStableSwapperProgram_SwapV2.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/CoinbaseStableSwapperProgram_SwapV2.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/ComputeBudgetProgram.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/ComputeBudgetProgram.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/ComputeBudgetProgram.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/ComputeBudgetProgram.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/ComputeBudgetProgram_SetComputeUnitLimit.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/ComputeBudgetProgram_SetComputeUnitLimit.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/ComputeBudgetProgram_SetComputeUnitLimit.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/ComputeBudgetProgram_SetComputeUnitLimit.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/ComputeBudgetProgram_SetComputeUnitPrice.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/ComputeBudgetProgram_SetComputeUnitPrice.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/ComputeBudgetProgram_SetComputeUnitPrice.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/ComputeBudgetProgram_SetComputeUnitPrice.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/CurrencyCreatorProgram.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/CurrencyCreatorProgram.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/CurrencyCreatorProgram.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/CurrencyCreatorProgram.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/CurrencyCreatorProgram_BuyAndDepositIntoVm.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/CurrencyCreatorProgram_BuyAndDepositIntoVm.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/CurrencyCreatorProgram_BuyAndDepositIntoVm.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/CurrencyCreatorProgram_BuyAndDepositIntoVm.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/CurrencyCreatorProgram_BuyTokens.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/CurrencyCreatorProgram_BuyTokens.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/CurrencyCreatorProgram_BuyTokens.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/CurrencyCreatorProgram_BuyTokens.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/CurrencyCreatorProgram_InitializeCurrency.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/CurrencyCreatorProgram_InitializeCurrency.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/CurrencyCreatorProgram_InitializeCurrency.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/CurrencyCreatorProgram_InitializeCurrency.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/CurrencyCreatorProgram_InitializePool.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/CurrencyCreatorProgram_InitializePool.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/CurrencyCreatorProgram_InitializePool.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/CurrencyCreatorProgram_InitializePool.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/CurrencyCreatorProgram_SellAndDepositIntoVm.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/CurrencyCreatorProgram_SellAndDepositIntoVm.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/CurrencyCreatorProgram_SellAndDepositIntoVm.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/CurrencyCreatorProgram_SellAndDepositIntoVm.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/CurrencyCreatorProgram_SellTokens.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/CurrencyCreatorProgram_SellTokens.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/CurrencyCreatorProgram_SellTokens.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/CurrencyCreatorProgram_SellTokens.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/InstructionType.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/InstructionType.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/InstructionType.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/InstructionType.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/MemoProgram.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/MemoProgram.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/MemoProgram.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/MemoProgram.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/MemoProgram_Memo.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/MemoProgram_Memo.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/MemoProgram_Memo.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/MemoProgram_Memo.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/SwapValidatorProgram.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/SwapValidatorProgram.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/SwapValidatorProgram.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/SwapValidatorProgram.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/SysVar.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/SysVar.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/SysVar.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/SysVar.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/SystemProgram.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/SystemProgram.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/SystemProgram.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/SystemProgram.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/SystemProgram_AdvanceNonce.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/SystemProgram_AdvanceNonce.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/SystemProgram_AdvanceNonce.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/SystemProgram_AdvanceNonce.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/TimelockProgram.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/TimelockProgram.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/TimelockProgram.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/TimelockProgram.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/TokenProgram.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/TokenProgram.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/TokenProgram.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/TokenProgram.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/TokenProgram_CloseAccount.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/TokenProgram_CloseAccount.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/TokenProgram_CloseAccount.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/TokenProgram_CloseAccount.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/TokenProgram_Transfer.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/TokenProgram_Transfer.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/TokenProgram_Transfer.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/TokenProgram_Transfer.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/UsdfProgram.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/UsdfProgram.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/UsdfProgram.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/UsdfProgram.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/UsdfProgram_Swap.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/UsdfProgram_Swap.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/UsdfProgram_Swap.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/UsdfProgram_Swap.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/UsdfProgram_Transfer.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/UsdfProgram_Transfer.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/UsdfProgram_Transfer.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/UsdfProgram_Transfer.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/VirtualMachineProgram.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/VirtualMachineProgram.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/VirtualMachineProgram.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/VirtualMachineProgram.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/VirtualMachineProgram_CloseSwapAccountIfEmpty.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/VirtualMachineProgram_CloseSwapAccountIfEmpty.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/VirtualMachineProgram_CloseSwapAccountIfEmpty.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/VirtualMachineProgram_CloseSwapAccountIfEmpty.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/VirtualMachineProgram_InitVm.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/VirtualMachineProgram_InitVm.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/VirtualMachineProgram_InitVm.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/VirtualMachineProgram_InitVm.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/VirtualMachineProgram_TransferForSwap.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/VirtualMachineProgram_TransferForSwap.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/VirtualMachineProgram_TransferForSwap.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/VirtualMachineProgram_TransferForSwap.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/VirtualMachineProgram_TransferForSwapWithFee.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/VirtualMachineProgram_TransferForSwapWithFee.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/programs/VirtualMachineProgram_TransferForSwapWithFee.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/programs/VirtualMachineProgram_TransferForSwapWithFee.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/utils/DataSlice.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/utils/DataSlice.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/utils/DataSlice.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/utils/DataSlice.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/utils/Differ.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/utils/Differ.kt similarity index 75% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/utils/Differ.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/utils/Differ.kt index d0225bfeca..bee155f223 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/solana/utils/Differ.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/solana/utils/Differ.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.internal.solana.utils -import timber.log.Timber +import com.getcode.utils.Log import kotlin.math.max internal fun printDiff(title: String, one: String, two: String) { @@ -10,8 +10,8 @@ internal fun printDiff(title: String, one: String, two: String) { internal fun printDiff(title: String, one: List, two: List) { val lineSeparator = "\n -\n" - Timber.d("✗ $title") - Timber.d("|----------------------------------------------------------------------") + Log.d("✗ $title") + Log.d("|----------------------------------------------------------------------") val lines = (0 until max(one.count(), two.count())).joinToString(lineSeparator) { i -> var oneValue = "-" @@ -32,10 +32,10 @@ internal fun printDiff(title: String, one: List, two: List) { content } - Timber.d(lines) - Timber.d("|----------------------------------------------------------------------") + Log.d(lines) + Log.d("|----------------------------------------------------------------------") } internal fun printMatch(title: String) { - Timber.d("✓ $title") + Log.d("✓ $title") } \ No newline at end of file diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/transactors/AccountClusterFactory.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/transactors/AccountClusterFactory.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/transactors/AccountClusterFactory.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/transactors/AccountClusterFactory.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/transactors/BillPresentationData.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/transactors/BillPresentationData.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/transactors/BillPresentationData.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/transactors/BillPresentationData.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/transactors/GiveBillTransactor.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/transactors/GiveBillTransactor.kt similarity index 99% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/transactors/GiveBillTransactor.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/transactors/GiveBillTransactor.kt index 2a0d282ab2..b2ee048f37 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/transactors/GiveBillTransactor.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/transactors/GiveBillTransactor.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.internal.transactors -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.controllers.MessagingController import com.getcode.opencode.controllers.TransactionController import com.getcode.opencode.exchange.VerifiedFiatCalculator diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/transactors/GrabBillTransactor.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/transactors/GrabBillTransactor.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/transactors/GrabBillTransactor.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/transactors/GrabBillTransactor.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/transactors/PayloadFactory.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/transactors/PayloadFactory.kt similarity index 96% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/transactors/PayloadFactory.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/transactors/PayloadFactory.kt index 88461f9456..0a3d208db7 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/transactors/PayloadFactory.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/transactors/PayloadFactory.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.internal.transactors -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.model.core.OpenCodePayload import com.getcode.opencode.model.core.PayloadKind import com.getcode.opencode.model.financial.Fiat diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/transactors/ReceiveGiftCardTransactor.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/transactors/ReceiveGiftCardTransactor.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/transactors/ReceiveGiftCardTransactor.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/transactors/ReceiveGiftCardTransactor.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/transactors/SendGiftCardTransactor.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/transactors/SendGiftCardTransactor.kt similarity index 99% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/transactors/SendGiftCardTransactor.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/transactors/SendGiftCardTransactor.kt index 4719a2c027..c309343607 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/transactors/SendGiftCardTransactor.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/transactors/SendGiftCardTransactor.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.internal.transactors -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.controllers.TransactionController import com.getcode.opencode.internal.extensions.toPublicKey import com.getcode.opencode.internal.manager.VerifiedState diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/transactors/Transactor.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/transactors/Transactor.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/internal/transactors/Transactor.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/internal/transactors/Transactor.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/managers/BillTransactionManager.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/managers/BillTransactionManager.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/managers/BillTransactionManager.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/managers/BillTransactionManager.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/managers/GiftCardManager.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/managers/GiftCardManager.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/managers/GiftCardManager.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/managers/GiftCardManager.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/managers/MnemonicManager.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/managers/MnemonicManager.kt similarity index 96% rename from services/opencode/src/main/kotlin/com/getcode/opencode/managers/MnemonicManager.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/managers/MnemonicManager.kt index a89333f879..02ea7ff2f6 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/managers/MnemonicManager.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/managers/MnemonicManager.kt @@ -3,7 +3,7 @@ package com.getcode.opencode.managers import com.getcode.crypt.MnemonicCache import com.getcode.crypt.MnemonicCode import com.getcode.crypt.MnemonicPhrase -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.generators.MnemonicGenerator import com.getcode.opencode.utils.Base58String import com.getcode.opencode.utils.Base64String diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/mapper/Mapper.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/mapper/Mapper.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/mapper/Mapper.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/mapper/Mapper.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/accounts/AccountCluster.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/accounts/AccountCluster.kt similarity index 98% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/accounts/AccountCluster.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/accounts/AccountCluster.kt index 465d7799e0..7e872f5944 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/model/accounts/AccountCluster.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/accounts/AccountCluster.kt @@ -1,7 +1,7 @@ package com.getcode.opencode.model.accounts import com.getcode.crypt.DerivedKey -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.internal.solana.extensions.newInstance import com.getcode.opencode.internal.extensions.toPublicKey import com.getcode.opencode.internal.solana.extensions.deriveAssociatedAccount diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/accounts/AccountFilter.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/accounts/AccountFilter.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/accounts/AccountFilter.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/accounts/AccountFilter.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/accounts/AccountInfo.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/accounts/AccountInfo.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/accounts/AccountInfo.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/accounts/AccountInfo.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/accounts/AccountResponse.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/accounts/AccountResponse.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/accounts/AccountResponse.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/accounts/AccountResponse.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/accounts/AccountType.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/accounts/AccountType.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/accounts/AccountType.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/accounts/AccountType.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/accounts/GiftCardAccount.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/accounts/GiftCardAccount.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/accounts/GiftCardAccount.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/accounts/GiftCardAccount.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/accounts/PoolAccount.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/accounts/PoolAccount.kt similarity index 95% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/accounts/PoolAccount.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/accounts/PoolAccount.kt index 335e7d5eb5..792bb4bb82 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/model/accounts/PoolAccount.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/accounts/PoolAccount.kt @@ -3,7 +3,7 @@ package com.getcode.opencode.model.accounts import com.getcode.crypt.DerivePath import com.getcode.crypt.DerivedKey import com.getcode.crypt.MnemonicPhrase -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.solana.keys.Mint class PoolAccount( diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/core/EncryptedData.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/core/EncryptedData.kt similarity index 89% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/core/EncryptedData.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/core/EncryptedData.kt index 4a3817244c..842de6dacd 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/model/core/EncryptedData.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/core/EncryptedData.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.model.core -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.solana.keys.PublicKey import com.getcode.utils.serializer.PublicKeyAsStringSerializer import kotlinx.serialization.Serializable diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/core/ID.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/core/ID.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/core/ID.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/core/ID.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/core/OpenCodePayload.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/core/OpenCodePayload.kt similarity index 96% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/core/OpenCodePayload.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/core/OpenCodePayload.kt index cb4604f248..dc0b684f0c 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/model/core/OpenCodePayload.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/core/OpenCodePayload.kt @@ -1,12 +1,11 @@ package com.getcode.opencode.model.core -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.internal.solana.utils.DataSlice.byteToUnsignedInt import com.getcode.opencode.internal.solana.utils.DataSlice.suffix import com.getcode.opencode.model.financial.CurrencyCode import com.getcode.opencode.model.financial.Fiat import com.getcode.opencode.utils.deriveRendezvousKey -import com.kik.scan.Scanner import com.getcode.utils.byteArrayToLong import com.getcode.utils.longToByteArray @@ -28,7 +27,7 @@ data class OpenCodePayload( get() = (value as? UserId)?.value val codeData: ByteArray - get() = Scanner.encode(encode().toByteArray()) ?: ByteArray(LENGTH) + get() = encodeScanCode(encode().toByteArray()) ?: ByteArray(LENGTH) /** Serializes this payload into the fixed [LENGTH]-byte scan frame. */ fun encode(): List = kind.encode(value, nonce) diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/core/PayloadKind.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/core/PayloadKind.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/core/PayloadKind.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/core/PayloadKind.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/core/PayloadValue.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/core/PayloadValue.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/core/PayloadValue.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/core/PayloadValue.kt diff --git a/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/core/ScanCodeEncoder.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/core/ScanCodeEncoder.kt new file mode 100644 index 0000000000..ebe437ac05 --- /dev/null +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/core/ScanCodeEncoder.kt @@ -0,0 +1,4 @@ +package com.getcode.opencode.model.core + +/** Reed-Solomon encodes a payload frame into the bytes a Kik code draws, or null if it can't. */ +internal expect fun encodeScanCode(payload: ByteArray): ByteArray? diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/core/UUID.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/core/UUID.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/core/UUID.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/core/UUID.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/core/errors/Errors.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/core/errors/Errors.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/core/errors/Errors.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/core/errors/Errors.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/core/errors/SodiumError.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/core/errors/SodiumError.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/core/errors/SodiumError.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/core/errors/SodiumError.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/core/errors/ValidationException.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/core/errors/ValidationException.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/core/errors/ValidationException.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/core/errors/ValidationException.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/Currency.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/financial/Currency.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/Currency.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/financial/Currency.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/CurrencyCode.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/financial/CurrencyCode.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/CurrencyCode.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/financial/CurrencyCode.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/Distribution.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/financial/Distribution.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/Distribution.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/financial/Distribution.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/Fee.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/financial/Fee.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/Fee.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/financial/Fee.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/Fiat.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/financial/Fiat.kt similarity index 99% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/Fiat.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/financial/Fiat.kt index 1c5f917293..f4afe0d6e8 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/Fiat.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/financial/Fiat.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.model.financial -import android.os.Parcelable +import com.getcode.libs.parcelable.Parcelable import com.flipcash.libs.currency.math.Estimator import com.flipcash.libs.currency.math.MarketState import com.flipcash.libs.currency.math.Valuation @@ -9,7 +9,7 @@ import com.getcode.opencode.model.core.PayloadValue import com.getcode.opencode.utils.roundTo import com.getcode.opencode.utils.toLocaleAwareDoubleOrNull import com.getcode.solana.keys.Mint -import kotlinx.parcelize.Parcelize +import com.getcode.libs.parcelable.Parcelize import kotlinx.serialization.Serializable import java.math.BigDecimal import java.math.RoundingMode diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/HistoricalMintData.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/financial/HistoricalMintData.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/HistoricalMintData.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/financial/HistoricalMintData.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/LaunchpadReserveStateSnapshot.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/financial/LaunchpadReserveStateSnapshot.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/LaunchpadReserveStateSnapshot.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/financial/LaunchpadReserveStateSnapshot.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/LaunchpadSellFee.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/financial/LaunchpadSellFee.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/LaunchpadSellFee.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/financial/LaunchpadSellFee.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/Limits.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/financial/Limits.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/Limits.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/financial/Limits.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/LocalFiat.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/financial/LocalFiat.kt similarity index 98% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/LocalFiat.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/financial/LocalFiat.kt index abb86f2be4..f44d659897 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/LocalFiat.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/financial/LocalFiat.kt @@ -1,10 +1,10 @@ package com.getcode.opencode.model.financial -import android.os.Parcelable +import com.getcode.libs.parcelable.Parcelable import com.getcode.opencode.internal.extensions.fractionDigits import com.getcode.opencode.model.transactions.ExchangeData import com.getcode.solana.keys.Mint -import kotlinx.parcelize.Parcelize +import com.getcode.libs.parcelable.Parcelize import kotlinx.serialization.Serializable import javax.annotation.concurrent.Immutable diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/MintMetadata.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/financial/MintMetadata.kt similarity index 98% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/MintMetadata.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/financial/MintMetadata.kt index f94f71caa0..2a5db22793 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/MintMetadata.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/financial/MintMetadata.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.model.financial -import android.os.Parcelable +import com.getcode.libs.parcelable.Parcelable import com.flipcash.libs.currency.math.Estimator import com.getcode.opencode.model.ui.WindowedRange import com.getcode.opencode.internal.solana.extensions.deriveVirtualMachineAccount @@ -10,8 +10,8 @@ import com.getcode.opencode.model.ui.TokenBillCustomizations import com.getcode.opencode.solana.keys.TimelockDerivedAccounts import com.getcode.solana.keys.Mint import com.getcode.solana.keys.PublicKey -import kotlinx.parcelize.IgnoredOnParcel -import kotlinx.parcelize.Parcelize +import com.getcode.libs.parcelable.IgnoredOnParcel +import com.getcode.libs.parcelable.Parcelize import java.math.BigDecimal import java.math.RoundingMode import java.text.DecimalFormat diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/MintStreamingData.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/financial/MintStreamingData.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/MintStreamingData.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/financial/MintStreamingData.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/OwnerBalance.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/financial/OwnerBalance.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/OwnerBalance.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/financial/OwnerBalance.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/Rate.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/financial/Rate.kt similarity index 83% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/Rate.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/financial/Rate.kt index 393eaa8ca1..18672bd7e6 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/Rate.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/financial/Rate.kt @@ -1,7 +1,7 @@ package com.getcode.opencode.model.financial -import android.os.Parcelable -import kotlinx.parcelize.Parcelize +import com.getcode.libs.parcelable.Parcelable +import com.getcode.libs.parcelable.Parcelize import kotlinx.serialization.Serializable @Parcelize diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/RegionCode.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/financial/RegionCode.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/RegionCode.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/financial/RegionCode.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/TokenCreateRequest.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/financial/TokenCreateRequest.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/TokenCreateRequest.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/financial/TokenCreateRequest.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/TokenResult.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/financial/TokenResult.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/TokenResult.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/financial/TokenResult.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/TokenUpdateRequest.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/financial/TokenUpdateRequest.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/TokenUpdateRequest.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/financial/TokenUpdateRequest.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/messaging/KeepAliveRequest.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/messaging/KeepAliveRequest.kt similarity index 83% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/messaging/KeepAliveRequest.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/messaging/KeepAliveRequest.kt index b89658df92..ebb886d0ec 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/model/messaging/KeepAliveRequest.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/messaging/KeepAliveRequest.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.model.messaging -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair sealed interface KeepAliveRequest { data class OpenStreamRequest(val rendezvous: KeyPair): KeepAliveRequest diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/messaging/Message.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/messaging/Message.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/messaging/Message.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/messaging/Message.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/moderation/ModerationAttestation.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/moderation/ModerationAttestation.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/moderation/ModerationAttestation.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/moderation/ModerationAttestation.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/AddressLookupTable.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/transactions/AddressLookupTable.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/AddressLookupTable.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/transactions/AddressLookupTable.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/ExchangeData.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/transactions/ExchangeData.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/ExchangeData.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/transactions/ExchangeData.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/FundSwapPool.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/transactions/FundSwapPool.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/FundSwapPool.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/transactions/FundSwapPool.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/LiquidityPool.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/transactions/LiquidityPool.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/LiquidityPool.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/transactions/LiquidityPool.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/StartSwapServerParameters.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/transactions/StartSwapServerParameters.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/StartSwapServerParameters.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/transactions/StartSwapServerParameters.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/StatefulSwapRequest.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/transactions/StatefulSwapRequest.kt similarity index 98% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/StatefulSwapRequest.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/transactions/StatefulSwapRequest.kt index f959512ab8..8d41ba2ee6 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/StatefulSwapRequest.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/transactions/StatefulSwapRequest.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.model.transactions -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.internal.manager.VerifiedState import com.getcode.opencode.internal.solana.model.SwapId import com.getcode.opencode.model.accounts.AccountCluster diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/StatefulSwapResponseServerParameters.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/transactions/StatefulSwapResponseServerParameters.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/StatefulSwapResponseServerParameters.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/transactions/StatefulSwapResponseServerParameters.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/StatefulSwapResult.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/transactions/StatefulSwapResult.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/StatefulSwapResult.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/transactions/StatefulSwapResult.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/StatelessSwapRequest.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/transactions/StatelessSwapRequest.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/StatelessSwapRequest.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/transactions/StatelessSwapRequest.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/StatelessSwapResult.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/transactions/StatelessSwapResult.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/StatelessSwapResult.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/transactions/StatelessSwapResult.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/StatelessSwapServerParameters.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/transactions/StatelessSwapServerParameters.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/StatelessSwapServerParameters.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/transactions/StatelessSwapServerParameters.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/SwapFundingSource.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/transactions/SwapFundingSource.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/SwapFundingSource.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/transactions/SwapFundingSource.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/SwapMetadata.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/transactions/SwapMetadata.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/SwapMetadata.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/transactions/SwapMetadata.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/SwapRoute.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/transactions/SwapRoute.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/SwapRoute.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/transactions/SwapRoute.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/TransactionMetadata.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/transactions/TransactionMetadata.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/TransactionMetadata.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/transactions/TransactionMetadata.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/TransferRequest.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/transactions/TransferRequest.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/TransferRequest.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/transactions/TransferRequest.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/WithdrawalAvailability.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/transactions/WithdrawalAvailability.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/WithdrawalAvailability.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/transactions/WithdrawalAvailability.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/ui/BillCustomization.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/ui/BillCustomization.kt similarity index 95% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/ui/BillCustomization.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/ui/BillCustomization.kt index 2c8f156724..1f9b2f14c8 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/model/ui/BillCustomization.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/ui/BillCustomization.kt @@ -1,7 +1,7 @@ package com.getcode.opencode.model.ui -import android.os.Parcelable -import kotlinx.parcelize.Parcelize +import com.getcode.libs.parcelable.Parcelable +import com.getcode.libs.parcelable.Parcelize import kotlinx.serialization.Serializable @Parcelize diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/ui/DiscoverCategory.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/ui/DiscoverCategory.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/ui/DiscoverCategory.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/ui/DiscoverCategory.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/ui/WindowedRange.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/ui/WindowedRange.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/model/ui/WindowedRange.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/model/ui/WindowedRange.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/providers/SessionListener.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/providers/SessionListener.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/providers/SessionListener.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/providers/SessionListener.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/providers/TokenMetadataProvider.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/providers/TokenMetadataProvider.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/providers/TokenMetadataProvider.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/providers/TokenMetadataProvider.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/repositories/AccountRepository.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/repositories/AccountRepository.kt similarity index 95% rename from services/opencode/src/main/kotlin/com/getcode/opencode/repositories/AccountRepository.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/repositories/AccountRepository.kt index 1be940dc76..ac8bced161 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/repositories/AccountRepository.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/repositories/AccountRepository.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.repositories -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.model.accounts.AccountCluster import com.getcode.opencode.model.accounts.AccountFilter import com.getcode.opencode.model.accounts.AccountInfo diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/repositories/BalanceRepository.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/repositories/BalanceRepository.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/repositories/BalanceRepository.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/repositories/BalanceRepository.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/repositories/CurrencyRepository.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/repositories/CurrencyRepository.kt similarity index 97% rename from services/opencode/src/main/kotlin/com/getcode/opencode/repositories/CurrencyRepository.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/repositories/CurrencyRepository.kt index d3a90efe19..d4d9e1c367 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/repositories/CurrencyRepository.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/repositories/CurrencyRepository.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.repositories -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.model.ui.DiscoverCategory import com.getcode.opencode.model.financial.LiveMintDataResponse import com.getcode.opencode.model.ui.WindowedRange diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/repositories/EventRepository.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/repositories/EventRepository.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/repositories/EventRepository.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/repositories/EventRepository.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/repositories/MessagingRepository.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/repositories/MessagingRepository.kt similarity index 96% rename from services/opencode/src/main/kotlin/com/getcode/opencode/repositories/MessagingRepository.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/repositories/MessagingRepository.kt index a625665baf..8ca430010e 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/repositories/MessagingRepository.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/repositories/MessagingRepository.kt @@ -1,7 +1,7 @@ package com.getcode.opencode.repositories import com.codeinc.opencode.gen.messaging.v1.OcpMessagingService -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.internal.network.services.OcpMessageStreamReference import com.getcode.opencode.model.transactions.GrabRequest import com.getcode.opencode.model.transactions.TransferRequest diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/repositories/SwapRepository.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/repositories/SwapRepository.kt similarity index 94% rename from services/opencode/src/main/kotlin/com/getcode/opencode/repositories/SwapRepository.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/repositories/SwapRepository.kt index a65cd1811d..835ee90939 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/repositories/SwapRepository.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/repositories/SwapRepository.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.repositories -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.internal.solana.model.SwapId import com.getcode.opencode.model.transactions.Swap import com.getcode.opencode.model.transactions.SwapMetadata diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/repositories/TransactionRepository.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/repositories/TransactionRepository.kt similarity index 98% rename from services/opencode/src/main/kotlin/com/getcode/opencode/repositories/TransactionRepository.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/repositories/TransactionRepository.kt index 05f893705e..b0f05a15fb 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/repositories/TransactionRepository.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/repositories/TransactionRepository.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.repositories -import com.getcode.ed25519.Ed25519.KeyPair +import com.getcode.ed25519kmp.Ed25519.KeyPair import com.getcode.opencode.internal.manager.VerifiedState import com.getcode.opencode.internal.solana.model.SwapId import com.getcode.opencode.model.accounts.AccountCluster diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/solana/Instruction.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/Instruction.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/solana/Instruction.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/Instruction.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/solana/LegacyMessage.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/LegacyMessage.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/solana/LegacyMessage.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/LegacyMessage.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/solana/Message.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/Message.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/solana/Message.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/Message.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/solana/MessageHeader.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/MessageHeader.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/solana/MessageHeader.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/MessageHeader.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/solana/SolanaTransaction.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/SolanaTransaction.kt similarity index 99% rename from services/opencode/src/main/kotlin/com/getcode/opencode/solana/SolanaTransaction.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/SolanaTransaction.kt index 299cd2fe8f..805d6fb3ab 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/solana/SolanaTransaction.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/SolanaTransaction.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.solana -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.internal.solana.ShortVec import com.getcode.opencode.internal.solana.model.MessageAddressLookupTable import com.getcode.opencode.internal.solana.utils.DataSlice.chunk diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/solana/TransactionBuilder.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/TransactionBuilder.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/solana/TransactionBuilder.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/TransactionBuilder.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/solana/VersionedMessage.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/VersionedMessage.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/solana/VersionedMessage.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/VersionedMessage.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/solana/intents/ActionGroup.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/intents/ActionGroup.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/solana/intents/ActionGroup.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/intents/ActionGroup.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/solana/intents/IntentType.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/intents/IntentType.kt similarity index 98% rename from services/opencode/src/main/kotlin/com/getcode/opencode/solana/intents/IntentType.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/intents/IntentType.kt index 71bd5857cc..b4db344cc2 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/solana/intents/IntentType.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/intents/IntentType.kt @@ -1,7 +1,7 @@ package com.getcode.opencode.solana.intents import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.solana.intents.actions.ActionType import com.getcode.opencode.internal.network.extensions.asIntentId import com.getcode.opencode.internal.network.extensions.asSolanaAccountId diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/solana/intents/ServerParameter.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/intents/ServerParameter.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/solana/intents/ServerParameter.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/intents/ServerParameter.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/solana/intents/actions/ActionType.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/intents/actions/ActionType.kt similarity index 98% rename from services/opencode/src/main/kotlin/com/getcode/opencode/solana/intents/actions/ActionType.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/intents/actions/ActionType.kt index 4f6117522e..63278cddf9 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/solana/intents/actions/ActionType.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/intents/actions/ActionType.kt @@ -2,7 +2,7 @@ package com.getcode.opencode.solana.intents.actions import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService import com.getcode.crypt.Sha256Hash -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.solana.intents.CompactMessage import com.getcode.opencode.solana.intents.CompactMessageArgs import com.getcode.opencode.solana.intents.ServerParameter diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/solana/keys/ProgramDerivedAccount.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/keys/ProgramDerivedAccount.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/solana/keys/ProgramDerivedAccount.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/keys/ProgramDerivedAccount.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/solana/keys/TimelockVmSwapAccounts.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/keys/TimelockVmSwapAccounts.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/solana/keys/TimelockVmSwapAccounts.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/keys/TimelockVmSwapAccounts.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/solana/swap/CoinbaseStablecoinSwapperInstructions.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/swap/CoinbaseStablecoinSwapperInstructions.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/solana/swap/CoinbaseStablecoinSwapperInstructions.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/swap/CoinbaseStablecoinSwapperInstructions.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/solana/swap/CrossCurrencyExistingSwapInstructions.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/swap/CrossCurrencyExistingSwapInstructions.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/solana/swap/CrossCurrencyExistingSwapInstructions.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/swap/CrossCurrencyExistingSwapInstructions.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/solana/swap/ExistingCurrencyBuyInstructions.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/swap/ExistingCurrencyBuyInstructions.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/solana/swap/ExistingCurrencyBuyInstructions.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/swap/ExistingCurrencyBuyInstructions.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/solana/swap/NewCurrencyBuyInstructions.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/swap/NewCurrencyBuyInstructions.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/solana/swap/NewCurrencyBuyInstructions.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/swap/NewCurrencyBuyInstructions.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/solana/swap/SellInstructions.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/swap/SellInstructions.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/solana/swap/SellInstructions.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/swap/SellInstructions.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/solana/swap/UsdcDepositInstructions.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/swap/UsdcDepositInstructions.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/solana/swap/UsdcDepositInstructions.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/swap/UsdcDepositInstructions.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/solana/swap/UsdcDepositSweepInstructions.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/swap/UsdcDepositSweepInstructions.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/solana/swap/UsdcDepositSweepInstructions.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/swap/UsdcDepositSweepInstructions.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/solana/swap/UsdcToUsdfSwapInstructions.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/swap/UsdcToUsdfSwapInstructions.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/solana/swap/UsdcToUsdfSwapInstructions.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/swap/UsdcToUsdfSwapInstructions.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/solana/swap/UsdfDepositInstructions.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/swap/UsdfDepositInstructions.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/solana/swap/UsdfDepositInstructions.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/solana/swap/UsdfDepositInstructions.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/utils/Double.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/utils/Double.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/utils/Double.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/utils/Double.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/utils/Flow.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/utils/Flow.kt similarity index 97% rename from services/opencode/src/main/kotlin/com/getcode/opencode/utils/Flow.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/utils/Flow.kt index a13688dd90..71105d7e4e 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/utils/Flow.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/utils/Flow.kt @@ -9,7 +9,7 @@ import kotlinx.coroutines.flow.cancellable import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.flow import kotlinx.coroutines.flow.map -import timber.log.Timber +import com.getcode.utils.Log import kotlin.time.Duration fun tickerFlow(period: Duration): Flow = flow { @@ -37,11 +37,11 @@ fun flowInterval( fun Flow.catchSafely( action: suspend (T) -> Unit, -): Flow = catchSafely(action, onFailure = { Timber.e(it, it.message) }) +): Flow = catchSafely(action, onFailure = { Log.e(it, it.message) }) fun Flow.catchSafely( action: suspend (T) -> Unit, - onFailure: (Throwable) -> Unit = { Timber.e(it, it.message) }, + onFailure: (Throwable) -> Unit = { Log.e(it, it.message) }, ): Flow = map { try { action(it) diff --git a/services/opencode/src/commonMain/kotlin/com/getcode/opencode/utils/KeyPair.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/utils/KeyPair.kt new file mode 100644 index 0000000000..02ccfc96cb --- /dev/null +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/utils/KeyPair.kt @@ -0,0 +1,10 @@ +package com.getcode.opencode.utils + +import com.getcode.crypt.Sha256Hash +import com.getcode.ed25519kmp.Ed25519 +import com.getcode.ed25519kmp.Ed25519.KeyPair + +fun deriveRendezvousKey(from: ByteArray): KeyPair { + // Same key and seed string as the former Base64.DEFAULT-encoded seed. + return Ed25519.createKeyPair(Sha256Hash.hash(from)) +} diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/utils/Long.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/utils/Long.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/utils/Long.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/utils/Long.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/utils/Maps.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/utils/Maps.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/utils/Maps.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/utils/Maps.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/utils/Nonce.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/utils/Nonce.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/utils/Nonce.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/utils/Nonce.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/utils/PublicKey.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/utils/PublicKey.kt similarity index 85% rename from services/opencode/src/main/kotlin/com/getcode/opencode/utils/PublicKey.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/utils/PublicKey.kt index 66fa66dedb..163314eef3 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/utils/PublicKey.kt +++ b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/utils/PublicKey.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.utils -import com.getcode.ed25519.Ed25519 +import com.getcode.ed25519kmp.Ed25519 import com.getcode.opencode.internal.extensions.toPublicKey import com.getcode.solana.keys.PublicKey diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/utils/Result.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/utils/Result.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/utils/Result.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/utils/Result.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/utils/String.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/utils/String.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/utils/String.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/utils/String.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/utils/Throwable.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/utils/Throwable.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/utils/Throwable.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/utils/Throwable.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/utils/logging/LoggingClientCall.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/utils/logging/LoggingClientCall.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/utils/logging/LoggingClientCall.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/utils/logging/LoggingClientCall.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/utils/logging/LoggingClientCallListener.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/utils/logging/LoggingClientCallListener.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/utils/logging/LoggingClientCallListener.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/utils/logging/LoggingClientCallListener.kt diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/utils/logging/LoggingClientInterceptor.kt b/services/opencode/src/commonMain/kotlin/com/getcode/opencode/utils/logging/LoggingClientInterceptor.kt similarity index 100% rename from services/opencode/src/main/kotlin/com/getcode/opencode/utils/logging/LoggingClientInterceptor.kt rename to services/opencode/src/commonMain/kotlin/com/getcode/opencode/utils/logging/LoggingClientInterceptor.kt diff --git a/services/opencode/src/jvmMain/kotlin/com/getcode/opencode/internal/platform/ProcessLifecycle.jvm.kt b/services/opencode/src/jvmMain/kotlin/com/getcode/opencode/internal/platform/ProcessLifecycle.jvm.kt new file mode 100644 index 0000000000..d00eadf201 --- /dev/null +++ b/services/opencode/src/jvmMain/kotlin/com/getcode/opencode/internal/platform/ProcessLifecycle.jvm.kt @@ -0,0 +1,14 @@ +package com.getcode.opencode.internal.platform + +import java.util.concurrent.Executors + +private val dispatcher = Executors.newSingleThreadExecutor { Thread(it, "process-lifecycle").apply { isDaemon = true } } + +/** A desktop process is in the foreground for as long as it runs, so only [onStart] is ever called. */ +internal actual fun observeProcessLifecycle( + immediateOnMain: Boolean, + onStart: () -> Unit, + onStop: () -> Unit, +) { + dispatcher.execute(onStart) +} diff --git a/services/opencode/src/jvmMain/kotlin/com/getcode/opencode/model/core/ScanCodeEncoder.jvm.kt b/services/opencode/src/jvmMain/kotlin/com/getcode/opencode/model/core/ScanCodeEncoder.jvm.kt new file mode 100644 index 0000000000..a5dfcd0b6d --- /dev/null +++ b/services/opencode/src/jvmMain/kotlin/com/getcode/opencode/model/core/ScanCodeEncoder.jvm.kt @@ -0,0 +1,4 @@ +package com.getcode.opencode.model.core + +// The encoder is the JNI library in vendor/kik/scanner, which has no desktop build yet. +internal actual fun encodeScanCode(payload: ByteArray): ByteArray? = null diff --git a/services/opencode/src/jvmTest/kotlin/com/getcode/opencode/HeadlessBalanceTest.kt b/services/opencode/src/jvmTest/kotlin/com/getcode/opencode/HeadlessBalanceTest.kt new file mode 100644 index 0000000000..9b726529b7 --- /dev/null +++ b/services/opencode/src/jvmTest/kotlin/com/getcode/opencode/HeadlessBalanceTest.kt @@ -0,0 +1,51 @@ +package com.getcode.opencode + +import com.getcode.crypt.DerivePath +import com.getcode.crypt.DerivedKey +import com.getcode.crypt.MnemonicPhrase +import com.getcode.opencode.internal.network.api.AccountApi +import com.getcode.opencode.internal.network.services.AccountService +import io.grpc.okhttp.OkHttpChannelBuilder +import kotlinx.coroutines.runBlocking +import org.junit.Assume.assumeTrue +import java.util.concurrent.TimeUnit +import kotlin.test.Test +import kotlin.test.assertTrue + +/** + * Fetches an account's token balances from the live OCP backend on the JVM, with no UI and no DI. + * + * The account's recovery phrase comes from the `FLIPCASH_TEST_MNEMONIC` environment variable or the + * `flipcash.test.mnemonic` entry in `local.properties`. The test is skipped when neither is set, and + * never prints the phrase or any key. + */ +class HeadlessBalanceTest { + + @Test + fun fetchesBalancesFromBackend() = runBlocking { + val words = System.getenv("FLIPCASH_TEST_MNEMONIC") + ?: System.getProperty("flipcash.test.mnemonic") + assumeTrue("no test mnemonic configured", !words.isNullOrBlank()) + + val mnemonic = requireNotNull(MnemonicPhrase.newInstance(words!!.trim().split(Regex("\\s+")))) { + "test mnemonic is not a valid phrase" + } + val owner = DerivedKey.derive(DerivePath.primary, mnemonic).keyPair + + val channel = OkHttpChannelBuilder.forAddress("ocp-v2.api.flipcash-infra.net", 443) + .userAgent("OpenCodeProtocol/Desktop/spike") + .build() + try { + val service = AccountService(AccountApi(channel)) + val response = service.getAccounts(owner, owner).getOrThrow() + + assertTrue(response.accounts.isNotEmpty(), "backend returned no token accounts") + val balances = response.accounts.values + .groupBy { it.mint } + .mapValues { (_, infos) -> infos.sumOf { it.balance } } + println("token accounts: ${response.accounts.size}, balance by mint (quarks): $balances") + } finally { + channel.shutdownNow().awaitTermination(5, TimeUnit.SECONDS) + } + } +} diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/core/GrpcApi.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/core/GrpcApi.kt deleted file mode 100644 index 22906ddb98..0000000000 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/core/GrpcApi.kt +++ /dev/null @@ -1,39 +0,0 @@ -package com.getcode.opencode.internal.network.core - -import android.os.Handler -import android.os.Looper -import androidx.lifecycle.DefaultLifecycleObserver -import androidx.lifecycle.LifecycleOwner -import androidx.lifecycle.ProcessLifecycleOwner -import io.grpc.ManagedChannel - -abstract class GrpcApi(protected val managedChannels: List): DefaultLifecycleObserver { - - constructor(managedChannel: ManagedChannel): this(listOf(managedChannel)) - constructor(vararg managedChannels: ManagedChannel): this(managedChannels.toList()) - - init { - // LifecycleRegistry.addObserver rejects any thread but the main one, so registering here - // directly would pin construction of every api -- and so of the whole object graph hanging off - // them -- to the main thread. Posting keeps that off the startup path. addObserver replays the - // current state, so a registration that lands after the process is already started still warms - // the channel. - val register = Runnable { ProcessLifecycleOwner.get().lifecycle.addObserver(this) } - if (Looper.myLooper() == Looper.getMainLooper()) { - register.run() - } else { - Handler(Looper.getMainLooper()).post(register) - } - } - - override fun onStart(owner: LifecycleOwner) { - super.onStart(owner) - warmUp() - } - - private fun warmUp() { - // getState(true) requests a connection attempt if idle, - // pre-connecting TCP + TLS + HTTP/2 in the background - managedChannels.onEach { it.getState(true) } - } -} diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/utils/KeyPair.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/utils/KeyPair.kt deleted file mode 100644 index e8d987a1fb..0000000000 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/utils/KeyPair.kt +++ /dev/null @@ -1,10 +0,0 @@ -package com.getcode.opencode.utils - -import android.util.Base64 -import com.getcode.crypt.Sha256Hash -import com.getcode.ed25519.Ed25519 -import com.getcode.ed25519.Ed25519.KeyPair - -fun deriveRendezvousKey(from: ByteArray): KeyPair { - return Ed25519.createKeyPair(Base64.encodeToString(Sha256Hash.hash(from), Base64.DEFAULT)) -} \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index ce47d2b015..99cf20e5ba 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -201,6 +201,8 @@ include( ":libs:codes:kikcode", ":libs:coroutines", ":libs:coroutines:test-fixtures", + ":libs:parcelable", + ":libs:currency-math:test-fixtures", ":libs:crypto:kin", ":libs:crypto:solana", ":libs:currency", @@ -252,6 +254,7 @@ include( ":services:opencode", ":services:opencode-compose", ":services:flipcash", + ":services:flipcash:test-fixtures", ":services:flipcash-compose", // common UI @@ -260,6 +263,7 @@ include( ":ui:components", ":ui:navigation", ":ui:resources", + ":ui:resources:test-fixtures", ":ui:scanner", ":ui:testing", ":ui:theme", diff --git a/ui/resources/build.gradle.kts b/ui/resources/build.gradle.kts index cd0dc3c181..47fa09cfd2 100644 --- a/ui/resources/build.gradle.kts +++ b/ui/resources/build.gradle.kts @@ -1,22 +1,29 @@ plugins { - alias(libs.plugins.flipcash.android.library.compose) + alias(libs.plugins.flipcash.kmp.app.library) + alias(libs.plugins.compose.compiler) } -android { - namespace = "${Gradle.codeNamespace}.util.resources" - testFixtures { - enable = true +kotlin { + android { + namespace = "${Gradle.codeNamespace}.util.resources" + androidResources { + enable = true + } } -} - -dependencies { - testFixturesImplementation(platform(libs.compose.bom)) - testFixturesImplementation(libs.compose.ui) - api(libs.androidx.annotation) - api(libs.androidx.appcompat) - api(libs.androidx.core) - implementation(libs.androidx.exifinterface) - api(libs.kotlin.stdlib) - api(libs.kotlinx.coroutines.core) + sourceSets { + commonMain.dependencies { + api(libs.androidx.annotation) + api(libs.kotlin.stdlib) + api(libs.kotlinx.coroutines.core) + api(libs.jetbrains.compose.runtime) + api(libs.jetbrains.compose.ui) + } + androidMain.dependencies { + api(libs.androidx.appcompat) + api(libs.androidx.core) + implementation(libs.androidx.exifinterface) + implementation(libs.timber) + } + } } diff --git a/ui/resources/src/androidMain/kotlin/com/getcode/util/resources/AndroidResourceHelper.kt b/ui/resources/src/androidMain/kotlin/com/getcode/util/resources/AndroidResourceHelper.kt new file mode 100644 index 0000000000..8018d3268a --- /dev/null +++ b/ui/resources/src/androidMain/kotlin/com/getcode/util/resources/AndroidResourceHelper.kt @@ -0,0 +1,19 @@ +package com.getcode.util.resources + +import android.graphics.Typeface +import android.graphics.drawable.Drawable +import android.util.DisplayMetrics +import androidx.annotation.DrawableRes +import androidx.annotation.FontRes +import java.io.File + +/** The [ResourceHelper] members that return Android types. */ +interface AndroidResourceHelper : ResourceHelper { + fun getDir(name: String, mode: Int): File? + + val displayMetrics: DisplayMetrics + + fun getDrawable(@DrawableRes drawableResId: Int): Drawable? + + fun getFont(@FontRes fontResId: Int): Typeface? +} diff --git a/ui/resources/src/main/java/com/getcode/util/resources/AndroidResources.kt b/ui/resources/src/androidMain/kotlin/com/getcode/util/resources/AndroidResources.kt similarity index 99% rename from ui/resources/src/main/java/com/getcode/util/resources/AndroidResources.kt rename to ui/resources/src/androidMain/kotlin/com/getcode/util/resources/AndroidResources.kt index a2fc26c4f4..db84bf05b6 100644 --- a/ui/resources/src/main/java/com/getcode/util/resources/AndroidResources.kt +++ b/ui/resources/src/androidMain/kotlin/com/getcode/util/resources/AndroidResources.kt @@ -15,7 +15,7 @@ import java.io.File class AndroidResources( private val context: Context, -) : ResourceHelper { +) : AndroidResourceHelper { override fun getString(@StringRes resourceId: Int): String { return context.getString(resourceId) diff --git a/ui/resources/src/main/java/com/getcode/util/resources/AndroidSettingsHelper.kt b/ui/resources/src/androidMain/kotlin/com/getcode/util/resources/AndroidSettingsHelper.kt similarity index 100% rename from ui/resources/src/main/java/com/getcode/util/resources/AndroidSettingsHelper.kt rename to ui/resources/src/androidMain/kotlin/com/getcode/util/resources/AndroidSettingsHelper.kt diff --git a/ui/resources/src/main/java/com/getcode/util/resources/ContentReader.kt b/ui/resources/src/androidMain/kotlin/com/getcode/util/resources/ContentReader.kt similarity index 100% rename from ui/resources/src/main/java/com/getcode/util/resources/ContentReader.kt rename to ui/resources/src/androidMain/kotlin/com/getcode/util/resources/ContentReader.kt diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_bill_globe.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_bill_globe.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_bill_globe.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_bill_globe.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_bill_grid.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_bill_grid.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_bill_grid.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_bill_grid.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_bill_hexagons.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_bill_hexagons.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_bill_hexagons.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_bill_hexagons.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_bill_security_strip.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_bill_security_strip.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_bill_security_strip.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_bill_security_strip.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_bill_waves.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_bill_waves.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_bill_waves.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_bill_waves.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_ad.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ad.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_ad.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ad.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_ae.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ae.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_ae.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ae.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_af.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_af.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_af.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_af.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_ag.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ag.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_ag.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ag.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_ai.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ai.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_ai.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ai.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_al.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_al.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_al.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_al.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_am.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_am.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_am.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_am.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_an.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_an.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_an.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_an.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_ao.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ao.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_ao.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ao.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_aq.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_aq.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_aq.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_aq.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_ar.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ar.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_ar.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ar.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_as.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_as.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_as.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_as.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_at.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_at.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_at.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_at.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_au.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_au.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_au.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_au.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_aw.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_aw.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_aw.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_aw.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_ax.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ax.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_ax.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ax.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_az.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_az.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_az.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_az.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_ba.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ba.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_ba.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ba.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_bb.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_bb.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_bb.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_bb.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_bd.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_bd.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_bd.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_bd.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_be.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_be.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_be.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_be.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_bf.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_bf.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_bf.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_bf.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_bg.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_bg.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_bg.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_bg.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_bh.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_bh.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_bh.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_bh.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_bi.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_bi.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_bi.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_bi.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_bj.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_bj.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_bj.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_bj.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_bl.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_bl.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_bl.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_bl.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_bm.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_bm.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_bm.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_bm.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_bn.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_bn.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_bn.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_bn.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_bo.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_bo.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_bo.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_bo.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_bq.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_bq.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_bq.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_bq.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_br.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_br.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_br.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_br.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_bs.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_bs.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_bs.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_bs.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_bt.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_bt.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_bt.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_bt.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_bv.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_bv.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_bv.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_bv.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_bw.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_bw.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_bw.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_bw.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_by.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_by.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_by.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_by.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_bz.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_bz.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_bz.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_bz.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_ca.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ca.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_ca.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ca.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_cc.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_cc.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_cc.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_cc.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_cd.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_cd.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_cd.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_cd.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_cf.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_cf.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_cf.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_cf.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_cg.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_cg.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_cg.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_cg.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_ch.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ch.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_ch.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ch.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_ci.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ci.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_ci.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ci.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_ck.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ck.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_ck.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ck.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_cl.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_cl.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_cl.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_cl.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_cm.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_cm.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_cm.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_cm.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_cn.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_cn.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_cn.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_cn.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_co.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_co.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_co.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_co.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_cr.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_cr.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_cr.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_cr.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_cu.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_cu.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_cu.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_cu.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_cv.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_cv.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_cv.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_cv.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_cw.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_cw.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_cw.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_cw.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_cx.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_cx.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_cx.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_cx.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_cy.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_cy.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_cy.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_cy.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_cz.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_cz.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_cz.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_cz.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_de.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_de.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_de.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_de.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_dj.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_dj.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_dj.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_dj.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_dk.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_dk.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_dk.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_dk.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_dm.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_dm.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_dm.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_dm.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_do.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_do.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_do.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_do.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_dz.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_dz.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_dz.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_dz.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_ec.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ec.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_ec.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ec.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_ee.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ee.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_ee.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ee.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_eg.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_eg.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_eg.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_eg.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_eh.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_eh.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_eh.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_eh.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_eo.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_eo.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_eo.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_eo.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_er.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_er.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_er.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_er.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_es.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_es.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_es.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_es.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_et.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_et.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_et.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_et.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_eu.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_eu.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_eu.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_eu.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_fi.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_fi.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_fi.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_fi.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_fj.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_fj.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_fj.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_fj.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_fk.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_fk.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_fk.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_fk.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_fm.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_fm.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_fm.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_fm.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_fo.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_fo.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_fo.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_fo.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_fr.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_fr.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_fr.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_fr.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_ga.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ga.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_ga.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ga.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_gb.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_gb.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_gb.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_gb.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_gd.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_gd.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_gd.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_gd.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_ge.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ge.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_ge.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ge.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_gf.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_gf.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_gf.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_gf.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_gg.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_gg.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_gg.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_gg.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_gh.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_gh.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_gh.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_gh.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_gi.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_gi.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_gi.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_gi.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_gl.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_gl.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_gl.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_gl.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_gm.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_gm.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_gm.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_gm.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_gn.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_gn.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_gn.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_gn.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_gp.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_gp.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_gp.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_gp.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_gq.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_gq.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_gq.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_gq.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_gr.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_gr.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_gr.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_gr.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_gs.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_gs.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_gs.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_gs.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_gt.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_gt.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_gt.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_gt.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_gu.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_gu.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_gu.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_gu.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_gw.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_gw.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_gw.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_gw.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_gy.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_gy.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_gy.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_gy.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_hk.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_hk.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_hk.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_hk.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_hm.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_hm.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_hm.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_hm.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_hn.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_hn.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_hn.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_hn.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_hr.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_hr.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_hr.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_hr.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_ht.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ht.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_ht.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ht.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_hu.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_hu.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_hu.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_hu.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_id.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_id.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_id.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_id.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_ie.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ie.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_ie.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ie.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_il.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_il.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_il.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_il.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_im.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_im.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_im.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_im.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_in.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_in.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_in.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_in.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_io.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_io.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_io.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_io.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_iq.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_iq.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_iq.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_iq.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_ir.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ir.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_ir.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ir.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_is.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_is.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_is.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_is.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_it.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_it.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_it.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_it.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_je.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_je.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_je.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_je.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_jm.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_jm.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_jm.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_jm.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_jo.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_jo.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_jo.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_jo.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_jp.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_jp.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_jp.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_jp.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_ke.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ke.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_ke.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ke.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_kg.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_kg.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_kg.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_kg.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_kh.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_kh.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_kh.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_kh.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_ki.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ki.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_ki.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ki.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_km.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_km.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_km.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_km.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_kn.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_kn.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_kn.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_kn.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_kp.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_kp.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_kp.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_kp.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_kr.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_kr.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_kr.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_kr.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_kw.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_kw.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_kw.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_kw.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_ky.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ky.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_ky.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ky.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_kz.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_kz.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_kz.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_kz.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_la.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_la.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_la.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_la.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_lb.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_lb.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_lb.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_lb.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_lc.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_lc.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_lc.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_lc.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_li.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_li.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_li.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_li.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_lk.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_lk.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_lk.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_lk.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_lr.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_lr.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_lr.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_lr.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_ls.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ls.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_ls.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ls.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_lt.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_lt.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_lt.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_lt.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_lu.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_lu.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_lu.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_lu.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_lv.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_lv.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_lv.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_lv.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_ly.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ly.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_ly.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ly.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_ma.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ma.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_ma.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ma.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_mc.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_mc.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_mc.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_mc.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_md.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_md.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_md.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_md.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_me.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_me.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_me.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_me.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_mf.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_mf.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_mf.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_mf.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_mg.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_mg.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_mg.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_mg.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_mh.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_mh.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_mh.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_mh.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_mk.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_mk.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_mk.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_mk.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_ml.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ml.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_ml.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ml.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_mm.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_mm.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_mm.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_mm.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_mn.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_mn.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_mn.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_mn.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_mo.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_mo.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_mo.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_mo.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_mp.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_mp.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_mp.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_mp.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_mq.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_mq.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_mq.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_mq.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_mr.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_mr.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_mr.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_mr.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_ms.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ms.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_ms.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ms.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_mt.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_mt.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_mt.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_mt.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_mu.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_mu.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_mu.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_mu.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_mv.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_mv.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_mv.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_mv.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_mw.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_mw.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_mw.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_mw.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_mx.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_mx.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_mx.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_mx.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_my.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_my.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_my.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_my.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_mz.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_mz.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_mz.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_mz.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_na.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_na.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_na.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_na.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_nc.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_nc.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_nc.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_nc.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_ne.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ne.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_ne.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ne.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_nf.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_nf.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_nf.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_nf.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_ng.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ng.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_ng.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ng.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_ni.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ni.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_ni.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ni.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_nl.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_nl.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_nl.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_nl.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_no.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_no.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_no.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_no.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_np.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_np.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_np.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_np.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_nr.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_nr.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_nr.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_nr.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_nu.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_nu.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_nu.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_nu.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_nz.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_nz.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_nz.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_nz.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_om.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_om.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_om.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_om.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_pa.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_pa.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_pa.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_pa.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_pe.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_pe.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_pe.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_pe.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_pf.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_pf.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_pf.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_pf.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_pg.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_pg.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_pg.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_pg.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_ph.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ph.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_ph.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ph.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_pk.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_pk.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_pk.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_pk.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_pl.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_pl.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_pl.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_pl.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_pm.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_pm.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_pm.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_pm.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_pn.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_pn.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_pn.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_pn.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_pr.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_pr.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_pr.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_pr.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_ps.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ps.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_ps.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ps.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_pt.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_pt.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_pt.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_pt.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_pw.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_pw.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_pw.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_pw.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_py.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_py.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_py.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_py.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_qa.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_qa.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_qa.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_qa.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_re.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_re.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_re.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_re.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_ro.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ro.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_ro.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ro.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_rs.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_rs.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_rs.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_rs.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_ru.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ru.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_ru.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ru.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_rw.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_rw.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_rw.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_rw.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_sa.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_sa.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_sa.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_sa.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_sb.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_sb.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_sb.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_sb.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_sc.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_sc.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_sc.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_sc.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_sd.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_sd.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_sd.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_sd.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_se.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_se.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_se.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_se.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_sg.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_sg.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_sg.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_sg.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_sh.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_sh.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_sh.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_sh.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_si.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_si.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_si.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_si.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_sj.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_sj.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_sj.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_sj.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_sk.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_sk.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_sk.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_sk.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_sl.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_sl.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_sl.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_sl.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_sm.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_sm.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_sm.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_sm.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_sn.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_sn.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_sn.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_sn.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_so.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_so.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_so.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_so.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_sr.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_sr.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_sr.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_sr.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_ss.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ss.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_ss.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ss.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_st.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_st.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_st.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_st.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_sv.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_sv.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_sv.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_sv.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_sx.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_sx.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_sx.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_sx.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_sy.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_sy.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_sy.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_sy.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_sz.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_sz.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_sz.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_sz.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_tc.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_tc.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_tc.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_tc.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_td.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_td.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_td.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_td.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_tf.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_tf.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_tf.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_tf.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_tg.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_tg.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_tg.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_tg.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_th.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_th.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_th.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_th.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_tj.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_tj.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_tj.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_tj.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_tk.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_tk.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_tk.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_tk.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_tl.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_tl.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_tl.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_tl.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_tm.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_tm.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_tm.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_tm.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_tn.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_tn.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_tn.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_tn.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_to.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_to.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_to.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_to.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_tr.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_tr.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_tr.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_tr.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_tt.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_tt.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_tt.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_tt.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_tv.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_tv.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_tv.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_tv.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_tw.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_tw.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_tw.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_tw.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_tz.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_tz.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_tz.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_tz.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_ua.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ua.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_ua.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ua.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_ug.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ug.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_ug.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ug.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_um.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_um.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_um.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_um.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_us.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_us.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_us.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_us.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_uy.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_uy.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_uy.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_uy.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_uz.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_uz.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_uz.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_uz.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_va.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_va.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_va.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_va.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_vc.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_vc.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_vc.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_vc.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_ve.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ve.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_ve.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ve.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_vg.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_vg.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_vg.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_vg.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_vi.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_vi.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_vi.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_vi.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_vn.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_vn.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_vn.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_vn.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_vu.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_vu.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_vu.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_vu.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_wf.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_wf.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_wf.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_wf.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_ws.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ws.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_ws.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ws.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_ye.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ye.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_ye.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_ye.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_yt.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_yt.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_yt.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_yt.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_za.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_za.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_za.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_za.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_zm.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_zm.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_zm.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_zm.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_zw.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_zw.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_zw.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_zw.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_flag_zz.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_zz.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_flag_zz.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_flag_zz.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/ic_placeholder_user.webp b/ui/resources/src/androidMain/res/drawable-nodpi/ic_placeholder_user.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/ic_placeholder_user.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/ic_placeholder_user.webp diff --git a/ui/resources/src/main/res/drawable-nodpi/video_sell_kin_2x.webp b/ui/resources/src/androidMain/res/drawable-nodpi/video_sell_kin_2x.webp similarity index 100% rename from ui/resources/src/main/res/drawable-nodpi/video_sell_kin_2x.webp rename to ui/resources/src/androidMain/res/drawable-nodpi/video_sell_kin_2x.webp diff --git a/ui/resources/src/main/res/drawable-xhdpi/ic_bill_grid.webp b/ui/resources/src/androidMain/res/drawable-xhdpi/ic_bill_grid.webp similarity index 100% rename from ui/resources/src/main/res/drawable-xhdpi/ic_bill_grid.webp rename to ui/resources/src/androidMain/res/drawable-xhdpi/ic_bill_grid.webp diff --git a/ui/resources/src/main/res/drawable-xhdpi/ic_bill_hexagons.webp b/ui/resources/src/androidMain/res/drawable-xhdpi/ic_bill_hexagons.webp similarity index 100% rename from ui/resources/src/main/res/drawable-xhdpi/ic_bill_hexagons.webp rename to ui/resources/src/androidMain/res/drawable-xhdpi/ic_bill_hexagons.webp diff --git a/ui/resources/src/main/res/drawable-xxhdpi/ic_bill_grid.webp b/ui/resources/src/androidMain/res/drawable-xxhdpi/ic_bill_grid.webp similarity index 100% rename from ui/resources/src/main/res/drawable-xxhdpi/ic_bill_grid.webp rename to ui/resources/src/androidMain/res/drawable-xxhdpi/ic_bill_grid.webp diff --git a/ui/resources/src/main/res/drawable-xxhdpi/ic_bill_hexagons.webp b/ui/resources/src/androidMain/res/drawable-xxhdpi/ic_bill_hexagons.webp similarity index 100% rename from ui/resources/src/main/res/drawable-xxhdpi/ic_bill_hexagons.webp rename to ui/resources/src/androidMain/res/drawable-xxhdpi/ic_bill_hexagons.webp diff --git a/ui/resources/src/main/res/drawable-xxxhdpi/ic_bill_grid.webp b/ui/resources/src/androidMain/res/drawable-xxxhdpi/ic_bill_grid.webp similarity index 100% rename from ui/resources/src/main/res/drawable-xxxhdpi/ic_bill_grid.webp rename to ui/resources/src/androidMain/res/drawable-xxxhdpi/ic_bill_grid.webp diff --git a/ui/resources/src/main/res/drawable-xxxhdpi/ic_bill_hexagons.webp b/ui/resources/src/androidMain/res/drawable-xxxhdpi/ic_bill_hexagons.webp similarity index 100% rename from ui/resources/src/main/res/drawable-xxxhdpi/ic_bill_hexagons.webp rename to ui/resources/src/androidMain/res/drawable-xxxhdpi/ic_bill_hexagons.webp diff --git a/ui/resources/src/main/res/drawable/ic_android_icon.xml b/ui/resources/src/androidMain/res/drawable/ic_android_icon.xml similarity index 100% rename from ui/resources/src/main/res/drawable/ic_android_icon.xml rename to ui/resources/src/androidMain/res/drawable/ic_android_icon.xml diff --git a/ui/resources/src/main/res/drawable/ic_apple_icon.xml b/ui/resources/src/androidMain/res/drawable/ic_apple_icon.xml similarity index 100% rename from ui/resources/src/main/res/drawable/ic_apple_icon.xml rename to ui/resources/src/androidMain/res/drawable/ic_apple_icon.xml diff --git a/ui/resources/src/main/res/drawable/ic_arrow_back.xml b/ui/resources/src/androidMain/res/drawable/ic_arrow_back.xml similarity index 100% rename from ui/resources/src/main/res/drawable/ic_arrow_back.xml rename to ui/resources/src/androidMain/res/drawable/ic_arrow_back.xml diff --git a/ui/resources/src/main/res/drawable/ic_bezier_curve.xml b/ui/resources/src/androidMain/res/drawable/ic_bezier_curve.xml similarity index 100% rename from ui/resources/src/main/res/drawable/ic_bezier_curve.xml rename to ui/resources/src/androidMain/res/drawable/ic_bezier_curve.xml diff --git a/ui/resources/src/main/res/drawable/ic_bill_close.xml b/ui/resources/src/androidMain/res/drawable/ic_bill_close.xml similarity index 100% rename from ui/resources/src/main/res/drawable/ic_bill_close.xml rename to ui/resources/src/androidMain/res/drawable/ic_bill_close.xml diff --git a/ui/resources/src/main/res/drawable/ic_chain_link.xml b/ui/resources/src/androidMain/res/drawable/ic_chain_link.xml similarity index 100% rename from ui/resources/src/main/res/drawable/ic_chain_link.xml rename to ui/resources/src/androidMain/res/drawable/ic_chain_link.xml diff --git a/ui/resources/src/main/res/drawable/ic_chat.xml b/ui/resources/src/androidMain/res/drawable/ic_chat.xml similarity index 100% rename from ui/resources/src/main/res/drawable/ic_chat.xml rename to ui/resources/src/androidMain/res/drawable/ic_chat.xml diff --git a/ui/resources/src/main/res/drawable/ic_check.xml b/ui/resources/src/androidMain/res/drawable/ic_check.xml similarity index 100% rename from ui/resources/src/main/res/drawable/ic_check.xml rename to ui/resources/src/androidMain/res/drawable/ic_check.xml diff --git a/ui/resources/src/main/res/drawable/ic_check_circle.xml b/ui/resources/src/androidMain/res/drawable/ic_check_circle.xml similarity index 100% rename from ui/resources/src/main/res/drawable/ic_check_circle.xml rename to ui/resources/src/androidMain/res/drawable/ic_check_circle.xml diff --git a/ui/resources/src/main/res/drawable/ic_check_white.xml b/ui/resources/src/androidMain/res/drawable/ic_check_white.xml similarity index 100% rename from ui/resources/src/main/res/drawable/ic_check_white.xml rename to ui/resources/src/androidMain/res/drawable/ic_check_white.xml diff --git a/ui/resources/src/main/res/drawable/ic_checked_blue.xml b/ui/resources/src/androidMain/res/drawable/ic_checked_blue.xml similarity index 100% rename from ui/resources/src/main/res/drawable/ic_checked_blue.xml rename to ui/resources/src/androidMain/res/drawable/ic_checked_blue.xml diff --git a/ui/resources/src/main/res/drawable/ic_checked_green.xml b/ui/resources/src/androidMain/res/drawable/ic_checked_green.xml similarity index 100% rename from ui/resources/src/main/res/drawable/ic_checked_green.xml rename to ui/resources/src/androidMain/res/drawable/ic_checked_green.xml diff --git a/ui/resources/src/main/res/drawable/ic_chevron_left.xml b/ui/resources/src/androidMain/res/drawable/ic_chevron_left.xml similarity index 100% rename from ui/resources/src/main/res/drawable/ic_chevron_left.xml rename to ui/resources/src/androidMain/res/drawable/ic_chevron_left.xml diff --git a/ui/resources/src/main/res/drawable/ic_chevron_right.xml b/ui/resources/src/androidMain/res/drawable/ic_chevron_right.xml similarity index 100% rename from ui/resources/src/main/res/drawable/ic_chevron_right.xml rename to ui/resources/src/androidMain/res/drawable/ic_chevron_right.xml diff --git a/ui/resources/src/main/res/drawable/ic_copy.xml b/ui/resources/src/androidMain/res/drawable/ic_copy.xml similarity index 100% rename from ui/resources/src/main/res/drawable/ic_copy.xml rename to ui/resources/src/androidMain/res/drawable/ic_copy.xml diff --git a/ui/resources/src/main/res/drawable/ic_crown.xml b/ui/resources/src/androidMain/res/drawable/ic_crown.xml similarity index 100% rename from ui/resources/src/main/res/drawable/ic_crown.xml rename to ui/resources/src/androidMain/res/drawable/ic_crown.xml diff --git a/ui/resources/src/main/res/drawable/ic_delete.xml b/ui/resources/src/androidMain/res/drawable/ic_delete.xml similarity index 100% rename from ui/resources/src/main/res/drawable/ic_delete.xml rename to ui/resources/src/androidMain/res/drawable/ic_delete.xml diff --git a/ui/resources/src/main/res/drawable/ic_dropdown.xml b/ui/resources/src/androidMain/res/drawable/ic_dropdown.xml similarity index 100% rename from ui/resources/src/main/res/drawable/ic_dropdown.xml rename to ui/resources/src/androidMain/res/drawable/ic_dropdown.xml diff --git a/ui/resources/src/main/res/drawable/ic_exclamation_octagon_fill.xml b/ui/resources/src/androidMain/res/drawable/ic_exclamation_octagon_fill.xml similarity index 100% rename from ui/resources/src/main/res/drawable/ic_exclamation_octagon_fill.xml rename to ui/resources/src/androidMain/res/drawable/ic_exclamation_octagon_fill.xml diff --git a/ui/resources/src/main/res/drawable/ic_file_bend.xml b/ui/resources/src/androidMain/res/drawable/ic_file_bend.xml similarity index 100% rename from ui/resources/src/main/res/drawable/ic_file_bend.xml rename to ui/resources/src/androidMain/res/drawable/ic_file_bend.xml diff --git a/ui/resources/src/main/res/drawable/ic_file_download.xml b/ui/resources/src/androidMain/res/drawable/ic_file_download.xml similarity index 100% rename from ui/resources/src/main/res/drawable/ic_file_download.xml rename to ui/resources/src/androidMain/res/drawable/ic_file_download.xml diff --git a/ui/resources/src/main/res/drawable/ic_kin_brand.xml b/ui/resources/src/androidMain/res/drawable/ic_kin_brand.xml similarity index 100% rename from ui/resources/src/main/res/drawable/ic_kin_brand.xml rename to ui/resources/src/androidMain/res/drawable/ic_kin_brand.xml diff --git a/ui/resources/src/main/res/drawable/ic_kin_red.xml b/ui/resources/src/androidMain/res/drawable/ic_kin_red.xml similarity index 100% rename from ui/resources/src/main/res/drawable/ic_kin_red.xml rename to ui/resources/src/androidMain/res/drawable/ic_kin_red.xml diff --git a/ui/resources/src/main/res/drawable/ic_kin_white.xml b/ui/resources/src/androidMain/res/drawable/ic_kin_white.xml similarity index 100% rename from ui/resources/src/main/res/drawable/ic_kin_white.xml rename to ui/resources/src/androidMain/res/drawable/ic_kin_white.xml diff --git a/ui/resources/src/main/res/drawable/ic_kin_white_outline.xml b/ui/resources/src/androidMain/res/drawable/ic_kin_white_outline.xml similarity index 100% rename from ui/resources/src/main/res/drawable/ic_kin_white_outline.xml rename to ui/resources/src/androidMain/res/drawable/ic_kin_white_outline.xml diff --git a/ui/resources/src/main/res/drawable/ic_kin_white_small.xml b/ui/resources/src/androidMain/res/drawable/ic_kin_white_small.xml similarity index 100% rename from ui/resources/src/main/res/drawable/ic_kin_white_small.xml rename to ui/resources/src/androidMain/res/drawable/ic_kin_white_small.xml diff --git a/ui/resources/src/main/res/drawable/ic_remote_send.xml b/ui/resources/src/androidMain/res/drawable/ic_remote_send.xml similarity index 100% rename from ui/resources/src/main/res/drawable/ic_remote_send.xml rename to ui/resources/src/androidMain/res/drawable/ic_remote_send.xml diff --git a/ui/resources/src/main/res/drawable/ic_settings_outline.xml b/ui/resources/src/androidMain/res/drawable/ic_settings_outline.xml similarity index 100% rename from ui/resources/src/main/res/drawable/ic_settings_outline.xml rename to ui/resources/src/androidMain/res/drawable/ic_settings_outline.xml diff --git a/ui/resources/src/main/res/drawable/ic_share_os.xml b/ui/resources/src/androidMain/res/drawable/ic_share_os.xml similarity index 100% rename from ui/resources/src/main/res/drawable/ic_share_os.xml rename to ui/resources/src/androidMain/res/drawable/ic_share_os.xml diff --git a/ui/resources/src/main/res/drawable/ic_twitter_x.xml b/ui/resources/src/androidMain/res/drawable/ic_twitter_x.xml similarity index 100% rename from ui/resources/src/main/res/drawable/ic_twitter_x.xml rename to ui/resources/src/androidMain/res/drawable/ic_twitter_x.xml diff --git a/ui/resources/src/main/res/drawable/ic_unchecked.xml b/ui/resources/src/androidMain/res/drawable/ic_unchecked.xml similarity index 100% rename from ui/resources/src/main/res/drawable/ic_unchecked.xml rename to ui/resources/src/androidMain/res/drawable/ic_unchecked.xml diff --git a/ui/resources/src/main/res/drawable/ic_wifi_slash.xml b/ui/resources/src/androidMain/res/drawable/ic_wifi_slash.xml similarity index 100% rename from ui/resources/src/main/res/drawable/ic_wifi_slash.xml rename to ui/resources/src/androidMain/res/drawable/ic_wifi_slash.xml diff --git a/ui/resources/src/main/res/drawable/ic_x_octagon_fill.xml b/ui/resources/src/androidMain/res/drawable/ic_x_octagon_fill.xml similarity index 100% rename from ui/resources/src/main/res/drawable/ic_x_octagon_fill.xml rename to ui/resources/src/androidMain/res/drawable/ic_x_octagon_fill.xml diff --git a/ui/resources/src/main/res/drawable/ic_xmark_red.xml b/ui/resources/src/androidMain/res/drawable/ic_xmark_red.xml similarity index 100% rename from ui/resources/src/main/res/drawable/ic_xmark_red.xml rename to ui/resources/src/androidMain/res/drawable/ic_xmark_red.xml diff --git a/ui/resources/src/main/res/values/strings-localized.xml b/ui/resources/src/androidMain/res/values/strings-localized.xml similarity index 100% rename from ui/resources/src/main/res/values/strings-localized.xml rename to ui/resources/src/androidMain/res/values/strings-localized.xml diff --git a/ui/resources/src/main/res/values/strings.xml b/ui/resources/src/androidMain/res/values/strings.xml similarity index 100% rename from ui/resources/src/main/res/values/strings.xml rename to ui/resources/src/androidMain/res/values/strings.xml diff --git a/ui/resources/src/main/java/com/getcode/util/resources/ResourceHelper.kt b/ui/resources/src/commonMain/kotlin/com/getcode/util/resources/ResourceHelper.kt similarity index 72% rename from ui/resources/src/main/java/com/getcode/util/resources/ResourceHelper.kt rename to ui/resources/src/commonMain/kotlin/com/getcode/util/resources/ResourceHelper.kt index f129e1b0ff..fb339aa961 100644 --- a/ui/resources/src/main/java/com/getcode/util/resources/ResourceHelper.kt +++ b/ui/resources/src/commonMain/kotlin/com/getcode/util/resources/ResourceHelper.kt @@ -1,17 +1,17 @@ package com.getcode.util.resources -import android.graphics.Typeface -import android.graphics.drawable.Drawable -import android.util.DisplayMetrics import androidx.annotation.DimenRes -import androidx.annotation.DrawableRes -import androidx.annotation.FontRes import androidx.annotation.PluralsRes import androidx.annotation.RawRes import androidx.annotation.StringRes import androidx.compose.runtime.staticCompositionLocalOf -import java.io.File +/** + * Looks up app resources by their Android resource ID. + * + * Members that return Android types (`Drawable`, `Typeface`, `DisplayMetrics`, `getDir`) live on + * `AndroidResourceHelper` in androidMain. + */ interface ResourceHelper { fun getString(@StringRes resourceId: Int): String @@ -29,15 +29,7 @@ interface ResourceHelper { fun getDimension(@DimenRes dimenId: Int, default: Float = 0f): Float fun getDimensionPixelSize(@DimenRes dimenId: Int, default: Int = 0): Int - fun getDir(name: String, mode: Int): File? - - val displayMetrics: DisplayMetrics - - fun getDrawable(@DrawableRes drawableResId: Int): Drawable? - fun getIdentifier(name: String, type: ResourceType): Int? - - fun getFont(@FontRes fontResId: Int): Typeface? } sealed interface ResourceType { @@ -70,15 +62,5 @@ private object NoOpResources : ResourceHelper { override fun getDimensionPixelSize(dimenId: Int, default: Int): Int = 0 - override fun getDir(name: String, mode: Int): File? = null - - override val displayMetrics: DisplayMetrics - get() = TODO("Not yet implemented") - - override fun getDrawable(drawableResId: Int): Drawable? = null - override fun getIdentifier(name: String, type: ResourceType): Int? = null - - override fun getFont(fontResId: Int): Typeface? = null - } \ No newline at end of file diff --git a/ui/resources/src/main/java/com/getcode/util/resources/SettingsHelper.kt b/ui/resources/src/commonMain/kotlin/com/getcode/util/resources/SettingsHelper.kt similarity index 100% rename from ui/resources/src/main/java/com/getcode/util/resources/SettingsHelper.kt rename to ui/resources/src/commonMain/kotlin/com/getcode/util/resources/SettingsHelper.kt diff --git a/ui/resources/src/main/java/com/getcode/util/resources/icons/Delete.kt b/ui/resources/src/commonMain/kotlin/com/getcode/util/resources/icons/Delete.kt similarity index 100% rename from ui/resources/src/main/java/com/getcode/util/resources/icons/Delete.kt rename to ui/resources/src/commonMain/kotlin/com/getcode/util/resources/icons/Delete.kt diff --git a/ui/resources/src/main/java/com/getcode/util/resources/icons/ImageVector.kt b/ui/resources/src/commonMain/kotlin/com/getcode/util/resources/icons/ImageVector.kt similarity index 100% rename from ui/resources/src/main/java/com/getcode/util/resources/icons/ImageVector.kt rename to ui/resources/src/commonMain/kotlin/com/getcode/util/resources/icons/ImageVector.kt diff --git a/ui/resources/src/main/java/com/getcode/util/resources/icons/MessageCircle.kt b/ui/resources/src/commonMain/kotlin/com/getcode/util/resources/icons/MessageCircle.kt similarity index 100% rename from ui/resources/src/main/java/com/getcode/util/resources/icons/MessageCircle.kt rename to ui/resources/src/commonMain/kotlin/com/getcode/util/resources/icons/MessageCircle.kt diff --git a/ui/resources/test-fixtures/build.gradle.kts b/ui/resources/test-fixtures/build.gradle.kts new file mode 100644 index 0000000000..8e13fc2224 --- /dev/null +++ b/ui/resources/test-fixtures/build.gradle.kts @@ -0,0 +1,13 @@ +plugins { + alias(libs.plugins.flipcash.android.library) +} + +android { + namespace = "${Gradle.codeNamespace}.util.resources.testfixtures" +} + +dependencies { + api(project(":ui:resources")) + implementation(platform(libs.compose.bom)) + implementation(libs.compose.ui) +} diff --git a/ui/resources/src/testFixtures/kotlin/com/getcode/util/resources/FakeResourceHelper.kt b/ui/resources/test-fixtures/src/main/kotlin/com/getcode/util/resources/FakeResourceHelper.kt similarity index 98% rename from ui/resources/src/testFixtures/kotlin/com/getcode/util/resources/FakeResourceHelper.kt rename to ui/resources/test-fixtures/src/main/kotlin/com/getcode/util/resources/FakeResourceHelper.kt index 973ede92b9..e9881b8b62 100644 --- a/ui/resources/src/testFixtures/kotlin/com/getcode/util/resources/FakeResourceHelper.kt +++ b/ui/resources/test-fixtures/src/main/kotlin/com/getcode/util/resources/FakeResourceHelper.kt @@ -8,7 +8,7 @@ import java.net.URL import java.net.URLClassLoader import java.util.jar.JarFile -class FakeResourceHelper(vararg rClasses: Class<*>) : ResourceHelper { +class FakeResourceHelper(vararg rClasses: Class<*>) : AndroidResourceHelper { private val nameMap: Map = if (rClasses.isNotEmpty()) { buildMapFrom(rClasses)