mirror of
https://github.com/warmbly/warmbly.git
synced 2026-10-12 16:02:44 +00:00
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
10 lines
660 B
TypeScript
10 lines
660 B
TypeScript
import type Inbox from "./api/models/app/emails/Inbox";
|
|
import type Tag from "./api/models/app/Tag";
|
|
|
|
export default function groupMailboxes(mailboxes: readonly Inbox[], tags: readonly Tag[]): Inbox[] {
|
|
const ordered = [...tags].sort((a, b) => a.position - b.position || a.title.localeCompare(b.title) || a.id.localeCompare(b.id));
|
|
const rank = new Map(ordered.map((tag, index) => [tag.id, index]));
|
|
const group = (mailbox: Inbox) => Math.min(...mailbox.tags.map((id) => rank.get(id) ?? ordered.length), ordered.length);
|
|
return [...mailboxes].sort((a, b) => group(a) - group(b) || a.email.localeCompare(b.email) || a.id.localeCompare(b.id));
|
|
}
|