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

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

Merge pull request #8804 from shamim-emon/fix-issue-7552

Prefill server text field in manual account setup flow
parents c886a958 4bd8475c
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
package app.k9mail.feature.account.server.settings.ui.common

fun String.toInvalidEmailDomain() = ".${this.substringAfter("@")}"
+2 −0
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@ import app.k9mail.feature.account.common.domain.entity.toConnectionSecurity
import app.k9mail.feature.account.common.domain.entity.toMailConnectionSecurity
import app.k9mail.feature.account.common.domain.input.NumberInputField
import app.k9mail.feature.account.common.domain.input.StringInputField
import app.k9mail.feature.account.server.settings.ui.common.toInvalidEmailDomain
import app.k9mail.feature.account.server.settings.ui.incoming.IncomingServerSettingsContract.State
import com.fsck.k9.mail.ServerSettings
import com.fsck.k9.mail.store.imap.ImapStoreSettings
@@ -19,6 +20,7 @@ import com.fsck.k9.mail.store.imap.ImapStoreSettings.pathPrefix
fun AccountState.toIncomingServerSettingsState() = incomingServerSettings?.toIncomingServerSettingsState()
    ?: State(
        username = StringInputField(value = emailAddress ?: ""),
        server = StringInputField(value = emailAddress?.toInvalidEmailDomain() ?: ""),
    )

private fun ServerSettings.toIncomingServerSettingsState(): State {
+2 −0
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@ import app.k9mail.feature.account.common.domain.entity.toConnectionSecurity
import app.k9mail.feature.account.common.domain.entity.toMailConnectionSecurity
import app.k9mail.feature.account.common.domain.input.NumberInputField
import app.k9mail.feature.account.common.domain.input.StringInputField
import app.k9mail.feature.account.server.settings.ui.common.toInvalidEmailDomain
import app.k9mail.feature.account.server.settings.ui.outgoing.OutgoingServerSettingsContract.State
import com.fsck.k9.mail.ServerSettings

@@ -17,6 +18,7 @@ fun AccountState.toOutgoingServerSettingsState(): State {
        ?: State(
            username = StringInputField(value = emailAddress ?: ""),
            password = StringInputField(value = password),
            server = StringInputField(value = emailAddress?.toInvalidEmailDomain() ?: ""),
        )
}

+7 −3
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@ import app.k9mail.feature.account.common.domain.entity.IncomingProtocolType
import app.k9mail.feature.account.common.domain.entity.MailConnectionSecurity
import app.k9mail.feature.account.common.domain.input.NumberInputField
import app.k9mail.feature.account.common.domain.input.StringInputField
import app.k9mail.feature.account.server.settings.ui.common.toInvalidEmailDomain
import app.k9mail.feature.account.server.settings.ui.incoming.IncomingServerSettingsContract.State
import assertk.assertThat
import assertk.assertions.isEqualTo
@@ -17,10 +18,12 @@ import org.junit.Test

class IncomingServerSettingsStateMapperKtTest {

    @Suppress("MaxLineLength")
    @Test
    fun `should map to state with email as username when server settings are null`() {
    fun `should map to state with email as username and emailDomain With dot prefix as server name when server settings are null`() {
        val email = "test@example.com"
        val accountState = AccountState(
            emailAddress = "test@example.com",
            emailAddress = email,
            incomingServerSettings = null,
        )

@@ -28,7 +31,8 @@ class IncomingServerSettingsStateMapperKtTest {

        assertThat(result).isEqualTo(
            State(
                username = StringInputField(value = "test@example.com"),
                username = StringInputField(value = email),
                server = StringInputField(value = email.toInvalidEmailDomain()),
            ),
        )
    }
+13 −6
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@ import app.k9mail.feature.account.common.domain.entity.ConnectionSecurity
import app.k9mail.feature.account.common.domain.entity.MailConnectionSecurity
import app.k9mail.feature.account.common.domain.input.NumberInputField
import app.k9mail.feature.account.common.domain.input.StringInputField
import app.k9mail.feature.account.server.settings.ui.common.toInvalidEmailDomain
import app.k9mail.feature.account.server.settings.ui.outgoing.OutgoingServerSettingsContract.State
import assertk.assertThat
import assertk.assertions.isEqualTo
@@ -15,10 +16,12 @@ import org.junit.Test

class OutgoingServerSettingsStateMapperKtTest {

    @Suppress("MaxLineLength")
    @Test
    fun `should map to state with email as username when server settings are null`() {
    fun `should map to state with email as username and emailDomain With dot prefix as server name when server settings are null`() {
        val email = "test@example.com"
        val accountState = AccountState(
            emailAddress = "test@example.com",
            emailAddress = email,
            outgoingServerSettings = null,
        )

@@ -26,15 +29,18 @@ class OutgoingServerSettingsStateMapperKtTest {

        assertThat(result).isEqualTo(
            State(
                username = StringInputField(value = "test@example.com"),
                username = StringInputField(value = email),
                server = StringInputField(value = email.toInvalidEmailDomain()),
            ),
        )
    }

    @Suppress("MaxLineLength")
    @Test
    fun `should map to state with password from incomingServerSettings when outgoingServerSettings is null`() {
    fun `should map to state with password from incomingServerSettings and emailDomain With dot prefix as server name when outgoingServerSettings is null`() {
        val email = "test@domain.example"
        val accountState = AccountState(
            emailAddress = "test@domain.example",
            emailAddress = email,
            incomingServerSettings = IMAP_SERVER_SETTINGS,
            outgoingServerSettings = null,
        )
@@ -43,8 +49,9 @@ class OutgoingServerSettingsStateMapperKtTest {

        assertThat(result).isEqualTo(
            State(
                username = StringInputField(value = "test@domain.example"),
                username = StringInputField(value = email),
                password = StringInputField(value = INCOMING_SERVER_PASSWORD),
                server = StringInputField(value = email.toInvalidEmailDomain()),
            ),
        )
    }