Handle multi-page selected message lists

This commit is contained in:
Jordan Wages 2025-07-15 20:58:42 -05:00
commit 0c105cb6e4

View file

@ -185,6 +185,20 @@ function updateTimingStats(elapsed) {
t.m2 += delta * (elapsed - t.mean); t.m2 += delta * (elapsed - t.mean);
} }
async function getAllMessageIds(list) {
const ids = [];
if (!list) {
return ids;
}
let page = list;
ids.push(...(page.messages || []).map(m => m.id));
while (page.id) {
page = await messenger.messages.continueList(page.id);
ids.push(...(page.messages || []).map(m => m.id));
}
return ids;
}
async function processMessage(id) { async function processMessage(id) {
processing = true; processing = true;
currentStart = Date.now(); currentStart = Date.now();
@ -409,12 +423,16 @@ async function clearCacheForMessages(idsInput) {
browser.menus.onClicked.addListener(async (info, tab) => { browser.menus.onClicked.addListener(async (info, tab) => {
if (info.menuItemId === "apply-ai-rules-list" || info.menuItemId === "apply-ai-rules-display") { if (info.menuItemId === "apply-ai-rules-list" || info.menuItemId === "apply-ai-rules-display") {
const ids = info.selectedMessages?.messages?.map(m => m.id) || let ids = info.messageId ? [info.messageId] : [];
(info.messageId ? [info.messageId] : []); if (info.selectedMessages) {
ids = await getAllMessageIds(info.selectedMessages);
}
await applyAiRules(ids); await applyAiRules(ids);
} else if (info.menuItemId === "clear-ai-cache-list" || info.menuItemId === "clear-ai-cache-display") { } else if (info.menuItemId === "clear-ai-cache-list" || info.menuItemId === "clear-ai-cache-display") {
const ids = info.selectedMessages?.messages?.map(m => m.id) || let ids = info.messageId ? [info.messageId] : [];
(info.messageId ? [info.messageId] : []); if (info.selectedMessages) {
ids = await getAllMessageIds(info.selectedMessages);
}
await clearCacheForMessages(ids); await clearCacheForMessages(ids);
} else if (info.menuItemId === "view-ai-reason-list" || info.menuItemId === "view-ai-reason-display") { } else if (info.menuItemId === "view-ai-reason-list" || info.menuItemId === "view-ai-reason-display") {
const [header] = await browser.messageDisplay.getDisplayedMessages(tab.id); const [header] = await browser.messageDisplay.getDisplayedMessages(tab.id);