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

Unverified Commit 5f4703a6 authored by Rafael Tonholo's avatar Rafael Tonholo
Browse files

refactor: extract AccountManager interface to `:feature:mail:account:api`

- Mark the old `AccountManager` interface in `:core:android:account` as deprecated and make it extend the new `AccountManager` interface.
- Bind `net.thunderbird.feature.mail.account.api.AccountManager` to the existing `AccountManager` implementation.
parent e5dfcbf4
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
import gradle.kotlin.dsl.accessors._d53916901dcf893c4f557c15eae913fd.kotlin
import org.jetbrains.kotlin.gradle.internal.config.LanguageFeature

plugins {
+16 −7
Original line number Diff line number Diff line
package net.thunderbird.core.android.account

import kotlinx.coroutines.flow.Flow
import net.thunderbird.feature.mail.account.api.AccountManager

interface AccountManager {
    fun getAccounts(): List<LegacyAccount>
    fun getAccountsFlow(): Flow<List<LegacyAccount>>
    fun getAccount(accountUuid: String): LegacyAccount?
    fun getAccountFlow(accountUuid: String): Flow<LegacyAccount?>
@Deprecated(
    message = "Use net.thunderbird.feature.mail.account.api.AccountManager<TAccount : BaseAccount> instead",
    replaceWith = ReplaceWith(
        expression = "AccountManager<LegacyAccount>",
        "net.thunderbird.feature.mail.account.api.AccountManager",
        "app.k9mail.legacy.account.LegacyAccount",
    ),
)
interface AccountManager : AccountManager<LegacyAccount> {
    override fun getAccounts(): List<LegacyAccount>
    override fun getAccountsFlow(): Flow<List<LegacyAccount>>
    override fun getAccount(accountUuid: String): LegacyAccount?
    override fun getAccountFlow(accountUuid: String): Flow<LegacyAccount?>
    fun addAccountRemovedListener(listener: AccountRemovedListener)
    fun moveAccount(account: LegacyAccount, newPosition: Int)
    override fun moveAccount(account: LegacyAccount, newPosition: Int)
    fun addOnAccountsChangeListener(accountsChangeListener: AccountsChangeListener)
    fun removeOnAccountsChangeListener(accountsChangeListener: AccountsChangeListener)
    fun saveAccount(account: LegacyAccount)
    override fun saveAccount(account: LegacyAccount)
}
+12 −0
Original line number Diff line number Diff line
package net.thunderbird.feature.mail.account.api

import kotlinx.coroutines.flow.Flow

interface AccountManager<TAccount : BaseAccount> {
    fun getAccounts(): List<TAccount>
    fun getAccountsFlow(): Flow<List<TAccount>>
    fun getAccount(accountUuid: String): TAccount?
    fun getAccountFlow(accountUuid: String): Flow<TAccount?>
    fun moveAccount(account: TAccount, newPosition: Int)
    fun saveAccount(account: TAccount)
}
+4 −2
Original line number Diff line number Diff line
package com.fsck.k9.preferences

import com.fsck.k9.Preferences
import net.thunderbird.core.android.account.AccountManager
import net.thunderbird.core.preference.DefaultPreferenceChangeBroker
import net.thunderbird.core.preference.GeneralSettingsManager
import net.thunderbird.core.preference.PreferenceChangeBroker
import net.thunderbird.core.preference.PreferenceChangePublisher
import net.thunderbird.feature.mail.account.api.AccountManager
import org.koin.core.qualifier.named
import org.koin.dsl.bind
import org.koin.dsl.binds
import org.koin.dsl.module
import net.thunderbird.core.android.account.AccountManager as LegacyAccountManager

val preferencesModule = module {
    factory {
@@ -23,7 +24,8 @@ val preferencesModule = module {
        )
    }
    factory { FolderSettingsProvider(folderRepository = get()) }
    factory<AccountManager> { get<Preferences>() }
    factory<LegacyAccountManager> { get<Preferences>() }
    factory<AccountManager<*>> { get<LegacyAccountManager>() }
    single {
        RealGeneralSettingsManager(
            preferences = get(),