Skip to content

Commit 5341ab3

Browse files
committed
Support classification of more than 100 selected mails
1 parent 7f84496 commit 5341ab3

File tree

2 files changed

+44
-35
lines changed

2 files changed

+44
-35
lines changed

src/background.js

+43-34
Original file line numberDiff line numberDiff line change
@@ -399,50 +399,59 @@ messenger.menus.onClicked.addListener((info, tab) => {
399399

400400

401401
function handleMenuClick(info, messageId) {
402-
// Lade die neuesten bayesData bei jedem Klick
402+
// Lade die neuesten bayesData
403403
messenger.storage.local
404404
.get("bayesData")
405405
.then((result) => {
406-
bayesData = result.bayesData || {}; // Stelle sicher, dass die neuesten Daten geladen sind
406+
bayesData = result.bayesData || {};
407+
return messenger.messages.listTags();
408+
})
409+
.then((tags) => {
410+
allTags = tags;
411+
tagKeyToNameMap = {};
412+
tagNameToKeyMap = {};
413+
allTags.forEach((tag) => {
414+
tagKeyToNameMap[tag.key] = tag.tag;
415+
tagNameToKeyMap[tag.tag] = tag.key;
416+
});
407417

408-
// Aktualisiere die Tags und Mappings
409-
messenger.messages.listTags().then((tags) => {
410-
allTags = tags;
411-
tagKeyToNameMap = {};
412-
tagNameToKeyMap = {};
413-
allTags.forEach((tag) => {
414-
tagKeyToNameMap[tag.key] = tag.tag;
415-
tagNameToKeyMap[tag.tag] = tag.key;
416-
});
418+
const selectedMessagesPage = info.selectedMessages;
417419

418-
const messages = info.selectedMessages.messages;
420+
if (info.menuItemId.startsWith("learn_") || info.menuItemId.startsWith("unlearn_")) {
421+
const isPositive = info.menuItemId.startsWith("learn_");
422+
const tagKey = info.menuItemId.split("_")[1]; // Extrahiere den tagKey
423+
const tagName = tagKeyToNameMap[tagKey]; // Hole den korrekten tagName aus der Map
419424

420-
if (info.menuItemId.startsWith("learn_") || info.menuItemId.startsWith("unlearn_")) {
421-
const isPositive = info.menuItemId.startsWith("learn_");
422-
const tagKey = info.menuItemId.split("_")[1]; // Extrahiere den tagKey
423-
const tagName = tagKeyToNameMap[tagKey]; // Hole den korrekten tagName aus der Map
425+
if (!tagName) {
426+
console.warn(`No valid tag name for key "${tagKey}" found.`);
427+
return;
428+
}
424429

425-
if (!tagName) {
426-
console.warn(`No valid tag name for key "${tagKey}" found.`);
427-
return;
430+
selectedMessagesPage.messages.forEach((message) => {
431+
learnTagFromMail(message.id, tagName, isPositive);
432+
});
433+
const popupMessage = trans(isPositive ? "trainingCompleteMessage" : "untrainingCompleteMessage",[tagName]);
434+
openPopupWithMessage(popupMessage);
435+
} else if (info.menuItemId === "classify") {
436+
(async () => {
437+
let page = selectedMessagesPage;
438+
while (true) {
439+
for (let message of page.messages) {
440+
classifyEmail(message.id);
441+
}
442+
if (page.id) {
443+
page = await messenger.messages.continueList(page.id);
444+
} else {
445+
break;
446+
}
428447
}
429-
430-
messages.forEach((message) => {
431-
learnTagFromMail(message.id, tagName, isPositive);
432-
const popupMessage = trans(isPositive ? 'trainingCompleteMessage' : 'untrainingCompleteMessage', [tagName]);
433-
openPopupWithMessage(popupMessage);
434-
});
435-
} else if (info.menuItemId === "classify") {
436-
messages.forEach((message) => {
437-
classifyEmail(message.id);
438-
});
439448
const popupMessage = trans("classificationCompleteMessage");
440449
openPopupWithMessage(popupMessage);
441-
} else if (info.menuItemId === "show_info") {
442-
const messageId = messages[0].id;
443-
showEMailInfo(messageId);
444-
}
445-
});
450+
})();
451+
} else if (info.menuItemId === "show_info") {
452+
const firstMessageId = selectedMessagesPage.messages[0].id;
453+
showEMailInfo(firstMessageId);
454+
}
446455
})
447456
.catch((error) => {
448457
console.error("Error loading bayesData:", error);

src/manifest.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"manifest_version": 2,
33
"name": "PrioMailbox",
4-
"version": "1.4.0",
4+
"version": "1.4.1",
55
"default_locale": "en",
66
"description": "PrioMailbox organizes your emails in Thunderbird with intelligent, trainable tags. Important messages are highlighted, while unimportant ones are hidden.",
77
"icons": {

0 commit comments

Comments
 (0)