Milan Jurkulak преди 1 година
родител
ревизия
ab0c2a029c
променени са 25 файла, в които са добавени 347 реда и са изтрити 184 реда
  1. 2 1
      .gitignore
  2. 7 8
      build.gradle.kts
  3. 4 3
      buildSrc/build.gradle.kts
  4. 25 0
      buildSrc/src/main/kotlin/BuildExt.kt
  5. 0 4
      buildSrc/src/main/kotlin/org/mjdev/gradle/extensions/KotlinDependencyHandlerExt.kt
  6. 161 5
      buildSrc/src/main/kotlin/org/mjdev/gradle/extensions/SourceSets.kt
  7. 0 10
      buildSrc/src/main/kotlin/org/mjdev/gradle/extensions/TaskContainerExt.kt
  8. 127 78
      composeApp/build.gradle.kts
  9. 1 1
      composeApp/src/androidMain/kotlin/org/mjdev/desktop/extensions/JSonExt.kt
  10. 0 0
      composeApp/src/androidMain/kotlin/org/mjdev/desktop/system/Filesystem.android.kt
  11. 0 0
      composeApp/src/androidMain/kotlin/org/mjdev/desktop/system/Platform.android.kt
  12. 0 0
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/system/Filesystem.kt
  13. 0 0
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/system/Platform.kt
  14. 0 0
      composeApp/src/commonMain/resources/keys/chatgpt.key
  15. 0 0
      composeApp/src/commonMain/resources/keys/gemini.key
  16. 0 0
      composeApp/src/desktopMain/kotlin/org/mjdev/desktop/system/Filesystem.jvm.kt
  17. 0 0
      composeApp/src/desktopMain/kotlin/org/mjdev/desktop/system/Platform.jvm.kt
  18. 1 0
      composeApp/src/wasmJsMain/kotlin/org/mjdev/desktop/main.kt
  19. 2 3
      composeApp/src/wasmJsMain/kotlin/org/mjdev/desktop/main/MainView.kt
  20. 0 0
      composeApp/src/wasmJsMain/kotlin/org/mjdev/desktop/system/Filesystem.wasmJs.kt
  21. 0 0
      composeApp/src/wasmJsMain/kotlin/org/mjdev/desktop/system/Platform.wasmJs.kt
  22. 11 9
      gradle.properties
  23. 6 8
      gradle/libs.versions.toml
  24. 0 1
      settings.gradle.kts
  25. 0 53
      shared/build.gradle.kts

+ 2 - 1
.gitignore

@@ -47,4 +47,5 @@ sources/
 /.intellijPlatform/
 
 ### no keys
