using InboxIntel.Application.Abstractions; using InboxIntel.Application.DTOs; using Microsoft.AspNetCore.Mvc; namespace InboxIntel.Api.Controllers; public class UnsubscribeController : ApiControllerBase { private readonly IUnsubscribeService _unsub; public UnsubscribeController(IUnsubscribeService unsub) => _unsub = unsub; [HttpPost("detect")] public async Task Detect(CancellationToken ct) { await _unsub.DetectAsync(UserId, ct); return NoContent(); } /// Senders that are safe to unsubscribe from, ranked by volume. [HttpGet("safe-list")] public async Task SafeList(CancellationToken ct) => Ok(await _unsub.GetSafeToUnsubscribeAsync(UserId, ct)); /// Process the confirmed unsubscribe queue. Requires Confirmed = true. [HttpPost("process")] public async Task Process([FromBody] UnsubscribeRequestDto request, CancellationToken ct) { var result = await _unsub.ProcessQueueAsync(UserId, request, ct); return result.Succeeded ? Ok(result.Value) : BadRequest(new { error = result.Error }); } }