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

Unverified Commit bc38dd55 authored by Wolf-Martell Montwé's avatar Wolf-Martell Montwé
Browse files

Decouple `FolderRepository` from `MessagingController` by introducing `MessagingControllerRegistry`

parent 701c91d5
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@ package com.fsck.k9.controller

import android.content.Context
import app.k9mail.legacy.mailstore.MessageStoreManager
import app.k9mail.legacy.message.controller.MessagingControllerRegistry
import com.fsck.k9.Preferences
import com.fsck.k9.backend.BackendManager
import com.fsck.k9.mailstore.LocalStoreProvider
@@ -29,6 +30,8 @@ val controllerModule = module {
        )
    }

    single<MessagingControllerRegistry> { get<MessagingController>() }

    single<MessageCountsProvider> {
        DefaultMessageCountsProvider(
            accountManager = get(),
+4 −3
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import androidx.annotation.VisibleForTesting;
import app.k9mail.legacy.account.Account;
import app.k9mail.legacy.account.Account.DeletePolicy;
import app.k9mail.legacy.di.DI;
import app.k9mail.legacy.message.controller.MessagingControllerRegistry;
import app.k9mail.legacy.message.controller.MessagingListener;
import app.k9mail.legacy.message.controller.SimpleMessagingListener;
import com.fsck.k9.K9;
@@ -104,7 +105,7 @@ import static com.fsck.k9.mail.Flag.X_REMOTE_COPY_STARTED;
 * it removes itself. Thus, any commands that that activity submitted are
 * removed from the queue once the activity is no longer active.
 */
public class MessagingController {
public class MessagingController implements MessagingControllerRegistry {
    public static final Set<Flag> SYNC_FLAGS = EnumSet.of(Flag.SEEN, Flag.FLAGGED, Flag.ANSWERED, Flag.FORWARDED);

    private static final long FOLDER_LIST_STALENESS_THRESHOLD = 30 * 60 * 1000L;
@@ -285,7 +286,7 @@ public class MessagingController {
        return folderId;
    }

    public void addListener(MessagingListener listener) {
    public void addListener(@NonNull MessagingListener listener) {
        listeners.add(listener);
        refreshListener(listener);
    }
@@ -296,7 +297,7 @@ public class MessagingController {
        }
    }

    public void removeListener(MessagingListener listener) {
    public void removeListener(@NonNull MessagingListener listener) {
        listeners.remove(listener);
    }

+2 −2
Original line number Diff line number Diff line
@@ -11,8 +11,8 @@ import app.k9mail.legacy.folder.FolderType
import app.k9mail.legacy.folder.RemoteFolder
import app.k9mail.legacy.mailstore.FolderSettingsChangedListener
import app.k9mail.legacy.mailstore.MessageStoreManager
import app.k9mail.legacy.message.controller.MessagingControllerRegistry
import app.k9mail.legacy.message.controller.SimpleMessagingListener
import com.fsck.k9.controller.MessagingController
import com.fsck.k9.mail.FolderClass
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.Dispatchers
@@ -63,7 +63,7 @@ class FolderRepository(
    }

    fun getDisplayFoldersFlow(account: Account, displayMode: FolderMode): Flow<List<DisplayFolder>> {
        val messagingController = DI.get<MessagingController>()
        val messagingController = DI.get<MessagingControllerRegistry>()
        val messageStore = messageStoreManager.getMessageStore(account)

        return callbackFlow {
+8 −0
Original line number Diff line number Diff line
package app.k9mail.legacy.message.controller

interface MessagingControllerRegistry {

    fun addListener(listener: MessagingListener)

    fun removeListener(listener: MessagingListener)
}