From dd369177c11d1ec76f5b004cd13925dbabf260ab Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Wed, 18 May 2022 15:33:26 +0600 Subject: [PATCH] one more try to fix nosuchelement exception --- .../client/settings/DefaultAuthSettings.kt | 3 +- .../features/auth/client/ui/AuthUIFSMState.kt | 4 --- .../features/auth/client/ui/AuthUIState.kt | 14 ++++----- .../features/auth/client/AuthView.kt | 3 +- .../features/auth/common/AuthModels.kt | 29 ------------------- .../common/common/ui/fsm/UIFSMState.kt | 5 ---- .../postssystem/features/roles/common/Role.kt | 6 +++- .../roles/manager/common/RolesManagerRole.kt | 22 ++++---------- ...ersRolesStorageServerRoutesConfigurator.kt | 3 +- gradle/libs.versions.toml | 9 +++--- .../telegram/loader/server/SubConfig.kt | 3 ++ 11 files changed, 27 insertions(+), 74 deletions(-) diff --git a/features/auth/client/src/commonMain/kotlin/dev/inmo/postssystem/features/auth/client/settings/DefaultAuthSettings.kt b/features/auth/client/src/commonMain/kotlin/dev/inmo/postssystem/features/auth/client/settings/DefaultAuthSettings.kt index 36ca0a39..b2e1f510 100644 --- a/features/auth/client/src/commonMain/kotlin/dev/inmo/postssystem/features/auth/client/settings/DefaultAuthSettings.kt +++ b/features/auth/client/src/commonMain/kotlin/dev/inmo/postssystem/features/auth/client/settings/DefaultAuthSettings.kt @@ -10,7 +10,6 @@ import dev.inmo.micro_utils.common.either import dev.inmo.micro_utils.repos.* import dev.inmo.postssystem.features.auth.client.createAuthorizedFeaturesDIModule import dev.inmo.postssystem.features.auth.client.ui.AuthUIError.AuthIncorrect -import dev.inmo.postssystem.features.auth.client.ui.AuthUIError.ServerUnavailable import dev.inmo.postssystem.features.common.common.DBDropper import kotlinx.coroutines.* import kotlinx.coroutines.flow.* @@ -85,7 +84,7 @@ data class DefaultAuthSettings( currentModule ?.let { koin.loadModules(listOf(currentModule)) } } return when { - !serverAvailable -> ServerUnavailable + !serverAvailable -> AuthUIError.ServerUnavailable !authCorrect -> AuthIncorrect else -> { _authorizedDIModule.value = newModule diff --git a/features/auth/client/src/commonMain/kotlin/dev/inmo/postssystem/features/auth/client/ui/AuthUIFSMState.kt b/features/auth/client/src/commonMain/kotlin/dev/inmo/postssystem/features/auth/client/ui/AuthUIFSMState.kt index 0e7b5c81..bb4b3119 100644 --- a/features/auth/client/src/commonMain/kotlin/dev/inmo/postssystem/features/auth/client/ui/AuthUIFSMState.kt +++ b/features/auth/client/src/commonMain/kotlin/dev/inmo/postssystem/features/auth/client/ui/AuthUIFSMState.kt @@ -1,12 +1,8 @@ package dev.inmo.postssystem.features.auth.client.ui import dev.inmo.postssystem.features.common.common.ui.fsm.UIFSMState -import dev.inmo.postssystem.features.common.common.ui.fsm.UIFSMStateSerializer -import kotlinx.serialization.Serializable -@Serializable data class AuthUIFSMState( - @Serializable(UIFSMStateSerializer::class) override val from: UIFSMState?, override val context: String = "main" ) : UIFSMState diff --git a/features/auth/client/src/commonMain/kotlin/dev/inmo/postssystem/features/auth/client/ui/AuthUIState.kt b/features/auth/client/src/commonMain/kotlin/dev/inmo/postssystem/features/auth/client/ui/AuthUIState.kt index e8ff6381..10ad4677 100644 --- a/features/auth/client/src/commonMain/kotlin/dev/inmo/postssystem/features/auth/client/ui/AuthUIState.kt +++ b/features/auth/client/src/commonMain/kotlin/dev/inmo/postssystem/features/auth/client/ui/AuthUIState.kt @@ -3,21 +3,21 @@ package dev.inmo.postssystem.features.auth.client.ui import kotlinx.serialization.Serializable @Serializable -sealed class AuthUIError { +sealed interface AuthUIError { @Serializable - object ServerUnavailable : AuthUIError() + object ServerUnavailable : AuthUIError @Serializable - object AuthIncorrect : AuthUIError() + object AuthIncorrect : AuthUIError } @Serializable -sealed class AuthUIState { +sealed interface AuthUIState { @Serializable - data class Init(val showError: AuthUIError? = null) : AuthUIState() + data class Init(val showError: AuthUIError? = null) : AuthUIState @Serializable - object Loading : AuthUIState() + object Loading : AuthUIState @Serializable - object Authorized : AuthUIState() + object Authorized : AuthUIState companion object { val DefaultInit = Init() diff --git a/features/auth/client/src/jsMain/kotlin/dev/inmo/postssystem/features/auth/client/AuthView.kt b/features/auth/client/src/jsMain/kotlin/dev/inmo/postssystem/features/auth/client/AuthView.kt index 81e8a35d..d625b2fa 100644 --- a/features/auth/client/src/jsMain/kotlin/dev/inmo/postssystem/features/auth/client/AuthView.kt +++ b/features/auth/client/src/jsMain/kotlin/dev/inmo/postssystem/features/auth/client/AuthView.kt @@ -10,7 +10,6 @@ import dev.inmo.micro_utils.coroutines.launchSafelyWithoutExceptions import dev.inmo.micro_utils.coroutines.subscribeSafelyWithoutExceptions import dev.inmo.micro_utils.fsm.common.StatesMachine import dev.inmo.postssystem.features.auth.client.ui.AuthUIError.AuthIncorrect -import dev.inmo.postssystem.features.auth.client.ui.AuthUIError.ServerUnavailable import dev.inmo.postssystem.features.common.common.* import dev.inmo.postssystem.features.common.common.ui.JSView import dev.inmo.postssystem.features.common.common.ui.fsm.* @@ -98,7 +97,7 @@ class AuthView( disabled.value = false errorText.value = when (it.showError) { - ServerUnavailable -> "Server unavailable" + AuthUIError.ServerUnavailable -> "Server unavailable" AuthIncorrect -> { passwordState.value = "" "Username or password is incorrect" diff --git a/features/auth/common/src/commonMain/kotlin/dev/inmo/postssystem/features/auth/common/AuthModels.kt b/features/auth/common/src/commonMain/kotlin/dev/inmo/postssystem/features/auth/common/AuthModels.kt index 87a16e7c..67e588c3 100644 --- a/features/auth/common/src/commonMain/kotlin/dev/inmo/postssystem/features/auth/common/AuthModels.kt +++ b/features/auth/common/src/commonMain/kotlin/dev/inmo/postssystem/features/auth/common/AuthModels.kt @@ -8,7 +8,6 @@ import kotlinx.serialization.encoding.Decoder import kotlinx.serialization.encoding.Encoder import kotlin.jvm.JvmInline -@Serializable(AuthKeySerializer::class) sealed interface AuthKey @Serializable @@ -18,34 +17,6 @@ private data class AuthKeySurrogate( val refreshToken: RefreshToken? ) -@Serializer(AuthKey::class) -object AuthKeySerializer : KSerializer { - override val descriptor: SerialDescriptor - get() = AuthKeySurrogate.serializer().descriptor - - override fun deserialize(decoder: Decoder): AuthKey { - val surrogate = AuthKeySurrogate.serializer().deserialize(decoder) - when { - surrogate.authCreds != null -> return surrogate.authCreds - surrogate.token != null -> return surrogate.token - surrogate.refreshToken != null -> return surrogate.refreshToken - } - error("Unsupported version of auth key surrogate") - } - - override fun serialize(encoder: Encoder, value: AuthKey) { - AuthKeySurrogate.serializer().serialize( - encoder, - AuthKeySurrogate( - value as? AuthCreds, - value as? AuthToken, - value as? RefreshToken - ) - ) - } - -} - @Serializable @SerialName("authcreds") data class AuthCreds( diff --git a/features/common/client/src/commonMain/kotlin/dev/inmo/postssystem/features/common/common/ui/fsm/UIFSMState.kt b/features/common/client/src/commonMain/kotlin/dev/inmo/postssystem/features/common/common/ui/fsm/UIFSMState.kt index 7dd5eae4..09ab8645 100644 --- a/features/common/client/src/commonMain/kotlin/dev/inmo/postssystem/features/common/common/ui/fsm/UIFSMState.kt +++ b/features/common/client/src/commonMain/kotlin/dev/inmo/postssystem/features/common/common/ui/fsm/UIFSMState.kt @@ -4,14 +4,9 @@ import dev.inmo.micro_utils.fsm.common.State import dev.inmo.micro_utils.serialization.typed_serializer.TypedSerializer import kotlinx.serialization.* -@Serializable(UIFSMStateSerializer::class) interface UIFSMState : State { val from: UIFSMState? get() = null override val context: String get() = "main" } - -object UIFSMStateSerializer : KSerializer, TypedSerializer( - UIFSMState::class -) diff --git a/features/roles/common/src/commonMain/kotlin/dev/inmo/postssystem/features/roles/common/Role.kt b/features/roles/common/src/commonMain/kotlin/dev/inmo/postssystem/features/roles/common/Role.kt index 78215029..8ed2bcdc 100644 --- a/features/roles/common/src/commonMain/kotlin/dev/inmo/postssystem/features/roles/common/Role.kt +++ b/features/roles/common/src/commonMain/kotlin/dev/inmo/postssystem/features/roles/common/Role.kt @@ -7,7 +7,11 @@ import kotlinx.serialization.encoding.* import kotlinx.serialization.json.* @Serializable(RoleSerializer::class) -interface Role +interface Role { + companion object { + fun serializer(): KSerializer = RoleSerializer + } +} @Serializable data class UnknownRole(val originalJson: JsonElement) : Role diff --git a/features/roles/manager/common/src/commonMain/kotlin/dev/inmo/postssystem/features/roles/manager/common/RolesManagerRole.kt b/features/roles/manager/common/src/commonMain/kotlin/dev/inmo/postssystem/features/roles/manager/common/RolesManagerRole.kt index f9b4f615..9f5260d3 100644 --- a/features/roles/manager/common/src/commonMain/kotlin/dev/inmo/postssystem/features/roles/manager/common/RolesManagerRole.kt +++ b/features/roles/manager/common/src/commonMain/kotlin/dev/inmo/postssystem/features/roles/manager/common/RolesManagerRole.kt @@ -3,28 +3,16 @@ package dev.inmo.postssystem.features.roles.manager.common import dev.inmo.postssystem.features.roles.common.Role import dev.inmo.postssystem.features.roles.common.RoleSerializer import dev.inmo.micro_utils.serialization.typed_serializer.TypedSerializer +import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable -private val justForLoading = RolesManagerRoleSerializer - -@Serializable(RolesManagerRoleSerializer::class) -interface RolesManagerRole : Role +@Serializable +sealed interface RolesManagerRole : Role @Serializable +@SerialName("GeneralRolesManagerRole") object GeneralRolesManagerRole : RolesManagerRole { override fun toString(): String = "GeneralRolesManagerRole" } -private const val KEY = "roles_manager" - -object RolesManagerRoleSerializer : TypedSerializer( - RolesManagerRole::class, - mapOf( - "${KEY}_general" to GeneralRolesManagerRole.serializer() - ) -) { - init { - RoleSerializer.includeSerializer(KEY, RolesManagerRoleSerializer) - serializers.forEach { (k, v) -> RoleSerializer.includeSerializer(k, v) } - } -} +private val justForLoading = GeneralRolesManagerRole.serializer() diff --git a/features/roles/manager/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/roles/manager/server/RolesManagerUsersRolesStorageServerRoutesConfigurator.kt b/features/roles/manager/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/roles/manager/server/RolesManagerUsersRolesStorageServerRoutesConfigurator.kt index 99e4ad46..b318ed38 100644 --- a/features/roles/manager/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/roles/manager/server/RolesManagerUsersRolesStorageServerRoutesConfigurator.kt +++ b/features/roles/manager/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/roles/manager/server/RolesManagerUsersRolesStorageServerRoutesConfigurator.kt @@ -3,7 +3,6 @@ package dev.inmo.postssystem.features.roles.manager.server import dev.inmo.micro_utils.ktor.server.UnifiedRouter import dev.inmo.postssystem.features.roles.common.RolesStorage import dev.inmo.postssystem.features.roles.manager.common.RolesManagerRole -import dev.inmo.postssystem.features.roles.manager.common.RolesManagerRoleSerializer import dev.inmo.postssystem.features.roles.server.RolesStorageWriteServerRoutesConfigurator import dev.inmo.micro_utils.ktor.server.configurators.ApplicationRoutingConfigurator @@ -12,7 +11,7 @@ class RolesManagerRolesStorageServerRoutesConfigurator( unifiedRouter: UnifiedRouter ) : ApplicationRoutingConfigurator.Element by RolesStorageWriteServerRoutesConfigurator( storage, - RolesManagerRoleSerializer, + RolesManagerRole.serializer(), RolesManagerRolesChecker.key, unifiedRouter = unifiedRouter ) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 965aa84a..1cba8092 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,10 +2,10 @@ kotlin = "1.6.21" kotlin-serialization = "1.3.3" -jsuikit = "0.1.0" -compose = "1.2.0-alpha01-dev683" +jsuikit = "0.1.1" +compose = "1.2.0-alpha01-dev686" microutils = "0.10.4" -tgbotapi = "1.1.0" +tgbotapi = "1.1.1" ktor = "2.0.1" klock = "2.7.0" koin = "3.2.0" @@ -16,7 +16,6 @@ dokka = "1.6.21" logback = "1.2.10" uuid = "0.4.0" -android-dexcount = "3.0.1" android-junit = "4.12" android-test-junit = "1.1.2" android-espresso-core = "3.3.0" @@ -24,7 +23,7 @@ android-espresso-core = "3.3.0" gh-release = "2.3.7" android-gradle = "7.0.4" -dexcount = "3.0.1" +dexcount = "3.1.0" android-coreKtx = "1.7.0" android-recyclerView = "1.2.1" diff --git a/targets/telegram/loader/server/src/jvmMain/kotlin/dev/inmo/postssystem/targets/telegram/loader/server/SubConfig.kt b/targets/telegram/loader/server/src/jvmMain/kotlin/dev/inmo/postssystem/targets/telegram/loader/server/SubConfig.kt index a3264e6c..56dbfc9b 100644 --- a/targets/telegram/loader/server/src/jvmMain/kotlin/dev/inmo/postssystem/targets/telegram/loader/server/SubConfig.kt +++ b/targets/telegram/loader/server/src/jvmMain/kotlin/dev/inmo/postssystem/targets/telegram/loader/server/SubConfig.kt @@ -5,6 +5,7 @@ import dev.inmo.tgbotapi.types.ChatId import dev.inmo.tgbotapi.utils.TelegramAPIUrlsKeeper import dev.inmo.tgbotapi.utils.telegramBotAPIDefaultUrl import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient @Serializable data class SubConfig( @@ -12,9 +13,11 @@ data class SubConfig( val targetChatId: ChatId, private val hostUrl: String = telegramBotAPIDefaultUrl ) { + @Transient val telegramInfo by lazy { TelegramAPIUrlsKeeper(botToken, hostUrl) } + @Transient val bot by lazy { telegramBot(telegramInfo) }