8c92263cc3
SyncStatus widget polls /sync/status and shows a live progress bar in
the topbar while syncing, or last-synced time / error otherwise.
Unsubscribe page reworked into a proper queue: status filter tabs
(All/Pending/Succeeded/Failed), select-all, sorted by volume, status
badges, and a result toast after processing.
GET /email/{id} returns full BodyText; Senders detail view fetches
and renders it instead of just the snippet.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
55 lines
1.3 KiB
C#
55 lines
1.3 KiB
C#
using InboxIntel.Domain.Enums;
|
|
|
|
namespace InboxIntel.Application.DTOs;
|
|
|
|
public record EmailSummaryDto(
|
|
Guid Id,
|
|
string GmailMessageId,
|
|
string? Subject,
|
|
string? Snippet,
|
|
string SenderAddress,
|
|
string? SenderDisplayName,
|
|
DateTimeOffset SentAtUtc,
|
|
bool IsUnread,
|
|
bool IsStarred,
|
|
bool HasAttachments,
|
|
long SizeEstimateBytes,
|
|
EmailCategory Category,
|
|
bool HasListUnsubscribe,
|
|
bool SupportsOneClick);
|
|
|
|
/// <summary>Full single-email view, including body text, for the detail pane.</summary>
|
|
public record EmailDetailDto(
|
|
Guid Id,
|
|
string GmailMessageId,
|
|
string? Subject,
|
|
string? Snippet,
|
|
string? BodyText,
|
|
string SenderAddress,
|
|
string? SenderDisplayName,
|
|
DateTimeOffset SentAtUtc,
|
|
bool IsUnread,
|
|
bool IsStarred,
|
|
bool HasAttachments,
|
|
long SizeEstimateBytes,
|
|
EmailCategory Category,
|
|
bool HasListUnsubscribe,
|
|
bool SupportsOneClick);
|
|
|
|
public record SenderStatDto(
|
|
Guid SenderId,
|
|
string Address,
|
|
string? DisplayName,
|
|
string Domain,
|
|
int EmailCount,
|
|
int UnreadCount,
|
|
long TotalSizeBytes,
|
|
bool HasUnsubscribe,
|
|
DateTimeOffset? LastReceivedUtc);
|
|
|
|
public record AttachmentDto(
|
|
Guid Id,
|
|
string FileName,
|
|
string? MimeType,
|
|
long SizeBytes);
|