getParent method
Tries to determine the parent mailbox from the given knownMailboxes and separator.
Set create to false in case the parent should only be determined from the known mailboxes (defaults to true).
Set createIntermediate to false and create to true to return the first known existing parent, when the direct parent is not known
Implementation
Mailbox? getParent(List<Mailbox> knownMailboxes, String separator,
{bool create = true, bool createIntermediate = true}) {
var lastSplitIndex = path.lastIndexOf(separator);
if (lastSplitIndex == -1) {
// this is a root mailbox, eg 'Inbox'
return null;
}
var parentPath = path.substring(0, lastSplitIndex);
var parent =
knownMailboxes.firstWhereOrNull((box) => box.path == parentPath);
if (parent == null && create) {
lastSplitIndex = parentPath.lastIndexOf(separator);
var parentName = (lastSplitIndex == -1)
? parentPath
: parentPath.substring(lastSplitIndex + 1);
parent = Mailbox.setup(parentName, parentPath, [MailboxFlag.noSelect]);
if ((lastSplitIndex != -1) && (!createIntermediate)) {
parent = parent.getParent(knownMailboxes, separator,
create: true, createIntermediate: false);
}
}
return parent;
}