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

Unverified Commit 04a7989f authored by Rafael Tonholo's avatar Rafael Tonholo
Browse files

refactor(outbox): use OutboxFolderManager to retrieve the outbox id in...

refactor(outbox): use OutboxFolderManager to retrieve the outbox id in SpecialLocalFoldersCreator; migrate createSpecialLocalFolders to suspend function
parent 939d75c9
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -54,7 +54,7 @@ internal class AccountCreator(
        }
    }

    private fun create(account: Account): String {
    private suspend fun create(account: Account): String {
        val newAccount = preferences.newAccount(account.uuid)

        newAccount.email = account.emailAddress
+5 −1
Original line number Diff line number Diff line
@@ -490,7 +490,11 @@ internal class SettingsImportViewModel(
        }
    }

    private fun importSettings(contentUri: Uri, generalSettings: Boolean, accounts: List<AccountUuid>): ImportResults {
    private suspend fun importSettings(
        contentUri: Uri,
        generalSettings: Boolean,
        accounts: List<AccountUuid>,
    ): ImportResults {
        val inputStream = contentResolver.openInputStream(contentUri)
            ?: error("Failed to open settings file for reading: $contentUri")

+1 −1
Original line number Diff line number Diff line
@@ -266,7 +266,7 @@ class SettingsImportViewModelTest {
        assertThat(uiModelLiveData.value!!.statusText).isEqualTo(StatusText.IMPORTING_PROGRESS)

        settingsImporter.stub {
            on { importSettings(inputStream, false, listOf("uuid-1")) } doReturn ImportResults(
            onBlocking { importSettings(inputStream, false, listOf("uuid-1")) } doReturn ImportResults(
                globalSettings = false,
                importedAccounts = listOf(
                    AccountDescriptionPair(
+1 −1
Original line number Diff line number Diff line
@@ -30,7 +30,7 @@ val mailStoreModule = module {
            saveMessageDataCreator = get(),
        )
    }
    factory { SpecialLocalFoldersCreator(preferences = get(), localStoreProvider = get()) }
    factory { SpecialLocalFoldersCreator(preferences = get(), localStoreProvider = get(), outboxFolderManager = get()) }
    single { MessageStoreManager(accountManager = get(), messageStoreFactory = get()) }
    single { MessageRepository(messageStoreManager = get()) }
    factory { MessagePreviewCreator.newInstance() }
+4 −6
Original line number Diff line number Diff line
@@ -5,24 +5,22 @@ import com.fsck.k9.mail.FolderType
import net.thunderbird.core.android.account.LegacyAccountDto
import net.thunderbird.core.common.mail.Protocols
import net.thunderbird.core.logging.legacy.Log
import net.thunderbird.feature.mail.folder.api.OutboxFolderManager
import net.thunderbird.feature.mail.folder.api.SpecialFolderSelection

class SpecialLocalFoldersCreator(
    private val preferences: Preferences,
    private val localStoreProvider: LocalStoreProvider,
    private val outboxFolderManager: OutboxFolderManager,
) {
    // TODO: When rewriting the account setup code make sure this method is only called once. Until then this can be
    //  called multiple times and we have to make sure folders are only created once.
    fun createSpecialLocalFolders(account: LegacyAccountDto) {
    suspend fun createSpecialLocalFolders(account: LegacyAccountDto) {
        Log.d("Creating special local folders")

        val localStore = localStoreProvider.getInstance(account)

        if (account.outboxFolderId == null) {
            account.outboxFolderId = localStore.createLocalFolder(OUTBOX_FOLDER_NAME, FolderType.OUTBOX)
        } else {
            Log.d("Outbox folder was already set up")
        }
        outboxFolderManager.getOutboxFolderId(uuid = account.id, createIfMissing = true)

        if (account.isPop3()) {
            if (account.draftsFolderId == null) {
Loading