Entities/Social/Timeline/TimelineEventData.cs

A set of data classes representing different timeline event payloads for social features. Defines an abstract base TimelineEventData and concrete subclasses for events like follows, team joins/creates, forum posts, game end, simul events, blog/ublog posts and likes, plan starts/renewals, and stream starts.

#nullable enable annotations

namespace LichessNET.Entities.Social.Timeline
{
    public abstract class TimelineEventData
    {
    }

    public class FollowEventData : TimelineEventData
    {
        public string U1 { get; set; }
        public string U2 { get; set; }
    }

    public class UnknownEventData : TimelineEventData
    {
    }

    public class TeamJoinEventData : TimelineEventData
    {
        public string UserId { get; set; }
        public string TeamId { get; set; }
    }

    public class TeamCreateEventData : TimelineEventData
    {
        public string UserId { get; set; }
        public string TeamId { get; set; }
    }

    public class ForumPostEventData : TimelineEventData
    {
        public string UserId { get; set; }
        public string TopicId { get; set; }
        public string TopicName { get; set; }
        public string PostId { get; set; }
    }

    public class UblogPostEventData : TimelineEventData
    {
        public string UserId { get; set; }
        public string Id { get; set; }
        public string Slug { get; set; }
        public string Title { get; set; }
    }

    public class TourJoinEventData : TimelineEventData
    {
        public string UserId { get; set; }
        public string TourId { get; set; }
        public string TourName { get; set; }
    }

    public class GameEndEventData : TimelineEventData
    {
        public string FullId { get; set; }
        public string Perf { get; set; }
        public string Opponent { get; set; }
        public bool Win { get; set; }
    }

    public class SimulCreateEventData : TimelineEventData
    {
        public string UserId { get; set; }
        public string SimulId { get; set; }
        public string SimulName { get; set; }
    }

    public class SimulJoinEventData : TimelineEventData
    {
        public string UserId { get; set; }
        public string SimulId { get; set; }
        public string SimulName { get; set; }
    }

    public class StudyLikeEventData : TimelineEventData
    {
        public string UserId { get; set; }
        public string StudyId { get; set; }
        public string StudyName { get; set; }
    }

    public class PlanStartEventData : TimelineEventData
    {
        public string UserId { get; set; }
    }

    public class PlanRenewEventData : TimelineEventData
    {
        public string UserId { get; set; }
        public int Months { get; set; }
    }

    public class BlogPostEventData : TimelineEventData
    {
        public string Id { get; set; }
        public string Slug { get; set; }
        public string Title { get; set; }
    }

    public class UblogPostLikeEventData : TimelineEventData
    {
        public string UserId { get; set; }
        public string Id { get; set; }
        public string Title { get; set; }
    }

    public class StreamStartEventData : TimelineEventData
    {
        public string Id { get; set; }
        public string Title { get; set; }
    }
}