( emails: OutlookEmail[], config: OutlookWebhookConfig, resolvedFolderIds?: Map<string, string> )
| 353 | } |
| 354 | |
| 355 | function filterEmailsByFolder( |
| 356 | emails: OutlookEmail[], |
| 357 | config: OutlookWebhookConfig, |
| 358 | resolvedFolderIds?: Map<string, string> |
| 359 | ): OutlookEmail[] { |
| 360 | if (!config.folderIds || !config.folderIds.length) return emails |
| 361 | |
| 362 | const actualFolderIds = config.folderIds.map((configFolder) => { |
| 363 | if (resolvedFolderIds && isWellKnownFolderName(configFolder)) { |
| 364 | const resolvedId = resolvedFolderIds.get(configFolder.toLowerCase()) |
| 365 | if (resolvedId) return resolvedId |
| 366 | } |
| 367 | return configFolder |
| 368 | }) |
| 369 | |
| 370 | return emails.filter((email) => { |
| 371 | const emailFolderId = email.parentFolderId |
| 372 | const hasMatchingFolder = actualFolderIds.some( |
| 373 | (folderId) => emailFolderId.toLowerCase() === folderId.toLowerCase() |
| 374 | ) |
| 375 | return config.folderFilterBehavior === 'INCLUDE' ? hasMatchingFolder : !hasMatchingFolder |
| 376 | }) |
| 377 | } |
| 378 | |
| 379 | async function processOutlookEmails( |
| 380 | emails: OutlookEmail[], |
no test coverage detected