package dev.inmo.postssystem.features.auth.client import dev.inmo.micro_utils.common.Optional import dev.inmo.micro_utils.common.optional import dev.inmo.postssystem.features.auth.client.settings.AuthSettings import dev.inmo.postssystem.features.auth.client.settings.DefaultAuthSettings import dev.inmo.postssystem.features.auth.client.ui.* import dev.inmo.postssystem.features.common.common.* import dev.inmo.postssystem.features.common.common.ui.fsm.UIFSMExceptionHandler import dev.inmo.postssystem.features.common.common.ui.fsm.UIFSMState import kotlin.js.JsExport internal fun CommonAuthModuleLoader() = DefaultModuleLoader { single { DefaultAuthSettings(get(DefaultQualifiers.SettingsQualifier), get(), getKoin(), get()) } singleWithRandomQualifier { UIFSMExceptionHandler { currentState, exception -> if (exception is AuthUnavailableException) { Optional.presented(AuthUIFSMState(currentState)) } else { Optional.absent() } } } factory { DefaultAuthUIModel(get(), get()) } factory { AuthUIViewModel(get()) } }