using System.Text.Json;

namespace SharpChat.Messages;

public class Message(
    long id,
    string type,
    string? senderId,
    string senderName,
    ColourInheritable senderColour,
    int senderRank,
    UserPermissions senderPermissions,
    string senderNickName,
    DateTimeOffset created,
    DateTimeOffset? deleted,
    string? channelName,
    JsonDocument data,
    MessageFlags flags
) {
    public long Id { get; } = id;
    public string Type { get; } = type;
    public string? SenderId { get; } = senderId;
    public string SenderName { get; } = senderName;
    public ColourInheritable SenderColour { get; } = senderColour;
    public int SenderRank { get; } = senderRank;
    public UserPermissions SenderPermissions { get; } = senderPermissions;
    public string SenderNickName { get; } = senderNickName;
    public DateTimeOffset Created { get; } = created;
    public DateTimeOffset? Deleted { get; } = deleted;
    public string? ChannelName { get; } = channelName;
    public MessageFlags Flags { get; } = flags;
    public JsonDocument Data { get; } = data;

    public string SenderLegacyName => string.IsNullOrWhiteSpace(SenderNickName) ? SenderName : $"~{SenderNickName}";
}