log headers, add user agent to backend app

This commit is contained in:
2026-08-09 07:21:41 +03:00
parent c5a4963eeb
commit db47d8c2ce
3 changed files with 12 additions and 14 deletions
@@ -5,6 +5,7 @@ import org.koin.core.annotation.Module
import org.koin.core.annotation.Single import org.koin.core.annotation.Single
import ru.shadowsparky.backend.data.EnvFetcher import ru.shadowsparky.backend.data.EnvFetcher
import ru.shadowsparky.backend.domain.JwtInfo import ru.shadowsparky.backend.domain.JwtInfo
import ru.shadowsparky.http.domain.UserAgentProvider
import ru.shadowsparky.vbox.backend.di.DbModule import ru.shadowsparky.vbox.backend.di.DbModule
import ru.shadowsparky.vbox.backend.di.HttpModule import ru.shadowsparky.vbox.backend.di.HttpModule
@@ -20,6 +21,13 @@ class VboxModule {
"server side data storage" "server side data storage"
) )
} }
@Single
fun provideUserAgent(): UserAgentProvider {
return object : UserAgentProvider {
override fun provide(): String? = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36"
}
}
} }
@Module( @Module(
@@ -59,31 +59,23 @@ fun main() {
@OptIn(ExperimentalDecomposeApi::class, ExperimentalComposeUiApi::class) @OptIn(ExperimentalDecomposeApi::class, ExperimentalComposeUiApi::class)
fun mainInternal() { fun mainInternal() {
val lifecycle = LifecycleRegistry()
startKoin<VBox>() startKoin<VBox>()
val lifecycle = LifecycleRegistry()
val composeRoot = document.getElementById("compose-root") as HTMLElement val composeRoot = document.getElementById("compose-root") as HTMLElement
var rootRef: VBoxRootComponent? = null var rootRef: VBoxRootComponent? = null
val root: VBoxRootComponent = withWebHistory { stateKeeper: StateKeeper, deepLinkUrl: String? -> val root: VBoxRootComponent = withWebHistory { stateKeeper: StateKeeper, deepLinkUrl: String? ->
if (rootRef == null) { if (rootRef == null) {
rootRef = createRoot(lifecycle, stateKeeper, deepLinkUrl) rootRef = createRoot(lifecycle, stateKeeper, deepLinkUrl)
} }
rootRef rootRef
} }
hookPageVisibility(lifecycle) hookPageVisibility(lifecycle)
lifecycle.doOnResume { hideElementById("loader") } lifecycle.doOnResume { hideElementById("loader") }
ComposeViewport(viewportContainer = composeRoot, content = { ComposeViewport(viewportContainer = composeRoot, content = {
val r = remember { root } val r = remember { root }
LaunchedEffect(null) { LaunchedEffect(null) {
r.onFinish.collect { r.navReplace(Route.Loading()) } r.onFinish.collect { r.navReplace(Route.Loading()) }
} }
Box(Modifier.fillMaxSize().padding(WindowInsets.safeDrawing.asPaddingValues())) { Box(Modifier.fillMaxSize().padding(WindowInsets.safeDrawing.asPaddingValues())) {
Nav(r) Nav(r)
} }
@@ -93,14 +85,12 @@ fun mainInternal() {
private fun createRoot( private fun createRoot(
lifecycle: LifecycleRegistry, lifecycle: LifecycleRegistry,
stateKeeper: StateKeeper, stateKeeper: StateKeeper,
deepLinkUrl: String?, deepLinkUrl: String?
): VBoxRootComponent { ): VBoxRootComponent {
val ctx = DefaultComponentContext( val ctx = DefaultComponentContext(
lifecycle = lifecycle, stateKeeper = stateKeeper lifecycle = lifecycle, stateKeeper = stateKeeper
) )
val deep = deepLinkUrl?.let { runCatching { UrlRoutes.parseUrl(it) }.getOrNull() } val deep = deepLinkUrl?.let { UrlRoutes.parseUrl(it) }
val initRoute: Route = deep ?: Route.default val initRoute: Route = deep ?: Route.default
return koin.get<RootFactory>().create(context = ctx, initStack = initRoute) return koin.get<RootFactory>().create(context = ctx, initStack = initRoute)
} }
@@ -78,7 +78,7 @@ class HttpClientSettings(
install(Logging) { install(Logging) {
val isDebug = koin.getOrNull<AppConfig>()?.debug ?: false val isDebug = koin.getOrNull<AppConfig>()?.debug ?: false
if (isDebug) { if (isDebug) {
this.level = LogLevel.ALL this.level = LogLevel.HEADERS
this.logger = object : Logger { this.logger = object : Logger {
override fun log(message: String) { override fun log(message: String) {
log.d("Http", message) log.d("Http", message)