import 'dart:collection'; import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart'; import 'package:model/mailbox/presentation_mailbox.dart'; import 'mailbox_node.dart'; import 'mailbox_tree.dart'; class TreeBuilder { Future generateMailboxTree(List mailboxesList) async { final Map mailboxDictionary = HashMap(); final tree = MailboxTree(MailboxNode.root()); mailboxesList.forEach((mailbox) { mailboxDictionary[mailbox.id] = MailboxNode(mailbox); }); mailboxesList.forEach((mailbox) { final parentId = mailbox.parentId; final parentNode = mailboxDictionary[parentId]; final node = mailboxDictionary[mailbox.id]; if (node != null) { if (parentNode != null) { parentNode.addChildNode(node); } else { tree.root.addChildNode(node); } } }); return tree; } }