From e8b74e41526a46a5b15f8932a2702ff91d54e3a1 Mon Sep 17 00:00:00 2001 From: Eugene Date: Sat, 8 Aug 2026 19:09:46 +0300 Subject: [PATCH] fix revoke issue, fix dialogs --- .../src/main/kotlin/ru/shadowsparky/vbox/backend/Main.kt | 2 +- .../vbox/backend/presentation/routing/AuthRouting.kt | 8 ++++---- .../vbox/shared/presentation/list/VideoScreen.kt | 1 + .../vbox/shared/presentation/overview/OverviewScreen.kt | 1 + .../overview/episode/EpisodeOverviewScreen.kt | 1 + .../presentation/overview/season/SeasonOverviewScreen.kt | 2 ++ .../vbox/shared/presentation/player/PlayerScreen.kt | 2 +- .../src/main/kotlin/ru/shadowsparky/plugin/Koin.kt | 3 ++- .../kotlin/ru/shadowsparky/ui/components/ErrorInfo.kt | 3 +-- 9 files changed, 14 insertions(+), 9 deletions(-) diff --git a/apps/vbox/backend/src/main/kotlin/ru/shadowsparky/vbox/backend/Main.kt b/apps/vbox/backend/src/main/kotlin/ru/shadowsparky/vbox/backend/Main.kt index 2ba644c..fb18316 100644 --- a/apps/vbox/backend/src/main/kotlin/ru/shadowsparky/vbox/backend/Main.kt +++ b/apps/vbox/backend/src/main/kotlin/ru/shadowsparky/vbox/backend/Main.kt @@ -10,7 +10,7 @@ import ru.shadowsparky.vbox.backend.presentation.configureRouting import ru.shadowsparky.vbox.backend.presentation.configureSerialization import ru.shadowsparky.vbox.backend.presentation.configureWebSocket -@KoinApplication +@KoinApplication(modules = [BackendModule::class]) object VBoxBackend fun main(args: Array) { diff --git a/apps/vbox/backend/src/main/kotlin/ru/shadowsparky/vbox/backend/presentation/routing/AuthRouting.kt b/apps/vbox/backend/src/main/kotlin/ru/shadowsparky/vbox/backend/presentation/routing/AuthRouting.kt index 0ecb4d0..744804e 100644 --- a/apps/vbox/backend/src/main/kotlin/ru/shadowsparky/vbox/backend/presentation/routing/AuthRouting.kt +++ b/apps/vbox/backend/src/main/kotlin/ru/shadowsparky/vbox/backend/presentation/routing/AuthRouting.kt @@ -28,6 +28,10 @@ fun Routing.setupAuthMethods( post(AuthTokenRepository.UPDATE_PATH) { call.respond(default.update(call.receive())) } + post(AuthTokenRepository.REVOKE_PATH) { + default.revoke(call.receive()) + call.respond(HttpStatusCode.OK) + } authenticate(AUTH_JWT_NAME) { setupBaseMethods(routingEntryPoint.videoApi) setupSearch(searchFactory) @@ -42,9 +46,5 @@ fun Routing.setupAuthMethods( .changePassword(call.receive()) call.respond(HttpStatusCode.OK) } - post(AuthTokenRepository.REVOKE_PATH) { - default.revoke(call.receive()) - call.respond(HttpStatusCode.OK) - } } } diff --git a/apps/vbox/client/shared/src/commonMain/kotlin/ru/shadowsparky/vbox/shared/presentation/list/VideoScreen.kt b/apps/vbox/client/shared/src/commonMain/kotlin/ru/shadowsparky/vbox/shared/presentation/list/VideoScreen.kt index 97c2228..6f7aa8b 100644 --- a/apps/vbox/client/shared/src/commonMain/kotlin/ru/shadowsparky/vbox/shared/presentation/list/VideoScreen.kt +++ b/apps/vbox/client/shared/src/commonMain/kotlin/ru/shadowsparky/vbox/shared/presentation/list/VideoScreen.kt @@ -119,6 +119,7 @@ fun VideoScreenContent( if (error != null) { ErrorContent( error, + modifier = Modifier.fillMaxSize(), buttonText = stringResource(Res.string.retry) ) { onRefresh() } } else if (items != null) { diff --git a/apps/vbox/client/shared/src/commonMain/kotlin/ru/shadowsparky/vbox/shared/presentation/overview/OverviewScreen.kt b/apps/vbox/client/shared/src/commonMain/kotlin/ru/shadowsparky/vbox/shared/presentation/overview/OverviewScreen.kt index 5e90e0b..59e13ce 100644 --- a/apps/vbox/client/shared/src/commonMain/kotlin/ru/shadowsparky/vbox/shared/presentation/overview/OverviewScreen.kt +++ b/apps/vbox/client/shared/src/commonMain/kotlin/ru/shadowsparky/vbox/shared/presentation/overview/OverviewScreen.kt @@ -104,6 +104,7 @@ fun OverviewScreen(component: OverviewComponent) { errorState != null -> ErrorContent( errorState!!, + modifier = Modifier.fillMaxSize(), buttonText = stringResource(Res.string.retry) ) { component.loadDetailsIfNeeded() } diff --git a/apps/vbox/client/shared/src/commonMain/kotlin/ru/shadowsparky/vbox/shared/presentation/overview/episode/EpisodeOverviewScreen.kt b/apps/vbox/client/shared/src/commonMain/kotlin/ru/shadowsparky/vbox/shared/presentation/overview/episode/EpisodeOverviewScreen.kt index eb48870..b66f5a7 100644 --- a/apps/vbox/client/shared/src/commonMain/kotlin/ru/shadowsparky/vbox/shared/presentation/overview/episode/EpisodeOverviewScreen.kt +++ b/apps/vbox/client/shared/src/commonMain/kotlin/ru/shadowsparky/vbox/shared/presentation/overview/episode/EpisodeOverviewScreen.kt @@ -179,6 +179,7 @@ fun EpisodesOverviewList( if (errorCode != null) { ErrorContent( errorCode, + modifier = Modifier.fillMaxSize(), buttonText = stringResource(Res.string.retry) ) { loadLinks() } } else if (episodes != null) { diff --git a/apps/vbox/client/shared/src/commonMain/kotlin/ru/shadowsparky/vbox/shared/presentation/overview/season/SeasonOverviewScreen.kt b/apps/vbox/client/shared/src/commonMain/kotlin/ru/shadowsparky/vbox/shared/presentation/overview/season/SeasonOverviewScreen.kt index 3282a8a..b19d163 100644 --- a/apps/vbox/client/shared/src/commonMain/kotlin/ru/shadowsparky/vbox/shared/presentation/overview/season/SeasonOverviewScreen.kt +++ b/apps/vbox/client/shared/src/commonMain/kotlin/ru/shadowsparky/vbox/shared/presentation/overview/season/SeasonOverviewScreen.kt @@ -4,6 +4,7 @@ import androiddev.apps.vbox.client.shared.generated.resources.Res import androiddev.apps.vbox.client.shared.generated.resources.retry import androiddev.apps.vbox.client.shared.generated.resources.seasons_overview import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Text @@ -41,6 +42,7 @@ fun SeasonOverviewScreen(component: SeasonOverviewComponent) { if (err.value != null) { ErrorContent( err.value!!, + modifier = Modifier.fillMaxSize(), buttonText = stringResource(Res.string.retry) ) { component.load() } } else if (seasons.value != null) { diff --git a/apps/vbox/client/shared/src/commonMain/kotlin/ru/shadowsparky/vbox/shared/presentation/player/PlayerScreen.kt b/apps/vbox/client/shared/src/commonMain/kotlin/ru/shadowsparky/vbox/shared/presentation/player/PlayerScreen.kt index aa44048..2dbc177 100644 --- a/apps/vbox/client/shared/src/commonMain/kotlin/ru/shadowsparky/vbox/shared/presentation/player/PlayerScreen.kt +++ b/apps/vbox/client/shared/src/commonMain/kotlin/ru/shadowsparky/vbox/shared/presentation/player/PlayerScreen.kt @@ -49,7 +49,7 @@ fun PlayerScreen(component: PlayerComponent) { is PlayerEvent.Error -> { ErrorContent( state.message, - modifier = Modifier.padding(it), + modifier = Modifier.fillMaxSize().padding(it), buttonText = stringResource(Res.string.retry), ) { component.load() } } diff --git a/build-logic/convention/src/main/kotlin/ru/shadowsparky/plugin/Koin.kt b/build-logic/convention/src/main/kotlin/ru/shadowsparky/plugin/Koin.kt index ce37c84..4b56af3 100644 --- a/build-logic/convention/src/main/kotlin/ru/shadowsparky/plugin/Koin.kt +++ b/build-logic/convention/src/main/kotlin/ru/shadowsparky/plugin/Koin.kt @@ -12,6 +12,7 @@ import ru.shadowsparky.hasAndroidSupport import ru.shadowsparky.hasMultiplatformSupport import ru.shadowsparky.implementation import ru.shadowsparky.isAndroidApp +import ru.shadowsparky.isBackendApp import ru.shadowsparky.isWebApp class Koin : Plugin { @@ -19,7 +20,7 @@ class Koin : Plugin { val libs = findLibs() plugins.apply(libs.findPlugin("koin.compiler").get().get().pluginId) koinCompiler { - val checkSafety = isAndroidApp || isWebApp // || isBackendApp + val checkSafety = isAndroidApp || isWebApp || isBackendApp compileSafety.set(checkSafety) } dependencies { diff --git a/libs/ui/src/commonMain/kotlin/ru/shadowsparky/ui/components/ErrorInfo.kt b/libs/ui/src/commonMain/kotlin/ru/shadowsparky/ui/components/ErrorInfo.kt index be6e3ac..a6236ad 100644 --- a/libs/ui/src/commonMain/kotlin/ru/shadowsparky/ui/components/ErrorInfo.kt +++ b/libs/ui/src/commonMain/kotlin/ru/shadowsparky/ui/components/ErrorInfo.kt @@ -6,7 +6,6 @@ import androiddev.libs.ui.generated.resources.ok import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding @@ -32,7 +31,7 @@ fun ErrorContent( Column( verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally, - modifier = modifier.fillMaxSize().padding(4.dp) + modifier = modifier.padding(4.dp) ) { Text( text = stringResource(Res.string.error_title),