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

Commit 6062bf9b authored by shamim-emon's avatar shamim-emon
Browse files

Fix of "QR code import does not update unified inbox"

parent 35d21c90
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -9,7 +9,6 @@ import app.k9mail.feature.account.setup.AccountSetupExternalContract
import app.k9mail.feature.account.setup.AccountSetupExternalContract.AccountCreator.AccountCreatorResult
import app.k9mail.legacy.account.Account.SpecialFolderSelection
import com.fsck.k9.Core
import com.fsck.k9.K9
import com.fsck.k9.Preferences
import com.fsck.k9.controller.MessagingController
import com.fsck.k9.logging.Timber
@@ -21,6 +20,7 @@ import com.fsck.k9.mail.store.imap.ImapStoreSettings.isUseCompression
import com.fsck.k9.mail.store.imap.ImapStoreSettings.pathPrefix
import com.fsck.k9.mailstore.SpecialFolderUpdater
import com.fsck.k9.mailstore.SpecialLocalFoldersCreator
import com.fsck.k9.preferences.UnifiedInboxConfigurator
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
@@ -35,6 +35,7 @@ class AccountCreator(
    private val messagingController: MessagingController,
    private val deletePolicyProvider: DeletePolicyProvider,
    private val coroutineDispatcher: CoroutineDispatcher = Dispatchers.IO,
    private val unifiedInboxConfigurator: UnifiedInboxConfigurator,
) : AccountSetupExternalContract.AccountCreator {

    @Suppress("TooGenericExceptionCaught")
@@ -81,10 +82,7 @@ class AccountCreator(

        preferences.saveAccount(newAccount)

        if (preferences.getAccounts().size > 1) {
            K9.isShowUnifiedInbox = true
            K9.saveSettingsAsync()
        }
        unifiedInboxConfigurator.configureUnifiedInbox()

        Core.setServicesEnabled(context)

+1 −0
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ val newAccountModule = module {
            context = androidApplication(),
            deletePolicyProvider = get(),
            messagingController = get(),
            unifiedInboxConfigurator = get(),
        )
    }

+3 −0
Original line number Diff line number Diff line
@@ -57,6 +57,8 @@ val preferencesModule = module {
        )
    }

    factory { UnifiedInboxConfigurator(accountManager = get()) }

    factory {
        SettingsImporter(
            settingsFileParser = get(),
@@ -66,6 +68,7 @@ val preferencesModule = module {
            accountSettingsUpgrader = get(),
            generalSettingsWriter = get(),
            accountSettingsWriter = get(),
            unifiedInboxConfigurator = get(),
        )
    }
}
+6 −0
Original line number Diff line number Diff line
@@ -9,6 +9,7 @@ import com.fsck.k9.preferences.Settings.InvalidSettingValueException
import java.io.InputStream
import timber.log.Timber

@Suppress("LongParameterList")
class SettingsImporter internal constructor(
    private val settingsFileParser: SettingsFileParser,
    private val generalSettingsValidator: GeneralSettingsValidator,
@@ -17,6 +18,7 @@ class SettingsImporter internal constructor(
    private val accountSettingsUpgrader: AccountSettingsUpgrader,
    private val generalSettingsWriter: GeneralSettingsWriter,
    private val accountSettingsWriter: AccountSettingsWriter,
    private val unifiedInboxConfigurator: UnifiedInboxConfigurator,
) {
    /**
     * Parses an import [InputStream] and returns information on whether it contains global settings and/or account
@@ -100,6 +102,10 @@ class SettingsImporter internal constructor(
                }
            }

            if (!globalSettingsImported) {
                unifiedInboxConfigurator.configureUnifiedInbox()
            }

            return ImportResults(globalSettingsImported, importedAccounts, erroneousAccounts)
        } catch (e: SettingsImportExportException) {
            throw e
+18 −0
Original line number Diff line number Diff line
package com.fsck.k9.preferences

import app.k9mail.legacy.account.AccountManager
import com.fsck.k9.K9

/**
 * Configures the unified inbox after an account has been added.
 */
class UnifiedInboxConfigurator(
    private val accountManager: AccountManager,
) {
    fun configureUnifiedInbox() {
        if (accountManager.getAccounts().size > 1) {
            K9.isShowUnifiedInbox = true
            K9.saveSettingsAsync()
        }
    }
}
Loading