@@ -235,12 +235,27 @@ function createContextMenu() {
235
235
} ) ;
236
236
237
237
// Hauptmenüeintrag für PrioMailbox
238
+ // Context menu for messages
238
239
messenger . menus . create ( {
239
240
id : "priomailbox" ,
240
241
title : "PrioMailbox" ,
241
242
contexts : [ "message_list" ] ,
242
243
} ) ;
243
244
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
+
244
259
if ( selectedTags . length === 0 ) {
245
260
// Menüeintrag "Schlagwort auswählen" wenn keine Tags ausgewählt sind
246
261
messenger . menus . create ( {
@@ -350,29 +365,39 @@ messenger.storage.onChanged.addListener((changes, area) => {
350
365
messenger . menus . onClicked . addListener ( ( info , tab ) => {
351
366
console . log ( "Menu item clicked:" , info . menuItemId ) ;
352
367
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
+
354
378
if ( info . selectedMessages && info . selectedMessages . messages . length > 0 ) {
355
379
const messageId = info . selectedMessages . messages [ 0 ] . id ;
356
-
380
+
357
381
if ( info . menuItemId === "select_tag" ) {
358
382
messenger . runtime . openOptionsPage ( ) . catch ( ( error ) => {
359
383
console . error ( "Error opening settings page:" , error ) ;
360
384
} ) ;
361
385
return ;
362
386
}
363
-
387
+
364
388
selectMessage ( messageId )
365
389
. then ( ( ) => {
366
390
handleMenuClick ( info , messageId ) ;
367
391
} )
368
392
. catch ( ( error ) => {
369
393
console . error ( "Error selecting message:" , error ) ;
370
- } ) ;
394
+ } ) ;
371
395
} else {
372
- console . error ( "No message selected." ) ;
396
+ console . log ( "No message selected. Assuming folder operation ." ) ;
373
397
}
374
398
} ) ;
375
399
400
+
376
401
function handleMenuClick ( info , messageId ) {
377
402
// Lade die neuesten bayesData bei jedem Klick
378
403
messenger . storage . local
@@ -424,6 +449,37 @@ function handleMenuClick(info, messageId) {
424
449
} ) ;
425
450
}
426
451
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
+
427
483
function selectMessage ( messageId ) {
428
484
return messenger . mailTabs
429
485
. setSelectedMessages ( [ messageId ] )
0 commit comments