-keys/*.key
+composeApp/src/commonMain/resources/keys/*.key
+/composeApp/src/commonMain/resources/keys/*.key

+ 7 - 8
build.gradle.kts

@@ -7,16 +7,15 @@ plugins {
     alias(libs.plugins.kotlin.multiplatform) apply false
     alias(libs.plugins.app.icon.generator) apply false
     // auto applied
-    alias(libs.plugins.qodana)
-    alias(libs.plugins.kover)
+//    alias(libs.plugins.qodana)
+//    alias(libs.plugins.kover)
     alias(libs.plugins.changelog)
-    alias(libs.plugins.gradle.ktlint)
+//    alias(libs.plugins.gradle.ktlint)
     alias(libs.plugins.manes.versions)
 }
 
-dependencies {
-    kover(project(":composeApp"))
-    kover(project(":shared"))
-}
+//dependencies {
+//    kover(project(":composeApp"))
+//}
 
-kover { reports { total { xml { onCheck = true } } } }
+//kover { reports { total { xml { onCheck = true } } } }

+ 4 - 3
buildSrc/build.gradle.kts

@@ -14,9 +14,10 @@ repositories {
 dependencies {
     implementation(gradleApi())
     implementation(gradleKotlinDsl())
-//    implementation(libs.gradle)
-//    implementation(libs.gradle.api)
-//    implementation(libs.gradle.kotlin.plugin)
+
+    compileOnly(libs.gradle)
+    compileOnly(libs.gradle.api)
+    compileOnly(libs.gradle.kotlin.plugin)
 }
 
 gradlePlugin {

+ 25 - 0
buildSrc/src/main/kotlin/BuildExt.kt

@@ -0,0 +1,25 @@
+import org.gradle.api.NamedDomainObjectContainer
+import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
+
+fun NamedDomainObjectContainer<KotlinSourceSet>.getOrCreate(
+    name: String
+): KotlinSourceSet = findByName(name) ?: create(name)
+
+//fun NamedDomainObjectContainer<KotlinSourceSet>.desktopMain(
+//    block: KotlinSourceSet.() -> Unit = {}
+//): KotlinSourceSet = getOrCreate("desktopMain").apply(block)
+
+// todo
+//@Suppress("UNUSED_PARAMETER", "UnusedReceiverParameter")
+//fun Project.wasm(config: DesktopExtension.() -> Unit) {
+//    // todo
+////    compose.wasmJs(config)
+//}
+
+// todo
+//fun Project.kotlinSourceSets(
+//    config: Action<NamedDomainObjectContainer<KotlinSourceSet>>
+//) = with(kotlin) {
+//    sourceSets(config)
+//}
+

+ 0 - 4
buildSrc/src/main/kotlin/org/mjdev/gradle/extensions/KotlinDependencyHandlerExt.kt

@@ -1,7 +1,5 @@
 package org.mjdev.gradle.extensions
 
-object KotlinDependencyHandlerExt {
-
 //    fun KotlinDependencyHandler.kapt(
 //        dependency:String
 //    ) = configurations["kapt"].dependencies.add(dependency)
@@ -11,5 +9,3 @@ object KotlinDependencyHandlerExt {
 //    ) {
 //        configurations["kapt"].dependencies.add(dependency.get())
 //    }
-
-}

+ 161 - 5
buildSrc/src/main/kotlin/org/mjdev/gradle/extensions/SourceSets.kt

@@ -1,9 +1,165 @@
-package org.mjdev.gradle.extensions
-
 import org.gradle.api.NamedDomainObjectContainer
+import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
+import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
+
+//import com.android.build.gradle.BaseExtension
+//import org.gradle.api.Project
+//import org.gradle.kotlin.dsl.NamedDomainObjectCollectionDelegateProvider
+//import org.gradle.kotlin.dsl.get
+//import org.gradle.kotlin.dsl.getByType
+//import org.gradle.kotlin.dsl.getting
+//import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
+//import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformSourceSetConventions
+//import co.touchlab.kotlinxcodesync.SyncExtension
+//import com.android.build.gradle.BaseExtension
+//import org.gradle.api.Task
+//import org.gradle.api.plugins.JavaBasePlugin
+//import org.gradle.kotlin.dsl.creating
+//import org.gradle.kotlin.dsl.getByType
+//import org.gradle.kotlin.dsl.getValue
+//import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
 //import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
-import org.gradle.kotlin.dsl.getting
+//import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
+//import org.jetbrains.kotlin.gradle.plugin.mpp.NativeBuildType
+
+
+//    val Project.libs
+//        get(): VersionCatalog = extensions.getByType<VersionCatalogsExtension>().named("libs")
+
+//    val Project.androidLibs
+//        get(): VersionCatalog = extensions.getByType<VersionCatalogsExtension>().named("androidLibs")
+
+//fun KotlinMultiplatformExtension.sourceSets(
+//    block: NamedDomainObjectContainer<KotlinSourceSet>.() -> Unit
+//) {
+//    sourceSets.block()
+//}
+
+//private fun NamedDomainObjectContainer<KotlinSourceSet>.getOrCreate(
+//    name: String
+//): KotlinSourceSet = findByName(name) ?: create(name)
+
+// common
+//fun NamedDomainObjectContainer<KotlinSourceSet>.commonMain(block: KotlinSourceSet.() -> Unit = {}): KotlinSourceSet =
+//    getOrCreate("commonMain").apply(block)
+
+// common test
+//fun NamedDomainObjectContainer<KotlinSourceSet>.commonTest(block: KotlinSourceSet.() -> Unit = {}): KotlinSourceSet =
+//    getOrCreate("commonTest").apply(block)
+
+// android
+//fun NamedDomainObjectContainer<KotlinSourceSet>.androidMain(block: KotlinSourceSet.() -> Unit = {}): KotlinSourceSet =
+//    getOrCreate("androidMain").apply(block)
+
+// android test
+//fun NamedDomainObjectContainer<KotlinSourceSet>.androidTest(block: KotlinSourceSet.() -> Unit = {}): KotlinSourceSet =
+//    getOrCreate("androidTest").apply(block)
 
-object SourceSets {
+// desktop
+
+//fun NamedDomainObjectContainer<KotlinSourceSet>.desktopMain(block: KotlinSourceSet.() -> Unit = {}): KotlinSourceSet =
+//    getOrCreate("androidMain").apply(block)
+
+//fun NamedDomainObjectContainer<KotlinSourceSet>.desktopTest(block: KotlinSourceSet.() -> Unit = {}): KotlinSourceSet =
+//    getOrCreate("androidTest").apply(block)
+
+//    fun Project.android(block: BaseExtension.() -> Unit) {
+//        extensions.getByType<BaseExtension>().apply (block)
+//    }
+
+//    fun Project.kotlin(block: KotlinMultiplatformExtension.() -> Unit) {
+//        extensions.getByType<KotlinMultiplatformExtension>().apply(block)
+//    }
+
+//    val implementation by configurations
+//    val compileOnly by configurations
+//    val annotationProcessor by configurations
 //    val NamedDomainObjectContainer<KotlinSourceSet>.desktopMain by getting
-}
+
+//    fun KotlinMultiplatformSourceSetConventions.desktopMain(
+//        block: KotlinSourceSet.() -> Unit
+//    ) {
+//        val desktopMain by getting
+//        block(desktopMain)
+//    }
+
+//    fun Project.setupMultiplatform() {
+//        plugins.apply("kotlin-multiplatform")
+//        plugins.apply("com.android.library")
+//        setupAndroidSdkVersions()
+//        kotlin {
+//            android {
+//                publishLibraryVariants("release", "debug")
+//            }
+//            iosX64()
+//            iosArm64()
+//            sourceSets {
+//                commonMain {
+//                    dependencies {
+//                        implementation(Deps.Jetbrains.Kotlin.StdLib.Common)
+//                    }
+//                }
+//                commonTest {
+//                    dependencies {
+//                        implementation(Deps.Jetbrains.Kotlin.Test.Common)
+//                        implementation(Deps.Jetbrains.Kotlin.TestAnnotations.Common)
+//                    }
+//                }
+//                androidMain {
+//                    dependsOn(commonMain())
+//                    dependencies {
+//                        implementation(Deps.Jetbrains.Kotlin.StdLib.Jdk7)
+//                    }
+//                }
+//                androidTest {
+//                    dependsOn(commonTest())
+//                    dependencies {
+//                        implementation(Deps.Jetbrains.Kotlin.Test.Junit)
+//                    }
+//                }
+//                iosCommonMain().dependsOn(commonMain())
+//                iosCommonTest().dependsOn(commonTest())
+//                iosX64Main().dependsOn(iosCommonMain())
+//                iosX64Test().dependsOn(iosCommonTest())
+//                iosArm64Main().dependsOn(iosCommonMain())
+//                iosArm64Test().dependsOn(iosCommonTest())
+//            }
+//        }
+//    }
+
+//    fun Project.setupAndroidSdkVersions() {
+//        android {
+//            compileSdkVersion(29)
+//            defaultConfig {
+//                targetSdkVersion(29)
+//                minSdkVersion(21)
+//            }
+//        }
+//    }
+
+// Workaround since iosX64() and iosArm64() function are not resolved
+// if used in a module with Kotlin 1.3.70
+//    fun Project.setupKittensBinaries() {
+//        fun KotlinNativeTarget.setupIosBinaries() {
+//            binaries {
+//                framework {
+//                    baseName = "Kittens"
+//                    freeCompilerArgs = freeCompilerArgs.plus("-Xobjc-generics").toMutableList()
+//
+//                    export(project(":shared:mvi"))
+//                }
+//            }
+//        }
+//        kotlin {
+//            iosX64().setupIosBinaries()
+//            iosArm64().setupIosBinaries()
+//        }
+//    }
+
+//    fun Project.setupXcodeSync() {
+//        plugins.apply("co.touchlab.kotlinxcodesync")
+//        extensions.getByType<SyncExtension>().run {
+//            projectPath = "../todo-app-ios/todo-app-ios.xcodeproj"
+//            target = "todo-app-ios"
+//        }
+//    }

+ 0 - 10
buildSrc/src/main/kotlin/org/mjdev/gradle/extensions/TaskContainerExt.kt

@@ -1,10 +0,0 @@
-package org.mjdev.gradle.extensions
-
-import org.gradle.api.Task
-import org.gradle.api.tasks.TaskContainer
-
-object TaskContainerExt {
-    fun TaskContainer.clean(
-        block: Task.() -> Unit
-    ) = findByName("clean")?.apply(block)
-}

+ 127 - 78
composeApp/build.gradle.kts

@@ -1,8 +1,15 @@
-@file:Suppress("OPT_IN_USAGE")
-
+import org.jetbrains.compose.desktop.DesktopExtension
 import org.jetbrains.compose.desktop.application.dsl.TargetFormat
+import org.jetbrains.compose.resources.ResourcesExtension
+import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl
 import org.jetbrains.kotlin.gradle.dsl.JvmTarget
+import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
+import org.jetbrains.kotlin.gradle.dsl.KotlinTargetContainerWithPresetFunctions
+import org.jetbrains.kotlin.gradle.dsl.KotlinTargetContainerWithWasmPresetFunctions
+import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
+import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinWasmJsTargetDsl
 import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig
+import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget
 
 plugins {
     alias(libs.plugins.kotlin.multiplatform)
@@ -12,15 +19,62 @@ plugins {
 //    MultiPlatformPlugin
 }
 
-java {
-    toolchain {
-        languageVersion.set(JavaLanguageVersion.of(17))
-    }
+java.toolchain.languageVersion.set(JavaLanguageVersion.of(17))
+
+fun NamedDomainObjectContainer<KotlinSourceSet>.getOrCreate(
+    name: String
+): KotlinSourceSet = findByName(name) ?: create(name)
+
+fun NamedDomainObjectContainer<KotlinSourceSet>.desktopMain(
+    block: KotlinSourceSet.() -> Unit = {}
+): KotlinSourceSet = getOrCreate("desktopMain").apply(block)
+
+fun KotlinTargetContainerWithPresetFunctions.desktopTarget(
+    configure: Action<KotlinJvmTarget>
+) = jvm("desktop").apply {
+    configure.execute(this)
 }
 
-kotlin {
-    jvm("desktop")
-    wasmJs {
+@OptIn(ExperimentalWasmDsl::class)
+fun KotlinTargetContainerWithWasmPresetFunctions.wasmJsTarget(
+    configure: Action<KotlinWasmJsTargetDsl>
+) = wasmJs(configure)
+
+fun Project.desktop(
+    config: DesktopExtension.() -> Unit
+) = compose.desktop(config)
+
+fun Project.composeResources(
+    config: ResourcesExtension.() -> Unit
+) = compose.resources(config)
+
+fun targets(
+    config: Action<KotlinMultiplatformExtension>
+) = kotlin(config)
+
+// todo
+@Suppress("UNUSED_PARAMETER", "UnusedReceiverParameter")
+fun Project.wasm(config: DesktopExtension.() -> Unit) {
+    // todo
+//    compose.wasmJs(config)
+}
+
+// todo
+fun Project.kotlinSourceSets(
+    config: Action<NamedDomainObjectContainer<KotlinSourceSet>>
+) = with(kotlin) {
+    sourceSets(config)
+}
+
+targets {
+    desktopTarget {
+    }
+    androidTarget {
+        compilerOptions {
+            jvmTarget.set(JvmTarget.JVM_17)
+        }
+    }
+    wasmJsTarget {
         outputModuleName = "composeApp"
         browser {
             val rootDirPath = project.rootDir.path
@@ -38,11 +92,9 @@ kotlin {
         }
         binaries.executable()
     }
-    androidTarget {
-        compilerOptions {
-            jvmTarget.set(JvmTarget.JVM_17)
-        }
-    }
+}
+
+kotlin {
     sourceSets {
         // common dependencies
         commonMain {
@@ -52,7 +104,6 @@ kotlin {
                 // preview
                 implementation(compose.components.uiToolingPreview)
                 // base
-                implementation(projects.shared)
                 implementation(compose.runtime)
                 implementation(compose.foundation)
                 implementation(compose.material)
@@ -115,8 +166,6 @@ kotlin {
                 // implementation("io.matthewnelson.kmp-tor:runtime:2.1.0")
                 // files
                 implementation("com.squareup.okio:okio:3.10.2")
-                // ai
-//                implementation(libs.generativeai)
             }
         }
         // android dependencies
@@ -152,30 +201,38 @@ kotlin {
             }
         }
         // desktop dependencies
-        val desktopMain by getting
-        desktopMain.dependencies {
-            // reflection
-            implementation(kotlin("reflect"))
-            // preview
-            implementation(compose.components.uiToolingPreview)
-            // desktop
-            implementation(compose.desktop.currentOs)
-            // coroutines
-            implementation(libs.kotlinx.coroutines.swing)
-            // okhttp
-            implementation(libs.okhttp3.client)
-            // images okhttp
-            implementation(libs.coil.okhttp)
-            // ai gemini
-            implementation(libs.sh.google.generative.ai)
-            // chatgpt
-            implementation(libs.ychat)
-            // desktop files
-            implementation(libs.ini4j)
+        desktopMain {
+            dependencies {
+                // reflection
+                implementation(kotlin("reflect"))
+                // preview
+                implementation(compose.components.uiToolingPreview)
+                // desktop
+                implementation(compose.desktop.currentOs)
+                // coroutines
+                implementation(libs.kotlinx.coroutines.swing)
+                // okhttp
+                implementation(libs.okhttp3.client)
+                // images okhttp
+                implementation(libs.coil.okhttp)
+                // ai gemini
+                implementation(libs.sh.google.generative.ai)
+                // chatgpt
+                implementation(libs.ychat)
+                // desktop files
+                implementation(libs.ini4j)
+            }
         }
     }
 }
 
+// resources config
+composeResources {
+    publicResClass = true
+    packageOfResClass = "org.mjdev.desktop.resources"
+    generateResClass = auto
+}
+
 // android app config
 android {
     namespace = "org.mjdev.desktop"
@@ -214,24 +271,18 @@ android {
     }
 }
 
-// remove
-//dependencies {
-//    implementation(libs.generativeai)
-//}
-
 // desktop app config
-compose {
-    desktop {
-        group = libs.versions.app.pkg.name.get()
-        version = libs.versions.app.pkg.version.get()
-        application {
-            mainClass = "org.mjdev.desktop.main.MainKt"
-            nativeDistributions {
-                packageName = libs.versions.app.name.get()
-                packageVersion = libs.versions.app.pkg.version.get()
-                description = libs.versions.app.description.get()
-                copyright = libs.versions.app.copyright.get()
-                outputBaseDir.set(project.rootDir.resolve("packages"))
+desktop {
+    group = libs.versions.app.pkg.name.get()
+    version = libs.versions.app.pkg.version.get()
+    application {
+        mainClass = "org.mjdev.desktop.main.MainKt"
+        nativeDistributions {
+            packageName = libs.versions.app.name.get()
+            packageVersion = libs.versions.app.pkg.version.get()
+            description = libs.versions.app.description.get()
+            copyright = libs.versions.app.copyright.get()
+            outputBaseDir.set(project.rootDir.resolve("packages"))
 //                macOS {
 //                    iconFile.set(project.rootDir.resolve("icons").resolve("icon.icns"))
 //                }
@@ -240,7 +291,7 @@ compose {
 //                    exePackageVersion = "1.0.0"
 //                    msiPackageVersion = "1.0.0"
 //                }
-                linux {
+            linux {
 //                    iconFile.set(
 //                        project.rootDir
 //                            .resolve("composeApp")
@@ -251,30 +302,28 @@ compose {
 //                            .resolve("icon.png")
 //                    )
 //                    licenseFile.set(project.rootDir.resolve("LICENSE.txt"))
-                    appCategory = libs.versions.app.category.get()
-                    debMaintainer = libs.versions.app.maintainer.get()
-                    menuGroup = libs.versions.app.menu.group.get()
-                    vendor = libs.versions.app.vendor.get()
-                }
-                targetFormats(
-                    TargetFormat.Dmg,
-                    TargetFormat.Msi,
-                    TargetFormat.Deb,
-                    TargetFormat.Exe,
-                    TargetFormat.AppImage,
-                    TargetFormat.Pkg,
-                    TargetFormat.Rpm
-                )
-                buildTypes.release.proguard {
-                    configurationFiles.from("compose-desktop.pro")
-                }
-//                appResourcesRootDir.set(project.rootDir.resolve("resources"))
+                appCategory = libs.versions.app.category.get()
+                debMaintainer = libs.versions.app.maintainer.get()
+                menuGroup = libs.versions.app.menu.group.get()
+                vendor = libs.versions.app.vendor.get()
+            }
+            targetFormats(
+                TargetFormat.Dmg,
+                TargetFormat.Msi,
+                TargetFormat.Deb,
+                TargetFormat.Exe,
+                TargetFormat.AppImage,
+                TargetFormat.Pkg,
+                TargetFormat.Rpm
+            )
+            buildTypes.release.proguard {
+                configurationFiles.from("compose-desktop.pro")
             }
+//                appResourcesRootDir.set(project.rootDir.resolve("resources"))
         }
     }
-    resources {
-        publicResClass = true
-        packageOfResClass = "org.mjdev.desktop.resources"
-        generateResClass = auto
-    }
+}
+
+// wasm config
+wasm {
 }

+ 1 - 1
composeApp/src/androidMain/kotlin/org/mjdev/desktop/extensions/JSonExt.kt

@@ -6,7 +6,7 @@ object JSonExt {
     val gson = GsonBuilder()
         .disableInnerClassSerialization()
         .disableJdkUnsafe()
-        .setLenient()
+//        .setLenient()
         .setPrettyPrinting()
         .create()
 

+ 0 - 0
shared/src/androidMain/kotlin/org/mjdev/desktop/system/Filesystem.android.kt → composeApp/src/androidMain/kotlin/org/mjdev/desktop/system/Filesystem.android.kt


+ 0 - 0
shared/src/androidMain/kotlin/org/mjdev/desktop/system/Platform.android.kt → composeApp/src/androidMain/kotlin/org/mjdev/desktop/system/Platform.android.kt


+ 0 - 0
shared/src/commonMain/kotlin/org/mjdev/desktop/system/Filesystem.kt → composeApp/src/commonMain/kotlin/org/mjdev/desktop/system/Filesystem.kt


+ 0 - 0
shared/src/commonMain/kotlin/org/mjdev/desktop/system/Platform.kt → composeApp/src/commonMain/kotlin/org/mjdev/desktop/system/Platform.kt


+ 0 - 0
composeApp/src/commonMain/resources/keys/chatgpt.key


+ 0 - 0
composeApp/src/commonMain/resources/keys/gemini.key


+ 0 - 0
shared/src/jvmMain/kotlin/org/mjdev/desktop/system/Filesystem.jvm.kt → composeApp/src/desktopMain/kotlin/org/mjdev/desktop/system/Filesystem.jvm.kt


+ 0 - 0
shared/src/jvmMain/kotlin/org/mjdev/desktop/system/Platform.jvm.kt → composeApp/src/desktopMain/kotlin/org/mjdev/desktop/system/Platform.jvm.kt


+ 1 - 0
composeApp/src/wasmJsMain/kotlin/org/mjdev/desktop/main.kt

@@ -6,6 +6,7 @@ import androidx.compose.ui.window.ComposeViewport
 import kotlinx.browser.document
 import org.mjdev.desktop.context.DesktopContext.Companion.rememberDesktopContext
 import org.mjdev.desktop.context.LocalDesktopContext
+import org.mjdev.desktop.main.MainView
 
 @OptIn(ExperimentalComposeUiApi::class)
 fun main() {

+ 2 - 3
composeApp/src/wasmJsMain/kotlin/org/mjdev/desktop/MainView.kt → composeApp/src/wasmJsMain/kotlin/org/mjdev/desktop/main/MainView.kt

@@ -1,4 +1,4 @@
-package org.mjdev.desktop
+package org.mjdev.desktop.main
 
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.PaddingValues
@@ -117,8 +117,7 @@ fun MainView() = withDesktopContext {
                 runAsync {
                     appsMenuState.show()
                 }
-            },
-            onTimeDateClick = onTimeDateClick
+            }
         )
         ControlCenter(
             modifier = Modifier

+ 0 - 0
shared/src/wasmJsMain/kotlin/org/mjdev/desktop/system/Filesystem.wasmJs.kt → composeApp/src/wasmJsMain/kotlin/org/mjdev/desktop/system/Filesystem.wasmJs.kt


+ 0 - 0
shared/src/wasmJsMain/kotlin/org/mjdev/desktop/system/Platform.wasmJs.kt → composeApp/src/wasmJsMain/kotlin/org/mjdev/desktop/system/Platform.wasmJs.kt


+ 11 - 9
gradle.properties

@@ -3,10 +3,18 @@
 kotlin.code.style=official
 # do not check or build disabled
 kotlin.native.ignoreDisabledTargets=true
-# gradle plugin compatibility messages
-#kotlin.mpp.androidGradlePluginCompatibility.nowarn=true
 # gradle
 org.gradle.jvmargs=-Xmx2048M -Dfile.encoding=UTF-8 -Dkotlin.daemon.jvm.options\="-Xmx2048M"
+org.gradle.parallel=true
+# gradle build cache
+org.gradle.configuration-cache=true
+org.gradle.configuration-cache.problems=warn
+org.gradle.configuration-cache.parallel=true
+org.gradle.caching=true
+org.gradle.configureondemand=true
+org.gradle.kotlin.dsl.caching.buildcache=true
+# gradle plugin compatibility messages
+#kotlin.mpp.androidGradlePluginCompatibility.nowarn=true
 # android options
 android.nonTransitiveRClass=true
 android.defaults.buildfeatures.aidl=false
@@ -21,13 +29,7 @@ kotlin.mpp.enableCInteropCommonization=true
 io.ktor.development=true
 # depends on call
 kotlin.mpp.applyDefaultHierarchyTemplate=false
-# build cache
-org.gradle.configuration-cache=true
-org.gradle.configuration-cache.problems=warn
-org.gradle.configuration-cache.parallel=true
-org.gradle.caching=true
-org.gradle.configureondemand=true
-org.gradle.kotlin.dsl.caching.buildcache=true
+
 # project plugin
 pluginGroup = org.mjdev.plugins.project
 pluginName = ProjectDetails

+ 6 - 8
gradle/libs.versions.toml

@@ -15,7 +15,7 @@ android-min-sdk = "24"
 #android-target-sdk = "36"
 # lib versions
 gradle = "8.9.2"
-#gradle-kotlinter = "4.3.0"
+gradle-kotlinter = "4.3.0"
 androidx-activity-compose = "1.10.1"
 androidx-lifecycle = "2.8.4"
 androidx-ui-tooling = "1.7.8"
@@ -40,7 +40,6 @@ okio = "3.11.0"
 qrose = "1.0.1"
 tts = "3.0.0"
 ychat = "1.4.1"
-#google-generative-ai = "0.9.0"
 alert-kmp = "2.0.0"
 #emoji2 = "1.5.0"
 accompanist-permissions = "0.37.2"
@@ -54,10 +53,10 @@ manes-versions="0.52.0"
 
 [libraries]
 # gradle
-#gradle = { module = "com.android.tools.build:gradle", version.ref = "gradle" }
-#gradle-api = { module = "com.android.tools.build:gradle-api", version.ref = "gradle" }
-#gradle-kotlin-plugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" }
-#gradle-kotlinter = { module = "org.jmailen.gradle:kotlinter-gradle", version.ref = "gradle-kotlinter" }
+gradle = { module = "com.android.tools.build:gradle", version.ref = "gradle" }
+gradle-api = { module = "com.android.tools.build:gradle-api", version.ref = "gradle" }
+gradle-kotlin-plugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" }
+gradle-kotlinter = { module = "org.jmailen.gradle:kotlinter-gradle", version.ref = "gradle-kotlinter" }
 # androidx
 androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activity-compose" }
 androidx-lifecycle-viewmodel = { group = "org.jetbrains.androidx.lifecycle", name = "lifecycle-viewmodel", version.ref = "androidx-lifecycle" }
@@ -98,8 +97,7 @@ ini4j = { module = "org.ini4j:ini4j", version.ref = "ini4j" }
 # tts
 tts = { module = "nl.marc-apps:tts", version.ref = "tts" }
 # ai
-sh-google-generative-ai = { module = "dev.shreyaspatil.generativeai:generativeai-google-jvm", version.ref = "generative-ai" }
-#google-generative-ai = { group = "com.google.ai.client.generativeai", name = "generativeai", version.ref = "google-generative-ai" }
+sh-google-generative-ai = { module = "dev.shreyaspatil.generativeai:generativeai-google", version.ref = "generative-ai" }
 # strings
 human-readable = { module = "nl.jacobras:Human-Readable", version.ref = "human-readable" }
 # alerts

+ 0 - 1
settings.gradle.kts

@@ -75,5 +75,4 @@ dependencyResolutionManagement {
 //<editor-fold desc="includes">---------------------------------------------------------------------
 include(":studio-plugin")
 include(":composeApp")
-include(":shared")
 //</editor-fold>------------------------------------------------------------------------------------

+ 0 - 53
shared/build.gradle.kts

@@ -1,53 +0,0 @@
-import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl
-import org.jetbrains.kotlin.gradle.dsl.JvmTarget
-import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig
-
-plugins {
-    alias(libs.plugins.kotlin.multiplatform)
-    alias(libs.plugins.android.library)
-}
-
-kotlin {
-    @OptIn(ExperimentalWasmDsl::class)
-    wasmJs {
-        browser {
-            commonWebpackConfig {
-                devServer = (devServer ?: KotlinWebpackConfig.DevServer()).apply {
-                    static = (static ?: mutableListOf()).apply {
-                        // Serve sources to debug inside browser
-                        add(project.projectDir.path)
-                    }
-                }
-            }
-        }
-    }
-    androidTarget {
-        compilerOptions {
-            jvmTarget.set(JvmTarget.JVM_17)
-        }
-    }
-    jvm()
-    sourceSets {
-        commonMain.dependencies {
-            // date & time
-            implementation(libs.kotlinx.datetime)
-            // desktop files
-            implementation(libs.ini4j)
-            // files
-//            implementation(libs.kotlinx.io)
-            implementation(libs.okio)
-        }
-    }
-}
-
-android {
-    namespace = "org.mjdev.desktop.shared"
-    compileSdk = libs.versions.android.compile.sdk.get().toInt()
-    compileOptions {
-        sourceCompatibility = JavaVersion.VERSION_17
-        targetCompatibility = JavaVersion.VERSION_17
-    }
-    defaultConfig {
-        minSdk = libs.versions.android.min.sdk.get().toInt()
-    }
-}