added wasm/js target

This commit is contained in:
2024-08-05 06:42:41 +03:00
parent 68e6ec3e8f
commit b83bec3a54
17 changed files with 141 additions and 18 deletions
@@ -1,12 +1,11 @@
package dev.meloda.overseerr.network.di
import io.ktor.client.*
import io.ktor.client.engine.cio.*
import org.koin.dsl.module
val networkModule = module {
single {
HttpClient(CIO) {
HttpClient {
}
}
@@ -3,11 +3,8 @@ package dev.meloda.overseerr.settings
import dev.meloda.overseerr.ext.setValue
import dev.meloda.overseerr.settings.model.AppSettings
import io.github.xxfast.kstore.KStore
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.IO
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.withContext
interface SettingsController {
val settings: StateFlow<AppSettings>
@@ -22,13 +19,13 @@ class SettingsControllerImpl(
override val settings = MutableStateFlow(AppSettings.EMPTY)
override suspend fun updateAppSettings(update: (AppSettings) -> AppSettings) = withContext(Dispatchers.IO) {
override suspend fun updateAppSettings(update: (AppSettings) -> AppSettings) {
store.set(update(settings.value))
}
override suspend fun loadAppSettings(): AppSettings = withContext(Dispatchers.IO) {
override suspend fun loadAppSettings(): AppSettings {
val loadedSettings = store.get() ?: AppSettings.EMPTY
settings.setValue { loadedSettings }
loadedSettings
return loadedSettings
}
}
@@ -1,18 +1,13 @@
package dev.meloda.overseerr.settings.di
import dev.meloda.overseerr.appDir
import dev.meloda.overseerr.settings.SettingsController
import dev.meloda.overseerr.settings.SettingsControllerImpl
import dev.meloda.overseerr.settings.model.AppSettings
import io.github.xxfast.kstore.file.storeOf
import okio.Path.Companion.toPath
import dev.meloda.overseerr.settings.model.SettingsStoreProvider
import org.koin.core.module.dsl.singleOf
import org.koin.dsl.bind
import org.koin.dsl.module
val settingsModule = module {
single {
storeOf<AppSettings>(file = "$appDir/app_settings.json".toPath())
}
single { SettingsStoreProvider().provideStore() }
singleOf(::SettingsControllerImpl) bind SettingsController::class
}
@@ -0,0 +1,8 @@
package dev.meloda.overseerr.settings.model
import io.github.xxfast.kstore.KStore
expect class SettingsStoreProvider() {
fun provideStore(): KStore<AppSettings>
}