namespace BuildFlow.IM.Integration.Tests;
///
/// ChatHub 客户端事件的强类型载荷。
/// 使用强类型而非 dynamic 解析,避免 JSON 序列化命名差异(PascalCase/CamelCase)与
/// Guid↔字符串类型转换在 dynamic 下抛 InvalidCastException(SignalR 客户端回调吞异常,难定位)。
/// 字段使用可空类型,配合缺省构造,容忍服务端载荷字段增减。
///
public static class HubEvents
{
/// 已读回执事件:OnMessageRead。
public sealed class MessageReadEvent
{
public string? MessageId { get; set; }
public Guid? UserId { get; set; }
}
/// 消息撤回事件:OnMessageRecalled。
public sealed class MessageRecalledEvent
{
public Guid? ConversationId { get; set; }
public string? MessageId { get; set; }
public Guid? UserId { get; set; }
}
/// 输入状态事件:OnUserTyping。
public sealed class UserTypingEvent
{
public Guid? ConversationId { get; set; }
public Guid? UserId { get; set; }
}
/// 上下线事件:OnUserOnline / OnUserOffline。
public sealed class UserPresenceEvent
{
public Guid? UserId { get; set; }
}
}