Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions apps/web/utils/email/microsoft.ts
Original file line number Diff line number Diff line change
Expand Up @@ -561,6 +561,9 @@ export class OutlookProvider implements EmailProvider {
);
}

// Always exclude drafts
filters.push("isDraft eq false");

return filters.length > 0 ? filters.join(" and ") : undefined;
}

Expand Down
29 changes: 19 additions & 10 deletions apps/web/utils/outlook/message.ts
Original file line number Diff line number Diff line change
Expand Up @@ -169,11 +169,12 @@ export async function queryBatchMessages(
if (query?.trim()) {
if (isODataFilter) {
// Filter path - use filter and skipToken
// Combine the existing filter with folder restrictions
// Combine the existing filter with folder restrictions and exclude drafts
const folderFilter = `(parentFolderId eq '${inboxFolderId}' or parentFolderId eq '${archiveFolderId}')`;
const draftFilter = "isDraft eq false";
const combinedFilter = query.trim()
? `${query.trim()} and ${folderFilter}`
: folderFilter;
? `${query.trim()} and ${folderFilter} and ${draftFilter}`
: `${folderFilter} and ${draftFilter}`;
request = request.filter(combinedFilter);

if (pageToken) {
Expand Down Expand Up @@ -204,11 +205,12 @@ export async function queryBatchMessages(
}

const response = await request.get();
// Filter messages to only include inbox and archive folders
// Filter messages to only include inbox and archive folders and exclude drafts
const filteredMessages = response.value.filter(
(message: Message) =>
message.parentFolderId === inboxFolderId ||
message.parentFolderId === archiveFolderId,
(message.parentFolderId === inboxFolderId ||
message.parentFolderId === archiveFolderId) &&
!message.isDraft,
);
const messages = await convertMessages(filteredMessages, folderIds);

Expand All @@ -227,14 +229,17 @@ export async function queryBatchMessages(
}
} else {
// Non-search path - use filter, skip and orderBy
// Always filter to only include inbox and archive folders
// Always filter to only include inbox and archive folders and exclude drafts
const folderFilter = `(parentFolderId eq '${inboxFolderId}' or parentFolderId eq '${archiveFolderId}')`;
const draftFilter = "isDraft eq false";

// If a specific folder is requested, override the default filter
if (folderId) {
request = request.filter(`parentFolderId eq '${folderId}'`);
request = request.filter(
`parentFolderId eq '${folderId}' and ${draftFilter}`,
);
} else {
request = request.filter(folderFilter);
request = request.filter(`${folderFilter} and ${draftFilter}`);
}

request = request
Expand Down Expand Up @@ -310,7 +315,11 @@ export async function getMessages(
);

if (options.query) {
request = request.filter(`contains(subject, '${options.query}')`);
request = request.filter(
`contains(subject, '${options.query}') and isDraft eq false`,
);
} else {
request = request.filter("isDraft eq false");
}

const response = await request.get();
Expand Down
Loading