Handle multi-page selected message lists
This commit is contained in:
parent
5d87ec658d
commit
0c105cb6e4
1 changed files with 22 additions and 4 deletions
|
@ -185,6 +185,20 @@ function updateTimingStats(elapsed) {
|
|||
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) {
|
||||
processing = true;
|
||||
currentStart = Date.now();
|
||||
|
@ -409,12 +423,16 @@ async function clearCacheForMessages(idsInput) {
|
|||
|
||||
browser.menus.onClicked.addListener(async (info, tab) => {
|
||||
if (info.menuItemId === "apply-ai-rules-list" || info.menuItemId === "apply-ai-rules-display") {
|
||||
const ids = info.selectedMessages?.messages?.map(m => m.id) ||
|
||||
(info.messageId ? [info.messageId] : []);
|
||||
let ids = info.messageId ? [info.messageId] : [];
|
||||
if (info.selectedMessages) {
|
||||
ids = await getAllMessageIds(info.selectedMessages);
|
||||
}
|
||||
await applyAiRules(ids);
|
||||
} else if (info.menuItemId === "clear-ai-cache-list" || info.menuItemId === "clear-ai-cache-display") {
|
||||
const ids = info.selectedMessages?.messages?.map(m => m.id) ||
|
||||
(info.messageId ? [info.messageId] : []);
|
||||
let ids = info.messageId ? [info.messageId] : [];
|
||||
if (info.selectedMessages) {
|
||||
ids = await getAllMessageIds(info.selectedMessages);
|
||||
}
|
||||
await clearCacheForMessages(ids);
|
||||
} else if (info.menuItemId === "view-ai-reason-list" || info.menuItemId === "view-ai-reason-display") {
|
||||
const [header] = await browser.messageDisplay.getDisplayedMessages(tab.id);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue