Skip to content

Commit 7f84496

Browse files
committed
feat classification for folder added
1 parent c31836f commit 7f84496

File tree

2 files changed

+62
-6
lines changed

2 files changed

+62
-6
lines changed

src/background.js

+61-5
Original file line numberDiff line numberDiff line change
@@ -235,12 +235,27 @@ function createContextMenu() {
235235
});
236236

237237
// Hauptmenüeintrag für PrioMailbox
238+
// Context menu for messages
238239
messenger.menus.create({
239240
id: "priomailbox",
240241
title: "PrioMailbox",
241242
contexts: ["message_list"],
242243
});
243244

245+
// Context menu for folders
246+
messenger.menus.create({
247+
id: "priomailbox-folder",
248+
title: "PrioMailbox",
249+
contexts: ["folder_pane"],
250+
});
251+
252+
messenger.menus.create({
253+
id: "classify-folder",
254+
parentId: "priomailbox-folder",
255+
title: trans("classifyMenu"),
256+
contexts: ["folder_pane"]
257+
});
258+
244259
if (selectedTags.length === 0) {
245260
// Menüeintrag "Schlagwort auswählen" wenn keine Tags ausgewählt sind
246261
messenger.menus.create({
@@ -350,29 +365,39 @@ messenger.storage.onChanged.addListener((changes, area) => {
350365
messenger.menus.onClicked.addListener((info, tab) => {
351366
console.log("Menu item clicked:", info.menuItemId);
352367
console.log("Info object:", info);
353-
368+
369+
if (info.menuItemId === "classify-folder") {
370+
if (info.selectedFolder) {
371+
classifyFolder(info.selectedFolder);
372+
} else {
373+
console.error("No folder selected for classification.");
374+
}
375+
return;
376+
}
377+
354378
if (info.selectedMessages && info.selectedMessages.messages.length > 0) {
355379
const messageId = info.selectedMessages.messages[0].id;
356-
380+
357381
if (info.menuItemId === "select_tag") {
358382
messenger.runtime.openOptionsPage().catch((error) => {
359383
console.error("Error opening settings page:", error);
360384
});
361385
return;
362386
}
363-
387+
364388
selectMessage(messageId)
365389
.then(() => {
366390
handleMenuClick(info, messageId);
367391
})
368392
.catch((error) => {
369393
console.error("Error selecting message:", error);
370-
});
394+
});
371395
} else {
372-
console.error("No message selected.");
396+
console.log("No message selected. Assuming folder operation.");
373397
}
374398
});
375399

400+
376401
function handleMenuClick(info, messageId) {
377402
// Lade die neuesten bayesData bei jedem Klick
378403
messenger.storage.local
@@ -424,6 +449,37 @@ function handleMenuClick(info, messageId) {
424449
});
425450
}
426451

452+
453+
async function classifyFolder(folder) {
454+
console.log("classifyFolder executed for", folder);
455+
456+
let folderToQuery = {
457+
accountId: folder.accountId,
458+
path: folder.path
459+
};
460+
461+
try {
462+
let page = await messenger.messages.list(folderToQuery);
463+
464+
while (true) {
465+
for (let message of page.messages) {
466+
console.log("Verarbeite Nachricht:", message);
467+
classifyEmail(message.id);
468+
}
469+
470+
if (page.id) {
471+
page = await messenger.messages.continueList(page.id);
472+
} else {
473+
break;
474+
}
475+
}
476+
} catch (error) {
477+
console.error("Error retrieving messages:", error);
478+
}
479+
openPopupWithMessage(trans("classificationCompleteMessage"));
480+
}
481+
482+
427483
function selectMessage(messageId) {
428484
return messenger.mailTabs
429485
.setSelectedMessages([messageId])

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.3.4",
4+
"version": "1.4.0",
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)