diff --git a/app/core/src/main/java/com/fsck/k9/mailstore/FolderRepository.kt b/app/core/src/main/java/com/fsck/k9/mailstore/FolderRepository.kt index 32d1d104bf4febb1d9160ffb880f4d23fc910825..f18b27fe9eb1f5566c2e78af19781b7e69939dac 100644 --- a/app/core/src/main/java/com/fsck/k9/mailstore/FolderRepository.kt +++ b/app/core/src/main/java/com/fsck/k9/mailstore/FolderRepository.kt @@ -37,6 +37,39 @@ class FolderRepository( return displayFolders.sortedWith(sortForDisplay) } + fun getFolder(folderId: Long): Folder? { + val database = localStoreProvider.getInstance(account).database + return database.execute(false) { db -> + db.query( + "folders", + arrayOf( + "id", + "server_id", + "name", + "local_only" + ), + "id = ?", + arrayOf(folderId.toString()), + null, + null, + null + ).use { cursor -> + if (cursor.moveToFirst()) { + val id = cursor.getLong(0) + Folder( + id = id, + serverId = cursor.getString(1), + name = cursor.getString(2), + type = folderTypeOf(id), + isLocalOnly = cursor.getInt(3) == 1 + ) + } else { + null + } + } + } + } + fun getFolderDetails(folderId: Long): FolderDetails? { return getFolderDetails(selection = "id = ?", selectionArgs = arrayOf(folderId.toString())).firstOrNull() } diff --git a/app/k9mail/src/main/java/com/fsck/k9/widget/unread/UnreadWidgetDataProvider.kt b/app/k9mail/src/main/java/com/fsck/k9/widget/unread/UnreadWidgetDataProvider.kt index 93bb06ba0bf49f121deb0554acc0eff7a76b533b..94abcb3e97fd832f97a534a72d8dbcb25e6915f1 100644 --- a/app/k9mail/src/main/java/com/fsck/k9/widget/unread/UnreadWidgetDataProvider.kt +++ b/app/k9mail/src/main/java/com/fsck/k9/widget/unread/UnreadWidgetDataProvider.kt @@ -78,10 +78,10 @@ class UnreadWidgetDataProvider( private fun getFolderDisplayName(account: Account, folderId: Long): String { val folderRepository = folderRepositoryManager.getFolderRepository(account) - val folderDetails = folderRepository.getFolderDetails(folderId) - return if (folderDetails != null) { + val folder = folderRepository.getFolder(folderId) + return if (folder != null) { val folderNameFormatter = folderNameFormatterFactory.create(context) - folderNameFormatter.displayName(folderDetails.folder) + folderNameFormatter.displayName(folder) } else { Timber.e("Error loading folder for account %s, folder ID: %d", account, folderId) "" diff --git a/app/k9mail/src/test/java/com/fsck/k9/widget/unread/UnreadWidgetDataProviderTest.kt b/app/k9mail/src/test/java/com/fsck/k9/widget/unread/UnreadWidgetDataProviderTest.kt index f4b6af76a587539eab18ea242b15fc099f2f4c04..4d35e1cac6278992c313dba134cfb5ab32dd3da4 100644 --- a/app/k9mail/src/test/java/com/fsck/k9/widget/unread/UnreadWidgetDataProviderTest.kt +++ b/app/k9mail/src/test/java/com/fsck/k9/widget/unread/UnreadWidgetDataProviderTest.kt @@ -5,9 +5,7 @@ import com.fsck.k9.Account import com.fsck.k9.AppRobolectricTest import com.fsck.k9.Preferences import com.fsck.k9.controller.MessagingController -import com.fsck.k9.mail.FolderClass import com.fsck.k9.mailstore.Folder -import com.fsck.k9.mailstore.FolderDetails import com.fsck.k9.mailstore.FolderRepository import com.fsck.k9.mailstore.FolderRepositoryManager import com.fsck.k9.mailstore.FolderType @@ -109,15 +107,7 @@ class UnreadWidgetDataProviderTest : AppRobolectricTest() { fun createFolderRepository(): FolderRepository { return mock { - on { getFolderDetails(FOLDER_ID) } doReturn FolderDetails( - folder = FOLDER, - isInTopGroup = true, - isIntegrate = true, - syncClass = FolderClass.NO_CLASS, - displayClass = FolderClass.FIRST_CLASS, - notifyClass = FolderClass.NO_CLASS, - pushClass = FolderClass.NO_CLASS - ) + on { getFolder(FOLDER_ID) } doReturn FOLDER } }