using SharpChat.Auth;
using System.Text.Json.Serialization;

namespace SharpChat.Flashii {
    public class FlashiiAuthResult : AuthResult {
        public string UserId => UserIdRaw.ToString();
        public string UserName => UserNameRaw ?? string.Empty;
        public ColourInheritable UserColour => ColourInheritable.FromMisuzu(UserColourRaw);

        [JsonPropertyName("success")]
        public bool Success { get; init; }

        [JsonPropertyName("reason")]
        public string? Reason { get; init; }

        [JsonPropertyName("user_id")]
        public long UserIdRaw { get; init; }

        [JsonPropertyName("username")]
        public string? UserNameRaw { get; init; }

        [JsonPropertyName("colour_raw")]
        public int UserColourRaw { get; init; }

        [JsonPropertyName("hierarchy")]
        public int UserRank { get; init; }

        [JsonPropertyName("perms")]
        public UserPermissions UserPermissions { get; init; }
    }
}