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

Commit 31bd3c61 authored by cketti's avatar cketti
Browse files

Use Koin for `QrCode*` dependencies

parent 05cff337
Loading
Loading
Loading
Loading
+16 −1
Original line number Diff line number Diff line
@@ -3,6 +3,10 @@ package app.k9mail.feature.migration.qrcode
import app.k9mail.feature.migration.qrcode.domain.QrCodeDomainContract.UseCase
import app.k9mail.feature.migration.qrcode.domain.usecase.QrCodePayloadReader
import app.k9mail.feature.migration.qrcode.domain.usecase.QrCodeSettingsWriter
import app.k9mail.feature.migration.qrcode.payload.QrCodePayloadAdapter
import app.k9mail.feature.migration.qrcode.payload.QrCodePayloadMapper
import app.k9mail.feature.migration.qrcode.payload.QrCodePayloadParser
import app.k9mail.feature.migration.qrcode.payload.QrCodePayloadValidator
import app.k9mail.feature.migration.qrcode.settings.DefaultUuidGenerator
import app.k9mail.feature.migration.qrcode.settings.UuidGenerator
import app.k9mail.feature.migration.qrcode.settings.XmlSettingWriter
@@ -18,7 +22,18 @@ val qrCodeModule = module {
        )
    }

    factory<UseCase.QrCodePayloadReader> { QrCodePayloadReader() }
    factory { QrCodePayloadAdapter() }
    factory { QrCodePayloadParser(qrCodePayloadAdapter = get()) }
    factory { QrCodePayloadValidator() }
    factory { QrCodePayloadMapper(qrCodePayloadValidator = get()) }

    factory<UseCase.QrCodePayloadReader> {
        QrCodePayloadReader(
            parser = get(),
            mapper = get(),
        )
    }

    factory<UseCase.QrCodeSettingsWriter> {
        QrCodeSettingsWriter(
            context = get(),
+2 −2
Original line number Diff line number Diff line
@@ -6,8 +6,8 @@ import app.k9mail.feature.migration.qrcode.payload.QrCodePayloadMapper
import app.k9mail.feature.migration.qrcode.payload.QrCodePayloadParser

internal class QrCodePayloadReader(
    private val parser: QrCodePayloadParser = QrCodePayloadParser(),
    private val mapper: QrCodePayloadMapper = QrCodePayloadMapper(),
    private val parser: QrCodePayloadParser,
    private val mapper: QrCodePayloadMapper,
) : UseCase.QrCodePayloadReader {
    override fun read(payload: String): AccountData? {
        val parsedData = parser.parse(payload) ?: return null
+1 −1
Original line number Diff line number Diff line
@@ -6,7 +6,7 @@ import app.k9mail.core.common.net.toPort
import app.k9mail.feature.migration.qrcode.domain.entity.AccountData

internal class QrCodePayloadMapper(
    private val qrCodePayloadValidator: QrCodePayloadValidator = QrCodePayloadValidator(),
    private val qrCodePayloadValidator: QrCodePayloadValidator,
) {
    fun toAccountData(data: QrCodeData): AccountData? {
        return if (qrCodePayloadValidator.isValid(data)) {
+1 −1
Original line number Diff line number Diff line
@@ -5,7 +5,7 @@ import java.io.IOException
import timber.log.Timber

internal class QrCodePayloadParser(
    private val qrCodePayloadAdapter: QrCodePayloadAdapter = QrCodePayloadAdapter(),
    private val qrCodePayloadAdapter: QrCodePayloadAdapter,
) {
    /**
     * Parses the QR code payload as JSON and reads it into [QrCodeData].
+8 −1
Original line number Diff line number Diff line
@@ -4,6 +4,10 @@ import app.k9mail.core.common.mail.toUserEmailAddress
import app.k9mail.core.common.net.toHostname
import app.k9mail.core.common.net.toPort
import app.k9mail.feature.migration.qrcode.domain.entity.AccountData
import app.k9mail.feature.migration.qrcode.payload.QrCodePayloadAdapter
import app.k9mail.feature.migration.qrcode.payload.QrCodePayloadMapper
import app.k9mail.feature.migration.qrcode.payload.QrCodePayloadParser
import app.k9mail.feature.migration.qrcode.payload.QrCodePayloadValidator
import assertk.assertThat
import assertk.assertions.isEqualTo
import assertk.assertions.isNotNull
@@ -12,7 +16,10 @@ import kotlin.test.Test

@Suppress("LongMethod")
class QrCodePayloadReaderTest {
    private val reader = QrCodePayloadReader()
    private val reader = QrCodePayloadReader(
        parser = QrCodePayloadParser(QrCodePayloadAdapter()),
        mapper = QrCodePayloadMapper(QrCodePayloadValidator()),
    )

    @Test
    fun `one account, one identity, no passwords`() {
Loading