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:
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user