Loading app/core/src/main/java/com/fsck/k9/controller/KoinModule.kt +8 −3 Original line number Diff line number Diff line Loading @@ -18,7 +18,6 @@ val controllerModule = module { get<NotificationController>(), get<NotificationStrategy>(), get<LocalStoreProvider>(), get<UnreadMessageCountProvider>(), get<MessageCountsProvider>(), get<BackendManager>(), get<Preferences>(), Loading @@ -27,6 +26,12 @@ val controllerModule = module { get(named("controllerExtensions")) ) } single<UnreadMessageCountProvider> { DefaultUnreadMessageCountProvider(get(), get(), get(), get()) } single<MessageCountsProvider> { DefaultMessageCountsProvider(get(), get(), get(), get()) } single<MessageCountsProvider> { DefaultMessageCountsProvider( context = get(), preferences = get(), accountSearchConditions = get(), localStoreProvider = get() ) } } app/core/src/main/java/com/fsck/k9/controller/MessagingController.java +6 −6 Original line number Diff line number Diff line Loading @@ -125,7 +125,6 @@ public class MessagingController { private final Set<MessagingListener> listeners = new CopyOnWriteArraySet<>(); private final ExecutorService threadPool = Executors.newCachedThreadPool(); private final MemorizingMessagingListener memorizingMessagingListener = new MemorizingMessagingListener(); private final UnreadMessageCountProvider unreadMessageCountProvider; private final MessageCountsProvider messageCountsProvider; private final DraftOperations draftOperations; Loading @@ -141,14 +140,13 @@ public class MessagingController { MessagingController(Context context, NotificationController notificationController, NotificationStrategy notificationStrategy, LocalStoreProvider localStoreProvider, UnreadMessageCountProvider unreadMessageCountProvider, MessageCountsProvider messageCountsProvider, BackendManager backendManager, Preferences preferences, MessageStoreManager messageStoreManager, MessageCountsProvider messageCountsProvider, BackendManager backendManager, Preferences preferences, MessageStoreManager messageStoreManager, SaveMessageDataCreator saveMessageDataCreator, List<ControllerExtension> controllerExtensions) { this.context = context; this.notificationController = notificationController; this.notificationStrategy = notificationStrategy; this.localStoreProvider = localStoreProvider; this.unreadMessageCountProvider = unreadMessageCountProvider; this.messageCountsProvider = messageCountsProvider; this.backendManager = backendManager; this.preferences = preferences; Loading Loading @@ -1678,11 +1676,13 @@ public class MessagingController { } public int getUnreadMessageCount(Account account) { return unreadMessageCountProvider.getUnreadMessageCount(account); MessageCounts messageCounts = messageCountsProvider.getMessageCounts(account); return messageCounts.getUnread(); } public int getUnreadMessageCount(SearchAccount searchAccount) { return unreadMessageCountProvider.getUnreadMessageCount(searchAccount); MessageCounts messageCounts = messageCountsProvider.getMessageCounts(searchAccount); return messageCounts.getUnread(); } public int getFolderUnreadMessageCount(Account account, Long folderId) throws MessagingException { Loading app/core/src/main/java/com/fsck/k9/controller/UnreadMessageCountProvider.ktdeleted 100644 → 0 +0 −65 Original line number Diff line number Diff line package com.fsck.k9.controller import android.content.Context import com.fsck.k9.Account 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 import com.fsck.k9.search.getAccounts import timber.log.Timber interface UnreadMessageCountProvider { fun getUnreadMessageCount(account: Account): Int fun getUnreadMessageCount(searchAccount: SearchAccount): Int } internal class DefaultUnreadMessageCountProvider( private val context: Context, private val preferences: Preferences, private val accountSearchConditions: AccountSearchConditions, private val localStoreProvider: LocalStoreProvider ) : UnreadMessageCountProvider { override fun getUnreadMessageCount(account: Account): Int { if (!account.isAvailable(context)) { return 0 } return try { val localStore = localStoreProvider.getInstance(account) val search = LocalSearch() accountSearchConditions.excludeSpecialFolders(account, search) accountSearchConditions.limitToDisplayableFolders(account, search) localStore.getUnreadMessageCount(search) } catch (e: MessagingException) { Timber.e(e, "Unable to getUnreadMessageCount for account: %s", account) 0 } } override fun getUnreadMessageCount(searchAccount: SearchAccount): Int { val search = searchAccount.relatedSearch val accounts = search.getAccounts(preferences) var unreadMessageCount = 0 for (account in accounts) { unreadMessageCount += getUnreadMessageCountWithLocalSearch(account, search) } return unreadMessageCount } private fun getUnreadMessageCountWithLocalSearch(account: Account, search: LocalSearch): Int { return try { val localStore = localStoreProvider.getInstance(account) localStore.getUnreadMessageCount(search) } catch (e: MessagingException) { Timber.e(e, "Unable to getUnreadMessageCount for account: %s", account) 0 } } } app/core/src/test/java/com/fsck/k9/controller/MessagingControllerTest.java +2 −14 Original line number Diff line number Diff line Loading @@ -110,18 +110,6 @@ public class MessagingControllerTest extends K9RobolectricTest { private LocalMessage localMessageToSend1; private volatile boolean hasFetchedMessage = false; private UnreadMessageCountProvider unreadMessageCountProvider = new UnreadMessageCountProvider() { @Override public int getUnreadMessageCount(@NotNull SearchAccount searchAccount) { return 0; } @Override public int getUnreadMessageCount(@NotNull Account account) { return 0; } }; private MessageCountsProvider messageCountsProvider = new MessageCountsProvider() { @Override public MessageCounts getMessageCounts(@NotNull SearchAccount searchAccount) { Loading @@ -147,8 +135,8 @@ public class MessagingControllerTest extends K9RobolectricTest { preferences = Preferences.getPreferences(appContext); controller = new MessagingController(appContext, notificationController, notificationStrategy, localStoreProvider, unreadMessageCountProvider, messageCountsProvider, backendManager, preferences, messageStoreManager, saveMessageDataCreator, Collections.<ControllerExtension>emptyList()); localStoreProvider, messageCountsProvider, backendManager, preferences, messageStoreManager, saveMessageDataCreator, Collections.<ControllerExtension>emptyList()); configureAccount(); configureBackendManager(); Loading Loading
app/core/src/main/java/com/fsck/k9/controller/KoinModule.kt +8 −3 Original line number Diff line number Diff line Loading @@ -18,7 +18,6 @@ val controllerModule = module { get<NotificationController>(), get<NotificationStrategy>(), get<LocalStoreProvider>(), get<UnreadMessageCountProvider>(), get<MessageCountsProvider>(), get<BackendManager>(), get<Preferences>(), Loading @@ -27,6 +26,12 @@ val controllerModule = module { get(named("controllerExtensions")) ) } single<UnreadMessageCountProvider> { DefaultUnreadMessageCountProvider(get(), get(), get(), get()) } single<MessageCountsProvider> { DefaultMessageCountsProvider(get(), get(), get(), get()) } single<MessageCountsProvider> { DefaultMessageCountsProvider( context = get(), preferences = get(), accountSearchConditions = get(), localStoreProvider = get() ) } }
app/core/src/main/java/com/fsck/k9/controller/MessagingController.java +6 −6 Original line number Diff line number Diff line Loading @@ -125,7 +125,6 @@ public class MessagingController { private final Set<MessagingListener> listeners = new CopyOnWriteArraySet<>(); private final ExecutorService threadPool = Executors.newCachedThreadPool(); private final MemorizingMessagingListener memorizingMessagingListener = new MemorizingMessagingListener(); private final UnreadMessageCountProvider unreadMessageCountProvider; private final MessageCountsProvider messageCountsProvider; private final DraftOperations draftOperations; Loading @@ -141,14 +140,13 @@ public class MessagingController { MessagingController(Context context, NotificationController notificationController, NotificationStrategy notificationStrategy, LocalStoreProvider localStoreProvider, UnreadMessageCountProvider unreadMessageCountProvider, MessageCountsProvider messageCountsProvider, BackendManager backendManager, Preferences preferences, MessageStoreManager messageStoreManager, MessageCountsProvider messageCountsProvider, BackendManager backendManager, Preferences preferences, MessageStoreManager messageStoreManager, SaveMessageDataCreator saveMessageDataCreator, List<ControllerExtension> controllerExtensions) { this.context = context; this.notificationController = notificationController; this.notificationStrategy = notificationStrategy; this.localStoreProvider = localStoreProvider; this.unreadMessageCountProvider = unreadMessageCountProvider; this.messageCountsProvider = messageCountsProvider; this.backendManager = backendManager; this.preferences = preferences; Loading Loading @@ -1678,11 +1676,13 @@ public class MessagingController { } public int getUnreadMessageCount(Account account) { return unreadMessageCountProvider.getUnreadMessageCount(account); MessageCounts messageCounts = messageCountsProvider.getMessageCounts(account); return messageCounts.getUnread(); } public int getUnreadMessageCount(SearchAccount searchAccount) { return unreadMessageCountProvider.getUnreadMessageCount(searchAccount); MessageCounts messageCounts = messageCountsProvider.getMessageCounts(searchAccount); return messageCounts.getUnread(); } public int getFolderUnreadMessageCount(Account account, Long folderId) throws MessagingException { Loading
app/core/src/main/java/com/fsck/k9/controller/UnreadMessageCountProvider.ktdeleted 100644 → 0 +0 −65 Original line number Diff line number Diff line package com.fsck.k9.controller import android.content.Context import com.fsck.k9.Account 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 import com.fsck.k9.search.getAccounts import timber.log.Timber interface UnreadMessageCountProvider { fun getUnreadMessageCount(account: Account): Int fun getUnreadMessageCount(searchAccount: SearchAccount): Int } internal class DefaultUnreadMessageCountProvider( private val context: Context, private val preferences: Preferences, private val accountSearchConditions: AccountSearchConditions, private val localStoreProvider: LocalStoreProvider ) : UnreadMessageCountProvider { override fun getUnreadMessageCount(account: Account): Int { if (!account.isAvailable(context)) { return 0 } return try { val localStore = localStoreProvider.getInstance(account) val search = LocalSearch() accountSearchConditions.excludeSpecialFolders(account, search) accountSearchConditions.limitToDisplayableFolders(account, search) localStore.getUnreadMessageCount(search) } catch (e: MessagingException) { Timber.e(e, "Unable to getUnreadMessageCount for account: %s", account) 0 } } override fun getUnreadMessageCount(searchAccount: SearchAccount): Int { val search = searchAccount.relatedSearch val accounts = search.getAccounts(preferences) var unreadMessageCount = 0 for (account in accounts) { unreadMessageCount += getUnreadMessageCountWithLocalSearch(account, search) } return unreadMessageCount } private fun getUnreadMessageCountWithLocalSearch(account: Account, search: LocalSearch): Int { return try { val localStore = localStoreProvider.getInstance(account) localStore.getUnreadMessageCount(search) } catch (e: MessagingException) { Timber.e(e, "Unable to getUnreadMessageCount for account: %s", account) 0 } } }
app/core/src/test/java/com/fsck/k9/controller/MessagingControllerTest.java +2 −14 Original line number Diff line number Diff line Loading @@ -110,18 +110,6 @@ public class MessagingControllerTest extends K9RobolectricTest { private LocalMessage localMessageToSend1; private volatile boolean hasFetchedMessage = false; private UnreadMessageCountProvider unreadMessageCountProvider = new UnreadMessageCountProvider() { @Override public int getUnreadMessageCount(@NotNull SearchAccount searchAccount) { return 0; } @Override public int getUnreadMessageCount(@NotNull Account account) { return 0; } }; private MessageCountsProvider messageCountsProvider = new MessageCountsProvider() { @Override public MessageCounts getMessageCounts(@NotNull SearchAccount searchAccount) { Loading @@ -147,8 +135,8 @@ public class MessagingControllerTest extends K9RobolectricTest { preferences = Preferences.getPreferences(appContext); controller = new MessagingController(appContext, notificationController, notificationStrategy, localStoreProvider, unreadMessageCountProvider, messageCountsProvider, backendManager, preferences, messageStoreManager, saveMessageDataCreator, Collections.<ControllerExtension>emptyList()); localStoreProvider, messageCountsProvider, backendManager, preferences, messageStoreManager, saveMessageDataCreator, Collections.<ControllerExtension>emptyList()); configureAccount(); configureBackendManager(); Loading