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>
|
/// </summary>
|
||||||
public required GetSenderQuery Account { get; init; }
|
public required GetSenderQuery Account { get; init; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Mailbox folder to read from (default: "INBOX").
|
|
||||||
/// </summary>
|
|
||||||
public string Folder { get; init; } = "INBOX";
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Mail query used to filter and limit the emails retrieved.
|
/// Mail query used to filter and limit the emails retrieved.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -28,6 +23,11 @@ public record FetchEmailsQuery : IRequest<IEnumerable<ReceivedEmailContext>>
|
|||||||
|
|
||||||
public record MailQuery
|
public record MailQuery
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Mailbox folder to read from (default: "INBOX").
|
||||||
|
/// </summary>
|
||||||
|
public string Folder { get; init; } = "INBOX";
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// When <see langword="true"/> returns only unread messages.
|
/// When <see langword="true"/> returns only unread messages.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -56,7 +56,7 @@ public class FetchEmailsQueryHandler(
|
|||||||
|
|
||||||
return await ImapService.FetchEmailsAsync(
|
return await ImapService.FetchEmailsAsync(
|
||||||
account,
|
account,
|
||||||
request.Folder,
|
request.Mail.Folder,
|
||||||
request.Mail.UnseenOnly,
|
request.Mail.UnseenOnly,
|
||||||
request.Mail.MaxCount,
|
request.Mail.MaxCount,
|
||||||
cancellationToken);
|
cancellationToken);
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ public class LimilabsImapEmailService(
|
|||||||
// Most-recent first; honour maxCount
|
// Most-recent first; honour maxCount
|
||||||
uids.Reverse();
|
uids.Reverse();
|
||||||
if (maxCount > 0 && uids.Count > maxCount)
|
if (maxCount > 0 && uids.Count > maxCount)
|
||||||
uids = uids.Take(maxCount).ToList();
|
uids = [.. uids.Take(maxCount)];
|
||||||
|
|
||||||
var results = new List<ReceivedEmailContext>(uids.Count);
|
var results = new List<ReceivedEmailContext>(uids.Count);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user