using BuildFlow.Shared.Domain.Common;
using IM.Application.Chat.Commands;
using MediatR;
namespace BuildFlow.Host.Endpoints.im.Chat;
///
/// 撤回消息 REST 端点(SignalR 的非实时兜底通道)。
/// 权限与时间窗校验在 RecallMessageCommandHandler 内统一执行。
///
public class RecallMessageEndpoint(IMediator mediator, ICurrentUserContext userContext) : Endpoint
{
public override void Configure() => Post("/conversations/{ConversationId}/messages/{MessageId}/recall");
public override async Task HandleAsync(RecallMessageEndpointRequest req, CancellationToken ct)
{
var userId = userContext.GetRequiredUserGuid();
await mediator.Send(new RecallMessageCommand(req.ConversationId, req.MessageId, userId), ct);
await Send.OkAsync(ct);
}
}