V18 / 8d896b8a86e5
ProviderClient.Email.cs
Lilith/Core/Email/ProviderClient.Email.cs
Unchanged from the preceding versionCS
namespace Lilith.Core.Providers;
public abstract partial class ProviderClient
{
public string EmailMode { get; private set; } = "unread";
internal readonly Dictionary<string, string> EmailBatches = new(StringComparer.Ordinal);
internal (string Id, string Nickname, string Sender, bool Blocked)? PendingEmailRule;
public async Task<string> ConfirmEmailRuleAsync(string id, CancellationToken ct)
{
using var operation = EnterOperation();
var pending = PendingEmailRule;
if (pending is null || pending.Value.Id != id) throw new InvalidOperationException("No matching email sender proposal.");
string receipt = await Email.EmailClient.SendAsync("sender-rule", new { nickname = pending.Value.Nickname, sender = pending.Value.Sender, blocked = pending.Value.Blocked }, ct);
PendingEmailRule = null;
return receipt;
}
public void SetEmailMode(string mode)
{
using var operation = EnterOperation();
EmailMode = Email.EmailClient.ValidateMode(mode);
EmailBatches.Clear();
}
}