Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit 75714697 authored by Wolf-Martell Montwé's avatar Wolf-Martell Montwé Committed by GitHub
Browse files

Merge pull request #7245 from thundernest/add_server_settings_interaction_mode

Add interaction mode to server settings
parents 61b76c31 e898296d
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
package app.k9mail.feature.account.common.domain.entity

/**
 * Enum representing the mode a user is interacting with an account or setting.
 */
enum class InteractionMode {
    Create,
    Edit,
}
+6 −14
Original line number Diff line number Diff line
@@ -6,11 +6,13 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import app.k9mail.core.ui.compose.common.DevicePreviews
import app.k9mail.core.ui.compose.designsystem.organism.TopAppBar
import app.k9mail.core.ui.compose.theme.K9Theme
import app.k9mail.core.ui.compose.theme.MainTheme
import app.k9mail.core.ui.compose.theme.ThunderbirdTheme
import app.k9mail.core.ui.compose.theme.PreviewWithThemes
import app.k9mail.feature.account.common.R

/**
 * Top app bar for the account screens.
 */
@Composable
fun AccountTopAppBar(
    title: String,
@@ -28,18 +30,8 @@ fun AccountTopAppBar(

@DevicePreviews
@Composable
internal fun AccountTopAppBarK9Preview() {
    K9Theme {
        AccountTopAppBar(
            title = "Title",
        )
    }
}

@DevicePreviews
@Composable
internal fun AccountTopAppBarThunderbirdPreview() {
    ThunderbirdTheme {
internal fun AccountTopAppBarPreview() {
    PreviewWithThemes {
        AccountTopAppBar(
            title = "Title",
        )
+49 −0
Original line number Diff line number Diff line
package app.k9mail.feature.account.common.ui

import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import app.k9mail.core.ui.compose.common.DevicePreviews
import app.k9mail.core.ui.compose.designsystem.atom.button.ButtonIcon
import app.k9mail.core.ui.compose.designsystem.organism.TopAppBar
import app.k9mail.core.ui.compose.theme.Icons
import app.k9mail.core.ui.compose.theme.MainTheme
import app.k9mail.core.ui.compose.theme.PreviewWithThemes
import app.k9mail.feature.account.common.R

/**
 * Top app bar for the account screens with a back button.
 */
@Composable
fun AccountTopAppBarWithBackButton(
    title: String,
    modifier: Modifier = Modifier,
    onBackClicked: () -> Unit,
) {
    TopAppBar(
        title = title,
        modifier = modifier,
        subtitle = stringResource(id = R.string.account_common_title),
        titleContentPadding = PaddingValues(
            start = MainTheme.spacings.default,
        ),
        navigationIcon = {
            ButtonIcon(
                onClick = onBackClicked,
                imageVector = Icons.Outlined.arrowBack,
            )
        },
    )
}

@DevicePreviews
@Composable
internal fun AccountTopAppBarWithBackButtonPreview() {
    PreviewWithThemes {
        AccountTopAppBarWithBackButton(
            title = "Title",
            onBackClicked = {},
        )
    }
}
+10 −0
Original line number Diff line number Diff line
package app.k9mail.feature.account.common.ui

import app.k9mail.feature.account.common.domain.entity.InteractionMode

/**
 * Interface for screens that can be used in different interaction modes.
 */
interface WithInteractionMode {
    val mode: InteractionMode
}
+2 −0
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@ package app.k9mail.feature.account.edit.ui

import androidx.lifecycle.viewModelScope
import app.k9mail.feature.account.common.domain.AccountDomainContract
import app.k9mail.feature.account.common.domain.entity.InteractionMode
import app.k9mail.feature.account.edit.domain.AccountEditDomainContract
import app.k9mail.feature.account.server.settings.ui.incoming.IncomingServerSettingsContract
import app.k9mail.feature.account.server.settings.ui.incoming.IncomingServerSettingsViewModel
@@ -15,6 +16,7 @@ class EditIncomingServerSettingsViewModel(
    accountStateRepository: AccountDomainContract.AccountStateRepository,
    initialState: IncomingServerSettingsContract.State = IncomingServerSettingsContract.State(),
) : IncomingServerSettingsViewModel(
    mode = InteractionMode.Edit,
    validator = validator,
    accountStateRepository = accountStateRepository,
    initialState = initialState,
Loading