zwischenstand
This commit is contained in:
1 parent
e89bb29070
commit
231132dd9e
12 files changed
+191
-13
No files matched your search
@@ -1,3 +1,3 @@
|
||||
#auto generated
|
||||
#Tue Feb 03 00:28:14 CET 2026
|
||||
build.number=174
|
||||
#Thu Feb 05 01:16:28 CET 2026
|
||||
build.number=190
|
||||
@@ -4,13 +4,13 @@ import net.keinekekse.version.Version
|
||||
|
||||
object VERSION: Version {
|
||||
override val version = "1.0.0"
|
||||
override val fullVersion = "1.0.0+build.174"
|
||||
override val fullVersion = "1.0.0+build.190"
|
||||
override val major = 1
|
||||
override val minor = 0
|
||||
override val patch = 0
|
||||
override val preRelease = ""
|
||||
override val buildMetadata = "build.174"
|
||||
override val buildDate = "2026-02-02T23:28:14.786916Z"
|
||||
override val buildMetadata = "build.190"
|
||||
override val buildDate = "2026-02-05T00:16:28.206204Z"
|
||||
override val displayName = "Books App"
|
||||
override val copyright = "Copyright (c) 2026 Hartmut Bauer"
|
||||
override val name = "books"
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
package net.keinekekse.app.config
|
||||
|
||||
// das interface kann in shared, aber der expect/actual-Teil muss in die Anwendung
|
||||
// damit konkrete Werte, z.B. für die Preferences gesetzt werden können.
|
||||
expect fun settingsFactory(): Settings
|
||||
@@ -0,0 +1,9 @@
|
||||
package net.keinekekse.app.config
|
||||
|
||||
import net.keinekekse.app.books.VERSION
|
||||
import org.koin.core.annotation.Singleton
|
||||
|
||||
@Singleton
|
||||
actual fun settingsFactory(): Settings {
|
||||
return JvmSettings(VERSION::class.java)
|
||||
}
|
||||
@@ -19,6 +19,7 @@ import kotlinx.coroutines.withContext
|
||||
import net.keinekekse.app.auth.AuthResult
|
||||
import net.keinekekse.app.auth.Authenticator
|
||||
import net.keinekekse.app.books.di.KoinApp
|
||||
import net.keinekekse.app.config.Settings
|
||||
import net.keinekekse.app.ui.ProgressIndicator
|
||||
import org.koin.compose.koinInject
|
||||
import org.koin.plugin.module.dsl.startKoin
|
||||
@@ -36,6 +37,18 @@ fun main() = application {
|
||||
|
||||
startKoin<KoinApp>()
|
||||
|
||||
val settings: Settings = koinInject()
|
||||
|
||||
// val settings: Settings = PreferencesSettings(delegate)
|
||||
//
|
||||
// settings.put("kc_server", "kec.keinekekse.net")
|
||||
println(settings.get("kc_server", "default"))
|
||||
// println(Preferences.userRoot())
|
||||
|
||||
// println("System properties:")
|
||||
// System.getProperties().forEach { println("${it.key}=${it.value}") }
|
||||
// println("")
|
||||
|
||||
// keycloakServer = "kec.keinekekse.net"
|
||||
// keycloakRealm = "app-server-realm"
|
||||
// keycloakClient = "pkce-book-app"
|
||||
@@ -164,3 +177,63 @@ fun main() = application {
|
||||
// strokeWidth = strokewidth
|
||||
// )
|
||||
//}
|
||||
|
||||
/*
|
||||
System properties:
|
||||
------------------
|
||||
java.specification.version=21
|
||||
sun.jnu.encoding=UTF-8
|
||||
java.class.path=/Users/hb/Workspaces/Kotlin/app/books/build/classes/kotlin/jvm/main:/Users/hb/Workspaces/Kotlin/app/books/build/classes/java/jvmMain:/Users/hb/Workspaces/Kotlin/app/books/build/processedResources/jvm/main:/Users/hb/Workspaces/Kotlin/app/shared/build/libs/shared-jvm.jar:/Users/hb/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-client-cio-jvm/3.4.0/84786f75d08fe5042f17c246380eb8381d125a6b/ktor-client-cio-jvm-3.4.0.jar:/Users/hb/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-client-auth-jvm/3.4.0/14d75d5e7552a8e26a2ad4dd511a76d4a0c5502f/ktor-client-auth-jvm-3.4.0.jar:/Users/hb/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-client-logging-jvm/3.4.0/278d41697d9194d36290842bfdae03d674b3f365/ktor-client-logging-jvm-3.4.0.jar:/Users/hb/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-client-content-negotiation-jvm/3.4.0/266c1aef9d340c22cd859dd5c9174c2e1d86489f/ktor-client-content-negotiation-jvm-3.4.0.jar:/Users/hb/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-client-java-jvm/3.4.0/4fcb8ec3488c8529773562d45e475533ab46f8ee/ktor-client-java-jvm-3.4.0.jar:/Users/hb/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-server-auth-jwt-jvm/3.4.0/f9c667cf2b122debb0081d0d69edb4caaa047d09/ktor-server-auth-jwt-jvm-3.4.0.jar:/Users/hb/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-server-auth-jvm/3.4.0/6c5fd0cb490bc7efabda621873c07b30b2e7f686/ktor-server-auth-jvm-3.4.0.jar:/Users/hb/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-client-core-jvm/3.4.0/1f017fc4dcf7e3ff5152a28923b7639a9ba82123/ktor-client-core-jvm-3.4.0.jar:/Users/hb/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlinx/kotlinx-coroutines-slf4j/1.10.2/1271f9d4a929150bb87ab8d1dc1e86d4bcf039f3/kotlinx-coroutines-slf4j-1.10.2.jar:/Users/hb/.gradle/caches/modules-2/files-2.1/org.jetbrains.compose.components/components-resources-desktop/1.10.0/c6115b607f77e9d033de360f989850d3824bf112/library-desktop-1.10.0.jar:/Users/hb/.gradle/caches/modules-2/files-2.1/org.jetbrains.compose.material3/material3-desktop/1.10.0-alpha05/ebcf3065e9f7d408f8be2854b6542fb1dd51356f/material3-desktop-1.10.0-alpha05.jar:/Users/hb/.gradle/caches/modules-2/files-2.1/io.insert-koin/koin-compose-viewmodel-jvm/4.2.0-RC1/635720e57068e85996de14fe99262210bd373bf9/koin-compose-viewmodel-jvm-4.2.0-RC1.jar:/Users/hb/.gradle/caches/modules-2/files-2.1/io.insert-koin/koin-compose-jvm/4.2.0-RC1/f8d7e9c3bc6ab356961774f56a9e844158b1de42/koin-compose-jvm-4.2.0-RC1.jar:/Users/hb/.gradle/caches/modules-2/files-2.1/org.jetbrains.compose.desktop/desktop-jvm/1.10.0/42facd9840309ac4eb841a986c5d1b97d2780471/desktop-jvm-1.10.0.jar:/Users/hb/.gradle/caches/modules-2/files-2.1/org.jetbrains.compose.material/material-desktop/1.10.0/63e1c3c6705d111bf84e41110e7729df5b85163e/material-desktop-1.10.0.jar:/Users/hb/.gradle/caches/modules-2/files-2.1/org.jetbrains.compose.material/material-ripple-desktop/1.10.0/74a14824f086339703264689c5a7cf4ceb39ed40/material-ripple-desktop-1.10.0.jar:/Users/hb/.gradle/caches/modules-2/files-2.1/org.jetbrains.compose.foundation/foundation-desktop/1.10.0/439630673394b12a406fe398faaca548a13fdb72/foundation-desktop-1.10.0.jar:/Users/hb/.gradle/caches/modules-2/files-2.1/org.jetbrains.compose.material/material-icons-extended-desktop/1.7.0/c7c5465dd754043076875b32bce0dd7f5a354fe8/material-icons-extended-desktop-1.7.0.jar:/Users/hb/.gradle/caches/modules-2/files-2.1/org.jetbrains.androidx.lifecycle/lifecycle-viewmodel-compose-desktop/2.9.6/5cf03bfbc0f7139a4d7081d5da78c97287f3c65f/lifecycle-viewmodel-compose-desktop-2.9.6.jar:/Users/hb/.gradle/caches/modules-2/files-2.1/org.jetbrains.compose.animation/animation-desktop/1.10.0/17f777e04f7fe5dff2fe7992d0c0bda81c3a3897/animation-desktop-1.10.0.jar:/Users/hb/.gradle/caches/modules-2/files-2.1/org.jetbrains.compose.foundation/foundation-layout-desktop/1.10.0/263364f922ef14fb64f1313a384a0c31cd6f3fa5/foundation-layout-desktop-1.10.0.jar:/Users/hb/.gradle/caches/modules-2/files-2.1/org.jetbrains.compose.material/material-icons-core-desktop/1.7.0/414b3096050fe647b0638832eace80f22c06b85c/material-icons-core-desktop-1.7.0.jar:/Users/hb/.gradle/caches/modules-2/files-2.1/org.jetbrains.compose.animation/animation-core-desktop/1.10.0/5dd98c5745e548644b7657901bbcc4c2c8f9ec59/animation-core-desktop-1.10.0.jar:/Users/hb/.gradle/caches/modules-2/files-2.1/org.jetbrains.compose.ui/ui-desktop/1.10.0/361220f423057a8dae48d6ba8a0294f0948caf8a/ui-desktop-1.10.0.jar:/Users/hb/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-serialization-kotlinx-json-jvm/3.4.0/2a09f17d70b6e61623fd8aff9bdce6d7877892/ktor-serialization-kotlinx-json-jvm-3.4.0.jar:/Users/hb/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-server-cio-jvm/3.4.0/16a50d239963841ae64e8e207f93ae7a5fdd7062/ktor-server-cio-jvm-3.4.0.jar:/Users/hb/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-server-sessions-jvm/3.4.0/35d3bb0535b2a6429b1eb73390cd4de9c541e654/ktor-server-sessions-jvm-3.4.0.jar:/Users/hb/.gradle/caches/modules-2/files-2.1/io.ktor/ktor-server-core-jvm/3.4.0/97aba0f5e3cd539679907382a3f57Line truncated
|
||||
sun.awt.enableExtraMouseButtons=true
|
||||
java.vm.vendor=Eclipse Adoptium
|
||||
sun.arch.data.model=64
|
||||
user.variant=
|
||||
java.vendor.url=https://adoptium.net/
|
||||
java.vm.specification.version=21
|
||||
os.name=Mac OS X
|
||||
user.country=DE
|
||||
sun.java.launcher=SUN_STANDARD
|
||||
sun.boot.library.path=/Library/Java/JavaVirtualMachines/temurin-21.jdk/Contents/Home/lib
|
||||
sun.java.command=net.keinekekse.app.MainKt
|
||||
http.nonProxyHosts=local|*.local|169.254/16|*.169.254/16
|
||||
jdk.debug=release
|
||||
sun.cpu.endian=little
|
||||
user.home=/Users/hb
|
||||
user.language=de
|
||||
java.specification.vendor=Oracle Corporation
|
||||
java.version.date=2025-10-21
|
||||
java.home=/Library/Java/JavaVirtualMachines/temurin-21.jdk/Contents/Home
|
||||
file.separator=/
|
||||
java.vm.compressedOopsMode=Non-zero disjoint base
|
||||
line.separator=
|
||||
|
||||
java.vm.specification.vendor=Oracle Corporation
|
||||
java.specification.name=Java Platform API Specification
|
||||
apple.awt.application.name=MainKt
|
||||
sun.management.compiler=HotSpot 64-Bit Tiered Compilers
|
||||
ftp.nonProxyHosts=local|*.local|169.254/16|*.169.254/16
|
||||
java.runtime.version=21.0.9+10-LTS
|
||||
user.name=hb
|
||||
stdout.encoding=UTF-8
|
||||
path.separator=:
|
||||
os.version=26.2
|
||||
java.runtime.name=OpenJDK Runtime Environment
|
||||
file.encoding=UTF-8
|
||||
java.vm.name=OpenJDK 64-Bit Server VM
|
||||
java.vendor.version=Temurin-21.0.9+10
|
||||
java.vendor.url.bug=https://github.com/adoptium/adoptium-support/issues
|
||||
java.io.tmpdir=/var/folders/tb/nj4p1kpn1fn__rhr8k1gvfhw0000gn/T/
|
||||
java.version=21.0.9
|
||||
user.dir=/Users/hb/Workspaces/Kotlin/app/books
|
||||
os.arch=aarch64
|
||||
java.vm.specification.name=Java Virtual Machine Specification
|
||||
native.encoding=UTF-8
|
||||
java.library.path=/Users/hb/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
|
||||
java.vm.info=mixed mode, sharing
|
||||
stderr.encoding=UTF-8
|
||||
java.vendor=Eclipse Adoptium
|
||||
java.vm.version=21.0.9+10-LTS
|
||||
sun.io.unicode.encoding=UnicodeBig
|
||||
socksNonProxyHosts=local|*.local|169.254/16|*.169.254/16
|
||||
java.class.version=65.0
|
||||
*/
|
||||
Whitespace-only changes.
@@ -18,6 +18,8 @@ koin-plugin = "0.3.0"
|
||||
ktor = "3.4.0"
|
||||
logback = "1.5.26"
|
||||
material3 = "1.10.0-alpha05"
|
||||
settings = "1.3.0"
|
||||
dataStore = "1.2.0"
|
||||
uiDesktop = "1.7.0"
|
||||
|
||||
[libraries]
|
||||
@@ -34,7 +36,7 @@ compose-materialIcons = { module = "org.jetbrains.compose.material:material-icon
|
||||
compose-ui = { module = "org.jetbrains.compose.ui:ui", version.ref = "composeMultiplatform" }
|
||||
compose-components-resources = { module = "org.jetbrains.compose.components:components-resources", version.ref = "composeMultiplatform" }
|
||||
compose-uiToolingPreview = { module = "org.jetbrains.compose.ui:ui-tooling-preview", version.ref = "composeMultiplatform" }
|
||||
# --
|
||||
# ----
|
||||
kotlinx-coroutinesSwing = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-swing", version.ref = "kotlinx-coroutines" }
|
||||
kotlinx-html = { module = "org.jetbrains.kotlinx:kotlinx-html", version.ref = "kotlinx-html" }
|
||||
kotlin-wrappersCss = { module = "org.jetbrains.kotlin-wrappers:kotlin-css-jvm", version.ref = "kotlin-wrappers-css" }
|
||||
@@ -77,7 +79,12 @@ koin-compose-viewmodel-navigation = { module = "io.insert-koin:koin-compose-view
|
||||
#koin-compose-viewmodel-navigation3 = { module = "io.insert-koin:koin-compose-viewmodel-navigation3" }
|
||||
koin-ktor = { module = "io.insert-koin:koin-ktor" }
|
||||
koin-test = { module = "io.insert-koin:koin-test" }
|
||||
# --
|
||||
# ----
|
||||
|
||||
# Settings vorerst ohne externe Hilfe
|
||||
#multiplatformSettings = { module = "com.russhwolf:multiplatform-settings", version.ref = "settings" }
|
||||
#androidx-datastore = { module = "androidx.datastore:datastore", version.ref = "dataStore" }
|
||||
#androidx-datastore-preferences = { module = "androidx.datastore:datastore-preferences", version.ref = "dataStore" }
|
||||
|
||||
[bundles]
|
||||
kotlin-compose = [
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
#auto generated
|
||||
#Tue Feb 03 00:47:38 CET 2026
|
||||
build.number=19
|
||||
#Wed Feb 04 23:56:00 CET 2026
|
||||
build.number=20
|
||||
@@ -3,14 +3,14 @@ package net.keinekekse.app.server
|
||||
import net.keinekekse.version.Version
|
||||
|
||||
object VERSION: Version {
|
||||
override val version = "0.1.0-beta.1+build.19"
|
||||
override val fullVersion = "0.1.0-beta.1+build.19"
|
||||
override val version = "0.1.0-beta.1+build.20"
|
||||
override val fullVersion = "0.1.0-beta.1+build.20"
|
||||
override val major = 0
|
||||
override val minor = 1
|
||||
override val patch = 0
|
||||
override val preRelease = "beta.1"
|
||||
override val buildMetadata = "build.19"
|
||||
override val buildDate = "2026-02-02T23:47:38.629893Z"
|
||||
override val buildMetadata = "build.20"
|
||||
override val buildDate = "2026-02-04T22:56:00.753833Z"
|
||||
override val displayName = "kAS"
|
||||
override val copyright = "Copyright (c) 2026 Hartmut Bauer"
|
||||
override val name = "server"
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
package net.keinekekse.app.config
|
||||
|
||||
interface Settings {
|
||||
fun get(key: String): String?
|
||||
fun get(key: String, default: String): String = get(key) ?: default
|
||||
fun getInt(key: String): Int? = get(key)?.toIntOrNull()
|
||||
fun getInt(key: String, default: Int): Int = getInt(key) ?: default
|
||||
fun getLong(key: String): Long? = get(key)?.toLongOrNull()
|
||||
fun getLong(key: String, default: Long): Long = getLong(key) ?: default
|
||||
fun getFloat(key: String): Float? = get(key)?.toFloatOrNull()
|
||||
fun getFloat(key: String, default: Float): Float = getFloat(key) ?: default
|
||||
fun getBoolean(key: String): Boolean? = get(key)?.toBooleanStrictOrNull()
|
||||
fun getBoolean(key: String, default: Boolean): Boolean = getBoolean(key) ?: default
|
||||
|
||||
fun put(key: String, value: String)
|
||||
fun putInt(key: String, value: Int)
|
||||
fun putLong(key: String, value: Long)
|
||||
fun putFloat(key: String, value: Float)
|
||||
fun putBoolean(key: String, value: Boolean)
|
||||
|
||||
fun hasKey(key: String): Boolean = get(key) != null
|
||||
fun remove(key: String)
|
||||
fun clear()
|
||||
|
||||
fun size(): Int
|
||||
fun keys(): Set<String>
|
||||
}
|
||||
@@ -10,6 +10,8 @@ import androidx.compose.ui.draw.drawBehind
|
||||
import androidx.compose.ui.graphics.drawscope.Stroke
|
||||
import androidx.compose.ui.unit.dp
|
||||
|
||||
// TODO (ProgressIndicator.() -> Unit) --> { animationSize = ....
|
||||
|
||||
@Composable
|
||||
fun ProgressIndicator(animationSize: Int = 48, paddingTop: Int = 16, strokeWidth: Int = 5) {
|
||||
val primaryColor = MaterialTheme.colorScheme.primary
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
package net.keinekekse.app.config
|
||||
|
||||
import java.util.prefs.Preferences
|
||||
|
||||
class JvmSettings(clazz: Class<*>? = null) : Settings {
|
||||
private val preferences: Preferences
|
||||
|
||||
init {
|
||||
if (clazz != null) {
|
||||
preferences = Preferences.userNodeForPackage(clazz)
|
||||
} else {
|
||||
preferences = Preferences.userRoot()
|
||||
}
|
||||
}
|
||||
|
||||
override fun get(key: String): String? {
|
||||
return preferences.get(key, null)
|
||||
}
|
||||
|
||||
override fun put(key: String, value: String) {
|
||||
preferences.put(key, value)
|
||||
}
|
||||
|
||||
override fun putInt(key: String, value: Int) {
|
||||
preferences.putInt(key, value)
|
||||
}
|
||||
|
||||
override fun putLong(key: String, value: Long) {
|
||||
preferences.putLong(key, value)
|
||||
}
|
||||
|
||||
override fun putFloat(key: String, value: Float) {
|
||||
preferences.putFloat(key, value)
|
||||
}
|
||||
|
||||
override fun putBoolean(key: String, value: Boolean) {
|
||||
preferences.putBoolean(key, value)
|
||||
}
|
||||
|
||||
override fun remove(key: String) {
|
||||
preferences.remove(key)
|
||||
}
|
||||
|
||||
override fun clear() {
|
||||
preferences.clear()
|
||||
}
|
||||
|
||||
override fun size(): Int {
|
||||
return preferences.keys().size
|
||||
}
|
||||
|
||||
override fun keys(): Set<String> {
|
||||
return preferences.keys().toSet()
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user