Skip to content

Commit

Permalink
feat classification for folder added
Browse files Browse the repository at this point in the history
  • Loading branch information
minutogit committed Feb 1, 2025
1 parent c31836f commit 7f84496
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 6 deletions.
66 changes: 61 additions & 5 deletions src/background.js
Original file line number Diff line number Diff line change
Expand Up @@ -235,12 +235,27 @@ function createContextMenu() {
});

// Hauptmenüeintrag für PrioMailbox
// Context menu for messages
messenger.menus.create({
id: "priomailbox",
title: "PrioMailbox",
contexts: ["message_list"],
});

// Context menu for folders
messenger.menus.create({
id: "priomailbox-folder",
title: "PrioMailbox",
contexts: ["folder_pane"],
});

messenger.menus.create({
id: "classify-folder",
parentId: "priomailbox-folder",
title: trans("classifyMenu"),
contexts: ["folder_pane"]
});

if (selectedTags.length === 0) {
// Menüeintrag "Schlagwort auswählen" wenn keine Tags ausgewählt sind
messenger.menus.create({
Expand Down Expand Up @@ -350,29 +365,39 @@ messenger.storage.onChanged.addListener((changes, area) => {
messenger.menus.onClicked.addListener((info, tab) => {
console.log("Menu item clicked:", info.menuItemId);
console.log("Info object:", info);


if (info.menuItemId === "classify-folder") {
if (info.selectedFolder) {
classifyFolder(info.selectedFolder);
} else {
console.error("No folder selected for classification.");
}
return;
}

if (info.selectedMessages && info.selectedMessages.messages.length > 0) {
const messageId = info.selectedMessages.messages[0].id;

if (info.menuItemId === "select_tag") {
messenger.runtime.openOptionsPage().catch((error) => {
console.error("Error opening settings page:", error);
});
return;
}

selectMessage(messageId)
.then(() => {
handleMenuClick(info, messageId);
})
.catch((error) => {
console.error("Error selecting message:", error);
});
});
} else {
console.error("No message selected.");
console.log("No message selected. Assuming folder operation.");
}
});


function handleMenuClick(info, messageId) {
// Lade die neuesten bayesData bei jedem Klick
messenger.storage.local
Expand Down Expand Up @@ -424,6 +449,37 @@ function handleMenuClick(info, messageId) {
});
}


async function classifyFolder(folder) {
console.log("classifyFolder executed for", folder);

let folderToQuery = {
accountId: folder.accountId,
path: folder.path
};

try {
let page = await messenger.messages.list(folderToQuery);

while (true) {
for (let message of page.messages) {
console.log("Verarbeite Nachricht:", message);
classifyEmail(message.id);
}

if (page.id) {
page = await messenger.messages.continueList(page.id);
} else {
break;
}
}
} catch (error) {
console.error("Error retrieving messages:", error);
}
openPopupWithMessage(trans("classificationCompleteMessage"));
}


function selectMessage(messageId) {
return messenger.mailTabs
.setSelectedMessages([messageId])
Expand Down
2 changes: 1 addition & 1 deletion src/manifest.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"manifest_version": 2,
"name": "PrioMailbox",
"version": "1.3.4",
"version": "1.4.0",
"default_locale": "en",
"description": "PrioMailbox organizes your emails in Thunderbird with intelligent, trainable tags. Important messages are highlighted, while unimportant ones are hidden.",
"icons": {
Expand Down

0 comments on commit 7f84496

Please sign in to comment.