Skip to content

Commit 333adbb

Browse files
feat: Filter unknown folders (#1650)
2 parents f93c532 + 97831f9 commit 333adbb

File tree

1 file changed

+18
-4
lines changed

1 file changed

+18
-4
lines changed

MailCore/Cache/MailboxManager/MailboxManager+Folders.swift

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,9 @@ public extension MailboxManager {
2929
return
3030
}
3131

32-
let folderResultRaw = try await apiFetcher.folders(mailbox: mailbox)
33-
let folderResult = folderResultRaw.filter { $0.role != .unknown }
34-
let newFolders = getSubFolders(from: folderResult)
32+
let folderResult = try await apiFetcher.folders(mailbox: mailbox)
33+
let filteredFolderResult = filterOutUnknownFolders(folderResult)
34+
let newFolders = getSubFolders(from: filteredFolderResult)
3535

3636
try? writeTransaction { writableRealm in
3737
// Update folders in Realm
@@ -43,7 +43,7 @@ public extension MailboxManager {
4343
let cachedFolders = writableRealm.objects(Folder.self)
4444

4545
// Remove old folders
46-
writableRealm.add(folderResult, update: .modified)
46+
writableRealm.add(filteredFolderResult, update: .modified)
4747
let toDeleteFolders = Set(cachedFolders).subtracting(Set(newFolders))
4848
.filter { $0.remoteId != Constants.searchFolderId }
4949
var toDeleteThreads = [Thread]()
@@ -116,4 +116,18 @@ public extension MailboxManager {
116116
func cancelRefresh() async {
117117
await refreshActor.cancelRefresh()
118118
}
119+
120+
private func filterOutUnknownFolders(_ folders: [Folder]) -> [Folder] {
121+
let filteredFolders: [Folder] = folders.compactMap { folder in
122+
guard folder.role != .unknown else { return nil }
123+
124+
let filteredChildren = filterOutUnknownFolders(Array(folder.children))
125+
folder.children.removeAll()
126+
folder.children.insert(objectsIn: filteredChildren)
127+
128+
return folder
129+
}
130+
131+
return filteredFolders
132+
}
119133
}

0 commit comments

Comments
 (0)