diff --git a/Mail/Views/Menu Drawer/FolderListView.swift b/Mail/Views/Menu Drawer/FolderListView.swift index 61c5425ca..8f6683a4e 100644 --- a/Mail/Views/Menu Drawer/FolderListView.swift +++ b/Mail/Views/Menu Drawer/FolderListView.swift @@ -25,12 +25,23 @@ import SwiftUI struct NestableFolder: Identifiable { var id: String { - content.id + guard !content.isInvalidated else { + return UUID().uuidString + } + + return content.id } let content: Folder let children: [NestableFolder] + /// A view on `children` data, only valid Realm objects + var displayableChildren: [NestableFolder] { + children.filter { element in + !element.content.isInvalidated + } + } + static func createFoldersHierarchy(from folders: [Folder]) -> [Self] { var parentFolders = [NestableFolder]() diff --git a/Mail/Views/Menu Drawer/Folders/FolderCell.swift b/Mail/Views/Menu Drawer/Folders/FolderCell.swift index 39c90ec10..973091e33 100644 --- a/Mail/Views/Menu Drawer/Folders/FolderCell.swift +++ b/Mail/Views/Menu Drawer/Folders/FolderCell.swift @@ -92,8 +92,8 @@ struct FolderCell: View { } } - if folder.content.isExpanded || cellType == .move { - ForEach(folder.children) { child in + if !folder.content.isInvalidated && folder.content.isExpanded || cellType == .move { + ForEach(folder.displayableChildren) { child in FolderCell( folder: child, level: level + 1,