using LightlessSync.API.Dto.Chat; namespace LightlessSync.Services.Chat; public sealed record ChatMessageEntry( ChatMessageDto? Payload, string DisplayName, bool FromSelf, DateTime ReceivedAtUtc, ChatSystemEntry? SystemMessage = null) { public bool IsSystem => SystemMessage is not null; } public enum ChatSystemEntryType { ZoneSeparator } public sealed record ChatSystemEntry(ChatSystemEntryType Type, string? ZoneName); public readonly record struct ChatChannelSnapshot( string Key, ChatChannelDescriptor Descriptor, string DisplayName, ChatChannelType Type, bool IsConnected, bool IsAvailable, string? StatusText, bool HasUnread, int UnreadCount, IReadOnlyList Messages); public readonly record struct ChatReportResult(bool Success, string? ErrorMessage);