From 323dec9e78616b3b1f3a962a98dd0b7cefb3c93e Mon Sep 17 00:00:00 2001 From: Hasinjato Date: Mon, 22 Jun 2026 17:31:55 +0300 Subject: [PATCH] Resolve SharedPreferences for desktop & com.russhwolf.settings for android --- composeApp/build.gradle.kts | 1 + .../kotlin/mg/dot/feufaro/di/AndroidModule.kt | 13 ++++++++----- .../kotlin/mg/dot/feufaro/di/AppModule.kt | 2 +- .../kotlin/mg/dot/feufaro/di/DesktopModule.kt | 6 ++++++ gradle/libs.versions.toml | 2 ++ 5 files changed, 18 insertions(+), 6 deletions(-) diff --git a/composeApp/build.gradle.kts b/composeApp/build.gradle.kts index 5e7b097..e5bbb6b 100644 --- a/composeApp/build.gradle.kts +++ b/composeApp/build.gradle.kts @@ -72,6 +72,7 @@ kotlin { implementation(libs.kotlinx.serialization.json) implementation(libs.bundles.voyager) implementation(libs.cafe.voyager.koin) + implementation(libs.multiplatform.settings) implementation(compose.materialIconsExtended) //implementation(kotlin("stdlib-jdk8")) //implementation("org.jetbrains.compose.foundation:foundation-desktop") diff --git a/composeApp/src/androidMain/kotlin/mg/dot/feufaro/di/AndroidModule.kt b/composeApp/src/androidMain/kotlin/mg/dot/feufaro/di/AndroidModule.kt index 6a3d710..64bb069 100644 --- a/composeApp/src/androidMain/kotlin/mg/dot/feufaro/di/AndroidModule.kt +++ b/composeApp/src/androidMain/kotlin/mg/dot/feufaro/di/AndroidModule.kt @@ -1,13 +1,12 @@ package mg.dot.feufaro.di import android.content.Context +import com.russhwolf.settings.Settings +import com.russhwolf.settings.SharedPreferencesSettings import mg.dot.feufaro.AndroidFileRepository -import mg.dot.feufaro.config.AppConfig -import org.koin.core.module.dsl.singleOf // Import for Koin DSL -import org.koin.core.module.dsl.bind // Import for Koin DSL -import org.koin.dsl.module import mg.dot.feufaro.FileRepository -import org.koin.android.ext.koin.androidContext // Import for androidContext() +import mg.dot.feufaro.config.AppConfig +import org.koin.dsl.module val androidModule = module { // Koin will automatically provide the Android Context because you called androidContext() in AndroidApp. @@ -18,6 +17,10 @@ val androidModule = module { transposeasif = "C", ) } + single { + val sharedPrefs = get().getSharedPreferences("mg.dot.feufaro", Context.MODE_PRIVATE) + SharedPreferencesSettings(sharedPrefs) + } } diff --git a/composeApp/src/commonMain/kotlin/mg/dot/feufaro/di/AppModule.kt b/composeApp/src/commonMain/kotlin/mg/dot/feufaro/di/AppModule.kt index b83f5de..f6bdf9e 100644 --- a/composeApp/src/commonMain/kotlin/mg/dot/feufaro/di/AppModule.kt +++ b/composeApp/src/commonMain/kotlin/mg/dot/feufaro/di/AppModule.kt @@ -11,7 +11,7 @@ import org.koin.core.module.dsl.singleOf val commonModule = module { singleOf(::MusicXML) - single { DisplayConfigManager(fileRepository = get())} + single { DisplayConfigManager(fileRepository = get(), settings = get()) } single { SharedScreenModel(fileRepository = get()) } single { Solfa(get(), get()) } diff --git a/composeApp/src/desktopMain/kotlin/mg/dot/feufaro/di/DesktopModule.kt b/composeApp/src/desktopMain/kotlin/mg/dot/feufaro/di/DesktopModule.kt index 51ef348..8d87773 100644 --- a/composeApp/src/desktopMain/kotlin/mg/dot/feufaro/di/DesktopModule.kt +++ b/composeApp/src/desktopMain/kotlin/mg/dot/feufaro/di/DesktopModule.kt @@ -1,10 +1,13 @@ package mg.dot.feufaro.di + import com.russhwolf.settings.PreferencesSettings + import com.russhwolf.settings.Settings import org.koin.core.module.dsl.singleOf // Import for Koin DSL import org.koin.core.module.dsl.bind // Import for Koin DSL import org.koin.dsl.module import mg.dot.feufaro.FileRepository import mg.dot.feufaro.config.AppConfig + import java.util.prefs.Preferences val desktopModule = module { // When Koin is initialized on Desktop, it will use DesktopFileRepository @@ -19,4 +22,7 @@ actual val platformModule = module { single { DesktopFileRepository() } // Une version simple sans Context + single { + PreferencesSettings(Preferences.userRoot().node("mg.dot.feufaro")) + } } \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b9b7ff8..5c50550 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -12,6 +12,7 @@ androidx-lifecycle = "2.9.1" androidx-testExt = "1.2.1" composeHotReload = "1.0.0-alpha11" composeMultiplatform = "1.8.2" +multiplatformSettings = "1.1.1" junit = "4.13.2" kotlin = "2.2.0" kotlinx-coroutines = "1.10.2" @@ -58,6 +59,7 @@ voyager-navigator = { module = "cafe.adriel.voyager:voyager-navigator", version. voyager-screenmodel = { module = "cafe.adriel.voyager:voyager-screenmodel", version.ref = "voyager" } voyager-koin = { module = "cafe.adriel.voyager:voyager-koin", version.ref = "voyager" } #ktmidi = { group = "dev.atsushieno", name = "ktmidi", version.ref = "ktmidi" } +multiplatform-settings = { module = "com.russhwolf:multiplatform-settings", version.ref = "multiplatformSettings" } [plugins] androidApplication = { id = "com.android.application", version.ref = "agp" }