Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@ import net.thunderbird.feature.mail.folder.api.Folder
import net.thunderbird.feature.mail.folder.api.FolderPathDelimiter

internal data class MailDisplayFolder(
val accountId: String,
val accountId: String?,
val folder: Folder,
val isInTopGroup: Boolean,
override val unreadMessageCount: Int,
override val starredMessageCount: Int,
override val pathDelimiter: FolderPathDelimiter,
) : DisplayFolder {
override val id: String = createMailDisplayAccountFolderId(accountId, folder.id)
override val id: String = createMailDisplayAccountFolderId(accountId.orEmpty(), folder.id)
}

fun createMailDisplayAccountFolderId(accountId: String, folderId: Long): String {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ internal class GetDisplayTreeFolder(
private fun createPlaceholderFolder(name: String, pathDelimiter: FolderPathDelimiter): MailDisplayFolder {
placeholderCounter += 1
return MailDisplayFolder(
accountId = "placeholder",
accountId = null,
folder = Folder(
id = placeholderCounter,
name = name,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -240,12 +240,14 @@ internal class DrawerViewModel(
selectFolder(folder.id)

if (folder is MailDisplayFolder) {
emitEffect(
Effect.OpenFolder(
accountId = folder.accountId,
folderId = folder.folder.id,
),
)
if (folder.accountId != null) {
emitEffect(
Effect.OpenFolder(
accountId = folder.accountId,
folderId = folder.folder.id,
),
)
}
} else if (folder is UnifiedDisplayFolder) {
emitEffect(Effect.OpenUnifiedFolder)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,13 +76,14 @@ internal fun FolderListItem(
)
},
selected = selectedFolderId == displayFolder.id,
onClick = { onClick(displayFolder) },
modifier = Modifier.fillMaxWidth(),
icon = {
Icon(
imageVector = mapFolderIcon(displayFolder),
)
onClick = {
when (displayFolder) {
is MailDisplayFolder if displayFolder.accountId == null -> isExpanded.value = !isExpanded.value
else -> onClick(displayFolder)
}
},
modifier = Modifier.fillMaxWidth(),
icon = { Icon(imageVector = mapFolderIcon(displayFolder)) },
)

// Managing children
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ class GetDisplayTreeFolderTest {
children = persistentListOf(
DisplayTreeFolder(
displayFolder = MailDisplayFolder(
accountId = "placeholder",
accountId = null,
folder = Folder(
id = 1L,
name = "(Unnamed)/(Unnamed)",
Expand Down Expand Up @@ -243,7 +243,7 @@ class GetDisplayTreeFolderTest {
),
DisplayTreeFolder(
displayFolder = MailDisplayFolder(
accountId = "placeholder",
accountId = null,
folder = Folder(id = 2, name = "valid1", type = FolderType.REGULAR, isLocalOnly = false),
isInTopGroup = true,
unreadMessageCount = 0,
Expand All @@ -256,7 +256,7 @@ class GetDisplayTreeFolderTest {
children = persistentListOf(
DisplayTreeFolder(
displayFolder = MailDisplayFolder(
accountId = "placeholder",
accountId = null,
folder = Folder(
id = 3L,
name = "valid1/(Unnamed)",
Expand Down Expand Up @@ -329,7 +329,7 @@ class GetDisplayTreeFolderTest {
children = persistentListOf(
createDisplayTreeFolder(
displayFolder = createDisplayAccountFolder(
accountId = "placeholder",
accountId = null,
folderId = 1L,
folderName = "folderLevel1",
unreadMessageCount = 0,
Expand Down Expand Up @@ -388,7 +388,7 @@ class GetDisplayTreeFolderTest {
children = persistentListOf(
createDisplayTreeFolder(
displayFolder = createDisplayAccountFolder(
accountId = "placeholder",
accountId = null,
folderId = 1,
folderName = "level1",
unreadMessageCount = 0,
Expand All @@ -400,7 +400,7 @@ class GetDisplayTreeFolderTest {
children = persistentListOf(
createDisplayTreeFolder(
displayFolder = createDisplayAccountFolder(
accountId = "placeholder",
accountId = null,
folderId = 2L,
folderName = "level1/level2",
unreadMessageCount = 0,
Expand Down Expand Up @@ -438,7 +438,7 @@ class GetDisplayTreeFolderTest {
folderName: String,
unreadMessageCount: Int,
starredMessageCount: Int,
accountId: String = "accountId",
accountId: String? = "accountId",
): MailDisplayFolder {
return MailDisplayFolder(
accountId = accountId,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -334,7 +334,7 @@ internal class DrawerViewModelTest {

assertThat(turbines.awaitEffectItem()).isEqualTo(
Effect.OpenFolder(
accountId = displayFolders[1].accountId,
accountId = requireNotNull(displayFolders[1].accountId),
folderId = displayFolders[1].folder.id,
),
)
Expand Down