← All source files

V14 / fad4e1a110e5

ProviderClient.Email.cs

Lilith/Core/Email/ProviderClient.Email.cs

Unchanged from the preceding version
CS
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();
    }
}