namespace Ikar.Shared;

public enum PushPlatform
{
    Unknown = 0,
    Android = 1,
    Windows = 2
}

public sealed record RegisterPushDeviceRequest(
    PushPlatform Platform,
    string InstallationId,
    string DeviceToken,
    string? DeviceName,
    bool NotificationsEnabled);

public sealed record PushDeviceDto(
    Guid Id,
    PushPlatform Platform,
    string InstallationId,
    string? DeviceName,
    bool NotificationsEnabled,
    DateTimeOffset UpdatedAt);

public static class PushDataKeys
{
    public const string Kind = "kind";
    public const string CallId = "callId";
    public const string ChatId = "chatId";
    public const string ChatType = "chatType";
    public const string MessageId = "messageId";
    public const string Title = "title";
    public const string Body = "body";
    public const string SenderId = "senderId";
    public const string SenderName = "senderName";
    public const string SenderPhoneNumber = "senderPhoneNumber";
    public const string ReactionEmoji = "reactionEmoji";
    public const string CallAction = "callAction";
    public const string CallMediaType = "callMediaType";
    public const string VersionCode = "versionCode";
    public const string VersionName = "versionName";
}

public static class PushDataKinds
{
    public const string ChatMessage = "chat_message";
    public const string MessageReaction = "message_reaction";
    public const string AudioCallInvite = "audio_call_invite";
    public const string VideoCallInvite = "video_call_invite";
    public const string AudioCallEnded = "audio_call_ended";
    public const string VideoCallEnded = "video_call_ended";
    public const string AppUpdateAvailable = "app_update_available";
}
