From dae42c48f235a6ae76f58e4832e0592997330bc3 Mon Sep 17 00:00:00 2001 From: Cilly Leang Date: Fri, 23 Jan 2026 19:05:25 +1100 Subject: [PATCH] refactor: move logic to core module --- composeApp/build.gradle.kts | 1 + .../kotlin/moe/lava/neon/MainActivity.kt | 3 +- .../kotlin/moe/lava/neon/Platform.kt | 7 --- .../kotlin/moe/lava/neon/{ => ui}/App.kt | 4 +- .../kotlin/moe/lava/neon/{ => ui}/Greeting.kt | 4 +- .../kotlin/moe/lava/neon/Platform.jvm.kt | 7 --- .../src/jvmMain/kotlin/moe/lava/neon/main.kt | 3 +- core/build.gradle.kts | 47 +++++++++++++++++++ .../moe/lava/neon/core}/Platform.android.kt | 4 +- .../kotlin/moe/lava/neon/core/Platform.kt | 7 +++ .../kotlin/moe/lava/neon/core/Platform.jvm.kt | 7 +++ gradle/libs.versions.toml | 2 +- settings.gradle.kts | 3 +- 13 files changed, 75 insertions(+), 24 deletions(-) delete mode 100644 composeApp/src/commonMain/kotlin/moe/lava/neon/Platform.kt rename composeApp/src/commonMain/kotlin/moe/lava/neon/{ => ui}/App.kt (98%) rename composeApp/src/commonMain/kotlin/moe/lava/neon/{ => ui}/Greeting.kt (83%) delete mode 100644 composeApp/src/jvmMain/kotlin/moe/lava/neon/Platform.jvm.kt create mode 100644 core/build.gradle.kts rename {composeApp/src/androidMain/kotlin/moe/lava/neon => core/src/androidMain/kotlin/moe/lava/neon/core}/Platform.android.kt (61%) create mode 100644 core/src/commonMain/kotlin/moe/lava/neon/core/Platform.kt create mode 100644 core/src/jvmMain/kotlin/moe/lava/neon/core/Platform.jvm.kt diff --git a/composeApp/build.gradle.kts b/composeApp/build.gradle.kts index f959073..eed5c11 100644 --- a/composeApp/build.gradle.kts +++ b/composeApp/build.gradle.kts @@ -24,6 +24,7 @@ kotlin { implementation(libs.androidx.activity.compose) } commonMain.dependencies { + implementation(project(":core")) implementation(libs.compose.runtime) implementation(libs.compose.foundation) implementation(libs.compose.material3) diff --git a/composeApp/src/androidMain/kotlin/moe/lava/neon/MainActivity.kt b/composeApp/src/androidMain/kotlin/moe/lava/neon/MainActivity.kt index 5ca8117..45b77df 100644 --- a/composeApp/src/androidMain/kotlin/moe/lava/neon/MainActivity.kt +++ b/composeApp/src/androidMain/kotlin/moe/lava/neon/MainActivity.kt @@ -6,6 +6,7 @@ import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge import androidx.compose.runtime.Composable import androidx.compose.ui.tooling.preview.Preview +import moe.lava.neon.ui.App class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { @@ -22,4 +23,4 @@ class MainActivity : ComponentActivity() { @Composable fun AppAndroidPreview() { App() -} \ No newline at end of file +} diff --git a/composeApp/src/commonMain/kotlin/moe/lava/neon/Platform.kt b/composeApp/src/commonMain/kotlin/moe/lava/neon/Platform.kt deleted file mode 100644 index 525fa35..0000000 --- a/composeApp/src/commonMain/kotlin/moe/lava/neon/Platform.kt +++ /dev/null @@ -1,7 +0,0 @@ -package moe.lava.neon - -interface Platform { - val name: String -} - -expect fun getPlatform(): Platform \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/moe/lava/neon/App.kt b/composeApp/src/commonMain/kotlin/moe/lava/neon/ui/App.kt similarity index 98% rename from composeApp/src/commonMain/kotlin/moe/lava/neon/App.kt rename to composeApp/src/commonMain/kotlin/moe/lava/neon/ui/App.kt index 42bb105..fb8acc5 100644 --- a/composeApp/src/commonMain/kotlin/moe/lava/neon/App.kt +++ b/composeApp/src/commonMain/kotlin/moe/lava/neon/ui/App.kt @@ -1,4 +1,4 @@ -package moe.lava.neon +package moe.lava.neon.ui import androidx.compose.animation.AnimatedVisibility import androidx.compose.foundation.Image @@ -46,4 +46,4 @@ fun App() { } } } -} \ No newline at end of file +} diff --git a/composeApp/src/commonMain/kotlin/moe/lava/neon/Greeting.kt b/composeApp/src/commonMain/kotlin/moe/lava/neon/ui/Greeting.kt similarity index 83% rename from composeApp/src/commonMain/kotlin/moe/lava/neon/Greeting.kt rename to composeApp/src/commonMain/kotlin/moe/lava/neon/ui/Greeting.kt index e9df53a..9c5708c 100644 --- a/composeApp/src/commonMain/kotlin/moe/lava/neon/Greeting.kt +++ b/composeApp/src/commonMain/kotlin/moe/lava/neon/ui/Greeting.kt @@ -1,4 +1,4 @@ -package moe.lava.neon +package moe.lava.neon.ui class Greeting { private val platform = getPlatform() @@ -6,4 +6,4 @@ class Greeting { fun greet(): String { return "Hello, ${platform.name}!" } -} \ No newline at end of file +} diff --git a/composeApp/src/jvmMain/kotlin/moe/lava/neon/Platform.jvm.kt b/composeApp/src/jvmMain/kotlin/moe/lava/neon/Platform.jvm.kt deleted file mode 100644 index f94e8f1..0000000 --- a/composeApp/src/jvmMain/kotlin/moe/lava/neon/Platform.jvm.kt +++ /dev/null @@ -1,7 +0,0 @@ -package moe.lava.neon - -class JVMPlatform: Platform { - override val name: String = "Java ${System.getProperty("java.version")}" -} - -actual fun getPlatform(): Platform = JVMPlatform() \ No newline at end of file diff --git a/composeApp/src/jvmMain/kotlin/moe/lava/neon/main.kt b/composeApp/src/jvmMain/kotlin/moe/lava/neon/main.kt index 8145dc4..27c77b5 100644 --- a/composeApp/src/jvmMain/kotlin/moe/lava/neon/main.kt +++ b/composeApp/src/jvmMain/kotlin/moe/lava/neon/main.kt @@ -2,6 +2,7 @@ package moe.lava.neon import androidx.compose.ui.window.Window import androidx.compose.ui.window.application +import moe.lava.neon.ui.App fun main() = application { Window( @@ -10,4 +11,4 @@ fun main() = application { ) { App() } -} \ No newline at end of file +} diff --git a/core/build.gradle.kts b/core/build.gradle.kts new file mode 100644 index 0000000..52385e8 --- /dev/null +++ b/core/build.gradle.kts @@ -0,0 +1,47 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + +plugins { + alias(libs.plugins.androidLibrary) + alias(libs.plugins.kotlinMultiplatform) +} + +kotlin { + jvm() + androidTarget { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_11) + } + } + + sourceSets { + commonMain.dependencies { + // Add any common dependencies here + } + commonTest.dependencies { + implementation(libs.kotlin.test) + } + } +} + +android { + namespace = "moe.lava.neon.core" + compileSdk = libs.versions.android.compileSdk.get().toInt() + + defaultConfig { + minSdk = libs.versions.android.minSdk.get().toInt() + } + packaging { + resources { + excludes += "/META-INF/{AL2.0,LGPL2.1}" + } + } + buildTypes { + getByName("release") { + isMinifyEnabled = false + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } +} diff --git a/composeApp/src/androidMain/kotlin/moe/lava/neon/Platform.android.kt b/core/src/androidMain/kotlin/moe/lava/neon/core/Platform.android.kt similarity index 61% rename from composeApp/src/androidMain/kotlin/moe/lava/neon/Platform.android.kt rename to core/src/androidMain/kotlin/moe/lava/neon/core/Platform.android.kt index d96b915..544fc61 100644 --- a/composeApp/src/androidMain/kotlin/moe/lava/neon/Platform.android.kt +++ b/core/src/androidMain/kotlin/moe/lava/neon/core/Platform.android.kt @@ -1,4 +1,4 @@ -package moe.lava.neon +package moe.lava.neon.core import android.os.Build @@ -6,4 +6,4 @@ class AndroidPlatform : Platform { override val name: String = "Android ${Build.VERSION.SDK_INT}" } -actual fun getPlatform(): Platform = AndroidPlatform() \ No newline at end of file +actual fun getPlatform(): Platform = AndroidPlatform() diff --git a/core/src/commonMain/kotlin/moe/lava/neon/core/Platform.kt b/core/src/commonMain/kotlin/moe/lava/neon/core/Platform.kt new file mode 100644 index 0000000..aae09e6 --- /dev/null +++ b/core/src/commonMain/kotlin/moe/lava/neon/core/Platform.kt @@ -0,0 +1,7 @@ +package moe.lava.neon.core + +interface Platform { + val name: String +} + +expect fun getPlatform(): Platform diff --git a/core/src/jvmMain/kotlin/moe/lava/neon/core/Platform.jvm.kt b/core/src/jvmMain/kotlin/moe/lava/neon/core/Platform.jvm.kt new file mode 100644 index 0000000..509cf56 --- /dev/null +++ b/core/src/jvmMain/kotlin/moe/lava/neon/core/Platform.jvm.kt @@ -0,0 +1,7 @@ +package moe.lava.neon.core + +class JVMPlatform : Platform { + override val name: String = "Java ${System.getProperty("java.version")}" +} + +actual fun getPlatform(): Platform = JVMPlatform() diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index c55f102..006c9a3 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -14,7 +14,7 @@ composeMultiplatform = "1.10.0" junit = "4.13.2" kotlin = "2.3.0" kotlinx-coroutines = "1.10.2" -material3 = "1.10.0-alpha05" +material3 = "1.10.0" [libraries] kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test", version.ref = "kotlin" } diff --git a/settings.gradle.kts b/settings.gradle.kts index 00784d4..a38ba24 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -32,4 +32,5 @@ plugins { id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0" } -include(":composeApp") \ No newline at end of file +include(":composeApp") +include(":core")