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

Unverified Commit f5c9c32a authored by cketti's avatar cketti Committed by GitHub
Browse files

Merge pull request #5379 from k9mail/whats_new

Show "What's new" screen when app was updated
parents ed25609d 00739132
Loading
Loading
Loading
Loading
+5 −18
Original line number Diff line number Diff line
@@ -6,17 +6,15 @@ import com.fsck.k9.Account.SortType
import com.fsck.k9.core.BuildConfig
import com.fsck.k9.mail.K9MailLib
import com.fsck.k9.mailstore.LocalStore
import com.fsck.k9.preferences.RealGeneralSettingsManager
import com.fsck.k9.preferences.Storage
import com.fsck.k9.preferences.StorageEditor
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import timber.log.Timber
import timber.log.Timber.DebugTree

@Deprecated("Use GeneralSettingsManager and GeneralSettings instead")
object K9 : EarlyInit {
    private val preferences: Preferences by inject()
    private val generalSettingsManager: RealGeneralSettingsManager by inject()

    /**
     * If this is `true`, various development settings will be enabled.
@@ -298,20 +296,11 @@ object K9 : EarlyInit {

        checkCachedDatabaseVersion(context)

        loadPrefs(preferences)
        loadPrefs(generalSettingsManager.storage)
    }

    /**
     * Load preferences into our statics.
     *
     * If you're adding a preference here, odds are you'll need to add it to
     * [com.fsck.k9.preferences.GeneralSettingsDescriptions], too.
     *
     * @param prefs Preferences to load
     */
    @JvmStatic
    fun loadPrefs(prefs: Preferences) {
        val storage = prefs.storage
    fun loadPrefs(storage: Storage) {
        isDebugLoggingEnabled = storage.getBoolean("enableDebugLogging", DEVELOPER_MODE)
        isSensitiveDebugLoggingEnabled = storage.getBoolean("enableSensitiveLogging", false)
        isShowAnimations = storage.getBoolean("animations", true)
@@ -462,9 +451,7 @@ object K9 : EarlyInit {

    @JvmStatic
    fun saveSettingsAsync() {
        GlobalScope.launch(Dispatchers.IO) {
            preferences.saveSettings()
        }
        generalSettingsManager.saveSettingsAsync()
    }

    private inline fun <reified T : Enum<T>> Storage.getEnum(key: String, defaultValue: T): T {
+4 −0
Original line number Diff line number Diff line
@@ -10,9 +10,13 @@ import com.fsck.k9.mail.ssl.TrustedSocketFactory
import com.fsck.k9.mailstore.LocalStoreProvider
import com.fsck.k9.power.TracingPowerManager
import com.fsck.k9.setup.ServerNameSuggester
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.GlobalScope
import org.koin.core.qualifier.named
import org.koin.dsl.module

val mainModule = module {
    single<CoroutineScope>(named("AppCoroutineScope")) { GlobalScope }
    single {
        Preferences(
            context = get(),
+0 −23
Original line number Diff line number Diff line
@@ -43,7 +43,6 @@ class Preferences internal constructor(
    @GuardedBy("accountLock")
    private var newAccount: Account? = null
    private val accountsChangeListeners = CopyOnWriteArraySet<AccountsChangeListener>()
    private val settingsChangeListeners = CopyOnWriteArraySet<SettingsChangeListener>()
    private val accountRemovedListeners = CopyOnWriteArraySet<AccountRemovedListener>()

    val storage = Storage()
@@ -210,14 +209,6 @@ class Preferences internal constructor(
        notifyAccountsChangeListeners()
    }

    fun saveSettings() {
        val editor = createStorageEditor()
        K9.save(editor)
        editor.commit()

        notifySettingsChangeListeners()
    }

    private fun ensureAssignedAccountNumber(account: Account) {
        if (account.accountNumber != Account.UNASSIGNED_ACCOUNT_NUMBER) return

@@ -279,20 +270,6 @@ class Preferences internal constructor(
        accountsChangeListeners.remove(accountsChangeListener)
    }

    private fun notifySettingsChangeListeners() {
        for (listener in settingsChangeListeners) {
            listener.onSettingsChanged()
        }
    }

    fun addSettingsChangeListener(settingsChangeListener: SettingsChangeListener) {
        settingsChangeListeners.add(settingsChangeListener)
    }

    fun removeSettingsChangeListener(settingsChangeListener: SettingsChangeListener) {
        settingsChangeListeners.remove(settingsChangeListener)
    }

    private fun notifyAccountRemovedListeners(account: Account) {
        for (listener in accountRemovedListeners) {
            listener.onAccountRemoved(account)
+8 −2
Original line number Diff line number Diff line
@@ -3,10 +3,16 @@ package com.fsck.k9.preferences
/**
 * Stores a snapshot of the app's general settings.
 *
 * TODO: Add more settings as needed.
 * When adding a setting here, make sure to also add it in these places:
 * - [GeneralSettingsManager] (write function)
 * - [RealGeneralSettingsManager.loadGeneralSettings]
 * - [RealGeneralSettingsManager.writeSettings]
 * - [GeneralSettingsDescriptions]
 */
// TODO: Move over settings from K9
data class GeneralSettings(
    val backgroundSync: BackgroundSync
    val backgroundSync: BackgroundSync,
    val showRecentChanges: Boolean
)

enum class BackgroundSync {
+3 −0
Original line number Diff line number Diff line
@@ -280,6 +280,9 @@ public class GeneralSettingsDescriptions {
                new V(49, new BooleanSetting(false)),
                new V(56, null)
        ));
        s.put("showRecentChanges", Settings.versions(
                new V(73, new BooleanSetting(true))
        ));

        SETTINGS = Collections.unmodifiableMap(s);

Loading