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

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

Merge pull request #4701 from k9mail/change_BackendStorageListener

Change the BackendStorage API to add/update/remove folders
parents 447dbe1b e86f294a
Loading
Loading
Loading
Loading
+29 −0
Original line number Diff line number Diff line
package com.fsck.k9.mailstore

import com.fsck.k9.Account
import com.fsck.k9.Preferences

/**
 * Reset an Account's auto-expand folder when the currently configured folder was removed.
 */
class AutoExpandFolderBackendFoldersRefreshListener(
    private val preferences: Preferences,
    private val account: Account,
    private val folderRepository: FolderRepository
) : BackendFoldersRefreshListener {

    override fun onBeforeFolderListRefresh() = Unit

    override fun onAfterFolderListRefresh() {
        checkAutoExpandFolder()
    }

    private fun checkAutoExpandFolder() {
        account.autoExpandFolder?.let { autoExpandFolderServerId ->
            if (!folderRepository.isFolderPresent(autoExpandFolderServerId)) {
                account.autoExpandFolder = null
                preferences.saveAccount(account)
            }
        }
    }
}
+0 −26
Original line number Diff line number Diff line
package com.fsck.k9.mailstore

import com.fsck.k9.Account
import com.fsck.k9.Preferences
import com.fsck.k9.backend.api.FolderInfo
import com.fsck.k9.mail.FolderType

/**
 * Reset an Account's auto-expand folder when the currently configured folder was removed.
 */
class AutoExpandFolderBackendStorageListener(
    private val preferences: Preferences,
    private val account: Account
) : BackendStorageListener {

    override fun onFoldersCreated(folders: List<FolderInfo>) = Unit

    override fun onFoldersDeleted(folderServerIds: List<String>) {
        if (account.autoExpandFolder in folderServerIds) {
            account.autoExpandFolder = null
            preferences.saveAccount(account)
        }
    }

    override fun onFolderChanged(folderServerId: String, name: String, type: FolderType) = Unit
}
+6 −0
Original line number Diff line number Diff line
package com.fsck.k9.mailstore

interface BackendFoldersRefreshListener {
    fun onBeforeFolderListRefresh()
    fun onAfterFolderListRefresh()
}
+0 −10
Original line number Diff line number Diff line
package com.fsck.k9.mailstore

import com.fsck.k9.backend.api.FolderInfo
import com.fsck.k9.mail.FolderType

interface BackendStorageListener {
    fun onFoldersCreated(folders: List<FolderInfo>)
    fun onFoldersDeleted(folderServerIds: List<String>)
    fun onFolderChanged(folderServerId: String, name: String, type: FolderType)
}
+17 −0
Original line number Diff line number Diff line
@@ -46,6 +46,23 @@ class FolderRepository(
        return getFolderDetails(selection = null, selectionArgs = null)
    }

    fun isFolderPresent(folderServerId: String): Boolean {
        val database = localStoreProvider.getInstance(account).database
        return database.execute(false) { db ->
            db.query(
                "folders",
                arrayOf("id"),
                "server_id = ?",
                arrayOf(folderServerId),
                null,
                null,
                null
            ).use { cursor ->
                cursor.count != 0
            }
        }
    }

    private fun getFolderDetails(selection: String?, selectionArgs: Array<String>?): List<FolderDetails> {
        val database = localStoreProvider.getInstance(account).database
        return database.execute(false) { db ->
Loading