Refactor FetchEmailsQuery and improve UID handling

Moved the `Folder` property from `FetchEmailsQuery` to the
`MailQuery` record to better encapsulate query parameters.
Updated `FetchEmailsQueryHandler` to use `MailQuery.Folder`
for improved modularity. Simplified UID limiting logic in
`LimilabsImapEmailService` by replacing `Take().ToList()`
with the more concise `[.. Take()]` syntax.
This commit is contained in:
2026-08-07 12:51:32 +02:00
parent 79db1c3a69
commit 52a416f6d9
2 changed files with 7 additions and 7 deletions

View File

@@ -16,11 +16,6 @@ public record FetchEmailsQuery : IRequest<IEnumerable<ReceivedEmailContext>>
/// </summary>
public required GetSenderQuery Account { get; init; }
/// <summary>
/// Mailbox folder to read from (default: "INBOX").
/// </summary>
public string Folder { get; init; } = "INBOX";
/// <summary>
/// Mail query used to filter and limit the emails retrieved.
/// </summary>
@@ -28,6 +23,11 @@ public record FetchEmailsQuery : IRequest<IEnumerable<ReceivedEmailContext>>
public record MailQuery
{
/// <summary>
/// Mailbox folder to read from (default: "INBOX").
/// </summary>
public string Folder { get; init; } = "INBOX";
/// <summary>
/// When <see langword="true"/> returns only unread messages.
/// </summary>
@@ -56,7 +56,7 @@ public class FetchEmailsQueryHandler(
return await ImapService.FetchEmailsAsync(
account,
request.Folder,
request.Mail.Folder,
request.Mail.UnseenOnly,
request.Mail.MaxCount,
cancellationToken);

View File

@@ -44,7 +44,7 @@ public class LimilabsImapEmailService(
// Most-recent first; honour maxCount
uids.Reverse();
if (maxCount > 0 && uids.Count > maxCount)
uids = uids.Take(maxCount).ToList();
uids = [.. uids.Take(maxCount)];
var results = new List<ReceivedEmailContext>(uids.Count);