Loading feature/account/oauth/src/main/kotlin/app/k9mail/feature/account/oauth/data/AuthorizationStateRepository.kt +1 −1 Original line number Diff line number Diff line Loading @@ -4,7 +4,7 @@ import app.k9mail.feature.account.oauth.domain.DomainContract import app.k9mail.feature.account.oauth.domain.entity.AuthorizationState class AuthorizationStateRepository : DomainContract.AuthorizationStateRepository { override suspend fun isAuthorized(authorizationState: AuthorizationState): Boolean { override fun isAuthorized(authorizationState: AuthorizationState): Boolean { val authState = authorizationState.toAuthState() return authState.isAuthorized Loading feature/account/oauth/src/main/kotlin/app/k9mail/feature/account/oauth/domain/DomainContract.kt +2 −2 Original line number Diff line number Diff line Loading @@ -43,7 +43,7 @@ interface DomainContract { ): AuthorizationResult } interface AuthorizationStateRepository { suspend fun isAuthorized(authorizationState: AuthorizationState): Boolean fun interface AuthorizationStateRepository { fun isAuthorized(authorizationState: AuthorizationState): Boolean } } feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/AccountSetupModule.kt +4 −0 Original line number Diff line number Diff line Loading @@ -110,6 +110,8 @@ val featureAccountSetupModule: Module = module { AccountValidationViewModel( validateServerSettings = get(), accountSetupStateRepository = get(), authorizationStateRepository = get(), oAuthViewModel = get(), isIncomingValidation = true, ) } Loading @@ -123,6 +125,8 @@ val featureAccountSetupModule: Module = module { AccountValidationViewModel( validateServerSettings = get(), accountSetupStateRepository = get(), authorizationStateRepository = get(), oAuthViewModel = get(), isIncomingValidation = false, ) } Loading feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/domain/entity/ServerSettingsExtension.kt 0 → 100644 +6 −0 Original line number Diff line number Diff line package app.k9mail.feature.account.setup.domain.entity import com.fsck.k9.mail.AuthType import com.fsck.k9.mail.ServerSettings fun ServerSettings?.isOAuth() = this?.authenticationType == AuthType.XOAUTH2 feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/validation/AccountValidationContent.kt +17 −5 Original line number Diff line number Diff line Loading @@ -18,8 +18,12 @@ import app.k9mail.core.ui.compose.designsystem.template.ResponsiveWidthContainer import app.k9mail.core.ui.compose.theme.MainTheme import app.k9mail.core.ui.compose.theme.PreviewWithThemes import app.k9mail.feature.account.common.ui.item.ErrorItem import app.k9mail.feature.account.common.ui.item.ListItem import app.k9mail.feature.account.common.ui.item.LoadingItem import app.k9mail.feature.account.common.ui.item.SuccessItem import app.k9mail.feature.account.oauth.ui.AccountOAuthContract import app.k9mail.feature.account.oauth.ui.AccountOAuthView import app.k9mail.feature.account.oauth.ui.preview.PreviewAccountOAuthViewModel import app.k9mail.feature.account.setup.R import app.k9mail.feature.account.setup.ui.validation.AccountValidationContract.Event import app.k9mail.feature.account.setup.ui.validation.AccountValidationContract.State Loading @@ -29,6 +33,7 @@ import app.k9mail.feature.account.setup.ui.validation.AccountValidationContract. internal fun AccountValidationContent( state: State, isIncomingValidation: Boolean, oAuthViewModel: AccountOAuthContract.ViewModel, onEvent: (Event) -> Unit, contentPadding: PaddingValues, modifier: Modifier = Modifier, Loading @@ -47,11 +52,7 @@ internal fun AccountValidationContent( .fillMaxSize() .imePadding(), horizontalAlignment = Alignment.Start, verticalArrangement = if (state.isLoading || state.error != null || state.isSuccess) { Arrangement.spacedBy(MainTheme.spacings.double, Alignment.CenterVertically) } else { Arrangement.spacedBy(MainTheme.spacings.default) }, verticalArrangement = Arrangement.spacedBy(MainTheme.spacings.double, Alignment.CenterVertically), ) { if (state.error != null) { item(key = "error") { Loading Loading @@ -80,6 +81,15 @@ internal fun AccountValidationContent( ), ) } } else if (state.needsAuthorization) { item(key = "oauth") { ListItem { AccountOAuthView( onOAuthResult = { result -> onEvent(Event.OnOAuthResult(result)) }, viewModel = oAuthViewModel, ) } } } else { item(key = "loading") { LoadingItem( Loading @@ -105,6 +115,7 @@ internal fun AccountIncomingValidationContentPreview() { onEvent = { }, state = State(), isIncomingValidation = true, oAuthViewModel = PreviewAccountOAuthViewModel(), contentPadding = PaddingValues(), ) } Loading @@ -118,6 +129,7 @@ internal fun AccountOutgoingValidationContentPreview() { onEvent = { }, state = State(), isIncomingValidation = false, oAuthViewModel = PreviewAccountOAuthViewModel(), contentPadding = PaddingValues(), ) } Loading Loading
feature/account/oauth/src/main/kotlin/app/k9mail/feature/account/oauth/data/AuthorizationStateRepository.kt +1 −1 Original line number Diff line number Diff line Loading @@ -4,7 +4,7 @@ import app.k9mail.feature.account.oauth.domain.DomainContract import app.k9mail.feature.account.oauth.domain.entity.AuthorizationState class AuthorizationStateRepository : DomainContract.AuthorizationStateRepository { override suspend fun isAuthorized(authorizationState: AuthorizationState): Boolean { override fun isAuthorized(authorizationState: AuthorizationState): Boolean { val authState = authorizationState.toAuthState() return authState.isAuthorized Loading
feature/account/oauth/src/main/kotlin/app/k9mail/feature/account/oauth/domain/DomainContract.kt +2 −2 Original line number Diff line number Diff line Loading @@ -43,7 +43,7 @@ interface DomainContract { ): AuthorizationResult } interface AuthorizationStateRepository { suspend fun isAuthorized(authorizationState: AuthorizationState): Boolean fun interface AuthorizationStateRepository { fun isAuthorized(authorizationState: AuthorizationState): Boolean } }
feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/AccountSetupModule.kt +4 −0 Original line number Diff line number Diff line Loading @@ -110,6 +110,8 @@ val featureAccountSetupModule: Module = module { AccountValidationViewModel( validateServerSettings = get(), accountSetupStateRepository = get(), authorizationStateRepository = get(), oAuthViewModel = get(), isIncomingValidation = true, ) } Loading @@ -123,6 +125,8 @@ val featureAccountSetupModule: Module = module { AccountValidationViewModel( validateServerSettings = get(), accountSetupStateRepository = get(), authorizationStateRepository = get(), oAuthViewModel = get(), isIncomingValidation = false, ) } Loading
feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/domain/entity/ServerSettingsExtension.kt 0 → 100644 +6 −0 Original line number Diff line number Diff line package app.k9mail.feature.account.setup.domain.entity import com.fsck.k9.mail.AuthType import com.fsck.k9.mail.ServerSettings fun ServerSettings?.isOAuth() = this?.authenticationType == AuthType.XOAUTH2
feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/validation/AccountValidationContent.kt +17 −5 Original line number Diff line number Diff line Loading @@ -18,8 +18,12 @@ import app.k9mail.core.ui.compose.designsystem.template.ResponsiveWidthContainer import app.k9mail.core.ui.compose.theme.MainTheme import app.k9mail.core.ui.compose.theme.PreviewWithThemes import app.k9mail.feature.account.common.ui.item.ErrorItem import app.k9mail.feature.account.common.ui.item.ListItem import app.k9mail.feature.account.common.ui.item.LoadingItem import app.k9mail.feature.account.common.ui.item.SuccessItem import app.k9mail.feature.account.oauth.ui.AccountOAuthContract import app.k9mail.feature.account.oauth.ui.AccountOAuthView import app.k9mail.feature.account.oauth.ui.preview.PreviewAccountOAuthViewModel import app.k9mail.feature.account.setup.R import app.k9mail.feature.account.setup.ui.validation.AccountValidationContract.Event import app.k9mail.feature.account.setup.ui.validation.AccountValidationContract.State Loading @@ -29,6 +33,7 @@ import app.k9mail.feature.account.setup.ui.validation.AccountValidationContract. internal fun AccountValidationContent( state: State, isIncomingValidation: Boolean, oAuthViewModel: AccountOAuthContract.ViewModel, onEvent: (Event) -> Unit, contentPadding: PaddingValues, modifier: Modifier = Modifier, Loading @@ -47,11 +52,7 @@ internal fun AccountValidationContent( .fillMaxSize() .imePadding(), horizontalAlignment = Alignment.Start, verticalArrangement = if (state.isLoading || state.error != null || state.isSuccess) { Arrangement.spacedBy(MainTheme.spacings.double, Alignment.CenterVertically) } else { Arrangement.spacedBy(MainTheme.spacings.default) }, verticalArrangement = Arrangement.spacedBy(MainTheme.spacings.double, Alignment.CenterVertically), ) { if (state.error != null) { item(key = "error") { Loading Loading @@ -80,6 +81,15 @@ internal fun AccountValidationContent( ), ) } } else if (state.needsAuthorization) { item(key = "oauth") { ListItem { AccountOAuthView( onOAuthResult = { result -> onEvent(Event.OnOAuthResult(result)) }, viewModel = oAuthViewModel, ) } } } else { item(key = "loading") { LoadingItem( Loading @@ -105,6 +115,7 @@ internal fun AccountIncomingValidationContentPreview() { onEvent = { }, state = State(), isIncomingValidation = true, oAuthViewModel = PreviewAccountOAuthViewModel(), contentPadding = PaddingValues(), ) } Loading @@ -118,6 +129,7 @@ internal fun AccountOutgoingValidationContentPreview() { onEvent = { }, state = State(), isIncomingValidation = false, oAuthViewModel = PreviewAccountOAuthViewModel(), contentPadding = PaddingValues(), ) } Loading