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

Commit 583c5b04 authored by Vincent Breitmoser's avatar Vincent Breitmoser
Browse files

extract Account.getLocalStore into LocalStoreProvider

parent a42d1111
Loading
Loading
Loading
Loading
+0 −7
Original line number Diff line number Diff line
@@ -17,10 +17,8 @@ import android.text.TextUtils;

import com.fsck.k9.backend.api.SyncConfig.ExpungePolicy;
import com.fsck.k9.mail.Address;
import com.fsck.k9.mail.MessagingException;
import com.fsck.k9.mail.NetworkType;
import com.fsck.k9.mail.store.StoreConfig;
import com.fsck.k9.mailstore.LocalStore;
import com.fsck.k9.mailstore.StorageManager;
import com.fsck.k9.mailstore.StorageManager.StorageProvider;
import org.jetbrains.annotations.NotNull;
@@ -667,11 +665,6 @@ public class Account implements BaseAccount, StoreConfig {
        return oldMaxPushFolders != maxPushFolders;
    }

    public LocalStore getLocalStore() throws MessagingException {
        Context context = DI.get(Context.class);
        return LocalStore.getInstance(this, context);
    }

    @Override
    public synchronized String toString() {
        return description;
+2 −0
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@ package com.fsck.k9
import android.content.Context
import com.fsck.k9.helper.Contacts
import com.fsck.k9.mail.power.PowerManager
import com.fsck.k9.mailstore.LocalStoreProvider
import com.fsck.k9.mailstore.StorageManager
import com.fsck.k9.power.TracingPowerManager
import org.koin.dsl.module.applicationContext
@@ -11,6 +12,7 @@ val mainModule = applicationContext {
    bean { Preferences.getPreferences(get()) }
    bean { get<Context>().resources }
    bean { StorageManager.getInstance(get()) }
    bean { LocalStoreProvider() }
    bean { TracingPowerManager.getPowerManager(get()) as PowerManager }
    bean { Contacts.getInstance(get()) }
}
+8 −4
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ import android.support.annotation.RestrictTo.Scope;
import com.fsck.k9.backend.BackendManager;
import com.fsck.k9.mail.MessagingException;
import com.fsck.k9.mailstore.LocalStore;
import com.fsck.k9.mailstore.LocalStoreProvider;
import com.fsck.k9.preferences.Storage;
import com.fsck.k9.preferences.StorageEditor;
import timber.log.Timber;
@@ -33,8 +34,9 @@ public class Preferences {
        CoreResourceProvider resourceProvider = DI.get(CoreResourceProvider.class);
        LocalKeyStoreManager localKeyStoreManager = DI.get(LocalKeyStoreManager.class);
        AccountPreferenceSerializer accountPreferenceSerializer = DI.get(AccountPreferenceSerializer.class);
        LocalStoreProvider localStoreProvider = DI.get(LocalStoreProvider.class);
        if (preferences == null) {
            preferences = new Preferences(appContext, resourceProvider, localKeyStoreManager, accountPreferenceSerializer);
            preferences = new Preferences(appContext, resourceProvider, localStoreProvider, localKeyStoreManager, accountPreferenceSerializer);
        }
        return preferences;
    }
@@ -44,15 +46,17 @@ public class Preferences {
    private List<Account> accountsInOrder = null;
    private Account newAccount;
    private Context context;
    private final LocalStoreProvider localStoreProvider;
    private final CoreResourceProvider resourceProvider;
    private final LocalKeyStoreManager localKeyStoreManager;

    private Preferences(Context context, CoreResourceProvider resourceProvider,
            LocalKeyStoreManager localKeyStoreManager,
            LocalStoreProvider localStoreProvider, LocalKeyStoreManager localKeyStoreManager,
            AccountPreferenceSerializer accountPreferenceSerializer) {
        storage = Storage.getStorage(context);
        this.context = context;
        this.resourceProvider = resourceProvider;
        this.localStoreProvider = localStoreProvider;
        this.localKeyStoreManager = localKeyStoreManager;
        this.accountPreferenceSerializer = accountPreferenceSerializer;
        if (storage.isEmpty()) {
@@ -212,7 +216,7 @@ public class Preferences {
    private void processChangedValues(Account account) {
        if (account.isChangedVisibleLimits()) {
            try {
                account.getLocalStore().resetVisibleLimits(account.getDisplayCount());
                localStoreProvider.getInstance(account).resetVisibleLimits(account.getDisplayCount());
            } catch (MessagingException e) {
                Timber.e(e, "Failed to load LocalStore!");
            }
@@ -220,7 +224,7 @@ public class Preferences {

        if (account.isChangedLocalStorageProviderId()) {
            try {
                account.getLocalStore().switchLocalStorage(account.getLocalStorageProviderId());
                localStoreProvider.getInstance(account).switchLocalStorage(account.getLocalStorageProviderId());
            } catch (MessagingException e) {
                Timber.e(e, "Failed to load LocalStore!");
            }
+5 −3
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@ import com.fsck.k9.AccountStats
import com.fsck.k9.K9
import com.fsck.k9.Preferences
import com.fsck.k9.mail.MessagingException
import com.fsck.k9.mailstore.LocalStoreProvider
import com.fsck.k9.search.AccountSearchConditions
import com.fsck.k9.search.LocalSearch
import com.fsck.k9.search.SearchAccount
@@ -19,7 +20,8 @@ interface AccountStatsCollector {

internal class DefaultAccountStatsCollector(
        private val context: Context,
        private val accountSearchConditions: AccountSearchConditions
        private val accountSearchConditions: AccountSearchConditions,
        private val localStoreProvider: LocalStoreProvider
) : AccountStatsCollector {
    private val preferences = Preferences.getPreferences(context)

@@ -29,7 +31,7 @@ internal class DefaultAccountStatsCollector(
            return null
        }

        val localStore = account.localStore
        val localStore = localStoreProvider.getInstance(account)

        val search = LocalSearch()
        accountSearchConditions.excludeSpecialFolders(account, search)
@@ -49,7 +51,7 @@ internal class DefaultAccountStatsCollector(

        val aggregatedAccountStats = AccountStats()
        for (account in accounts) {
            val accountStats = account.localStore.getAccountStats(search)
            val accountStats = localStoreProvider.getInstance(account).getAccountStats(search)
            aggregatedAccountStats.unreadMessageCount += accountStats.unreadMessageCount
            aggregatedAccountStats.flaggedMessageCount += accountStats.flaggedMessageCount
        }
+2 −2
Original line number Diff line number Diff line
@@ -3,6 +3,6 @@ package com.fsck.k9.controller
import org.koin.dsl.module.applicationContext

val controllerModule = applicationContext {
    bean { MessagingController(get(), get(), get(), get(), get(), get(), get("controllerExtensions")) }
    bean { DefaultAccountStatsCollector(get(), get()) as AccountStatsCollector }
    bean { MessagingController(get(), get(), get(), get(), get(), get(), get(), get("controllerExtensions")) }
    bean { DefaultAccountStatsCollector(get(), get(), get()) as AccountStatsCollector }
}
Loading