From 17dc6ef123bafacc79db332b18b6e06f448669d8 Mon Sep 17 00:00:00 2001 From: firestaerter3 <17737913+firestaerter3@users.noreply.github.com> Date: Fri, 3 Apr 2026 21:19:34 +0200 Subject: [PATCH] Auto-connect to komf when Komelia is served from a komf instance When no komf settings are stored in localStorage (first visit), fall back to the page origin instead of the hardcoded localhost:8085 default. This means Komelia served at e.g. http://192.168.1.141:8086 will automatically connect to that komf instance with enabled=true, without requiring the user to manually configure the URL. Localhost origins still fall back to KomfSettings() (disabled) so development/local installs are unaffected. Related: snd-r/komf#295 --- .../settings/LocalStorageSettingsRepository.kt | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/komelia-db/wasm/src/wasmJsMain/kotlin/snd/komelia/db/settings/LocalStorageSettingsRepository.kt b/komelia-db/wasm/src/wasmJsMain/kotlin/snd/komelia/db/settings/LocalStorageSettingsRepository.kt index 5922ba6e5..754418716 100644 --- a/komelia-db/wasm/src/wasmJsMain/kotlin/snd/komelia/db/settings/LocalStorageSettingsRepository.kt +++ b/komelia-db/wasm/src/wasmJsMain/kotlin/snd/komelia/db/settings/LocalStorageSettingsRepository.kt @@ -2,6 +2,7 @@ package snd.komelia.db.settings import io.github.snd_r.komelia.image.UpsamplingMode import kotlinx.browser.localStorage +import kotlinx.browser.window import kotlinx.serialization.json.Json import org.w3c.dom.set import snd.komelia.db.AppSettings @@ -50,9 +51,18 @@ class LocalStorageSettingsRepository { } fun getKomfSettings(): KomfSettings { - return localStorage.getItem(komfSettingsKey) - ?.let { json.decodeFromString(it) } - ?: KomfSettings() + val stored = localStorage.getItem(komfSettingsKey) + ?.let { runCatching { json.decodeFromString(it) }.getOrNull() } + if (stored != null) return stored + + // When Komelia is served from a komf instance, auto-connect to that instance + // rather than defaulting to localhost:8085 + val origin = window.location.origin + return if (origin.isNotBlank() && !origin.contains("localhost") && !origin.contains("127.0.0.1")) { + KomfSettings(enabled = true, remoteUrl = origin) + } else { + KomfSettings() + } } fun saveKomfSettings(settings: KomfSettings) {