namespace decePubClient.Models.Mastodon;
///
/// type: mention, status, reblog, follow, follow_request, favourite, poll, update, quote, quoted_update or
/// pleroma:emoji_reaction. Status is null for follows.
///
public class Notification
{
public string Id { get; set; }
public string Type { get; set; }
public DateTime CreatedAt { get; set; }
public Account Account { get; set; }
public Status Status { get; set; }
public string Emoji { get; set; }
/// The group it belongs to (likes and boosts of one post, follows within an hour), or ungrouped-{id}.
public string GroupKey { get; set; }
}
/// /api/v2/notifications: notifications folded into groups, with the accounts and posts they name.
public class GroupedNotifications
{
public List Accounts { get; set; } = [];
public List Statuses { get; set; } = [];
public List NotificationGroups { get; set; } = [];
}
public class NotificationGroup
{
public string GroupKey { get; set; }
public int NotificationsCount { get; set; }
public string Type { get; set; }
public string MostRecentNotificationId { get; set; }
public string PageMinId { get; set; }
public string PageMaxId { get; set; }
public DateTime LatestPageNotificationAt { get; set; }
public List SampleAccountIds { get; set; } = [];
public string StatusId { get; set; }
public string Emoji { get; set; }
}
public class MarkersForm
{
public MarkerForm Notifications { get; set; }
}
public class MarkerForm
{
public string LastReadId { get; set; }
}
public class UnreadCount
{
public int Count { get; set; }
}
/// A direct conversation: its participants and its last post.
public class Conversation
{
public string Id { get; set; }
public bool Unread { get; set; }
public List Accounts { get; set; } = [];
public Status LastStatus { get; set; }
}