feat: add comments
This commit is contained in:
@@ -50,6 +50,42 @@ type Post struct {
|
||||
// MentionsCount is how many users are tagged on this post (drives the
|
||||
// post-card mentions icon). Hydrated by the mention layer.
|
||||
MentionsCount int `json:"mentions_count"`
|
||||
|
||||
// PinnedComment is the post's pinned comment (if any), hydrated by the
|
||||
// comment layer so the card footer can show it without a per-card fetch.
|
||||
// Nil when nothing is pinned.
|
||||
PinnedComment *Comment `json:"pinned_comment,omitempty"`
|
||||
}
|
||||
|
||||
// Comment is one comment (or reply) on a post. Threading is one level deep:
|
||||
// ParentID is nil for a top-level comment and otherwise points at the thread
|
||||
// root. ReplyToHandle, when set, is the @handle the reply was addressed to
|
||||
// (replies stay flat under the root; this just preserves who was answered).
|
||||
type Comment struct {
|
||||
ID string `json:"id"`
|
||||
PostID string `json:"post_id"`
|
||||
UserID string `json:"user_id"`
|
||||
ParentID *string `json:"parent_id,omitempty"`
|
||||
Body string `json:"body"`
|
||||
LikesCount int `json:"likes_count"`
|
||||
PinnedAt *time.Time `json:"pinned_at,omitempty"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
|
||||
// Author info — populated by repo joins.
|
||||
AuthorName string `json:"author_name"`
|
||||
AuthorHandle string `json:"author_handle"`
|
||||
AuthorAvatarURL *string `json:"author_avatar_url,omitempty"`
|
||||
|
||||
// ReplyToHandle is the handle this reply was addressed to (nil on
|
||||
// top-level comments), for the "Replying to @handle" prefix.
|
||||
ReplyToHandle *string `json:"reply_to_handle,omitempty"`
|
||||
|
||||
// ViewerHasLiked reflects the calling user's like membership; false for
|
||||
// anonymous viewers. ReplyCount is the number of replies under a
|
||||
// top-level comment (0 on replies themselves).
|
||||
ViewerHasLiked bool `json:"viewer_has_liked"`
|
||||
ReplyCount int `json:"reply_count"`
|
||||
}
|
||||
|
||||
// PostImage represents one attached image on a post.
|
||||
@@ -188,6 +224,11 @@ type Notification struct {
|
||||
ActorName *string `json:"actor_name,omitempty"`
|
||||
ActorHandle *string `json:"actor_handle,omitempty"`
|
||||
ActorAvatar *string `json:"actor_avatar_url,omitempty"`
|
||||
|
||||
// PostAuthorHandle is the handle of the author of PostID (when set), so
|
||||
// the client can deep-link to the post for kinds where the actor isn't
|
||||
// the post owner (e.g. comment_reply). Nil when there's no post.
|
||||
PostAuthorHandle *string `json:"post_author_handle,omitempty"`
|
||||
}
|
||||
|
||||
// PushSubscription is one browser/device Web Push endpoint a user granted.
|
||||
|
||||
Reference in New Issue
Block a user