Activity Feeds V3 is in closed alpha — do not use it in production (just yet).

Comments

Overview

Comments support voting, ranking, threading, images, URL previews, mentions and notifications.

Adding Comments

// Adding a comment to an activity
let comment = try await feed.addComment(
    request: .init(
        comment: "So great!",
        custom: ["sentiment": "positive"],
        objectId: "activity_123",
        objectType: "activity",
    )
)

// Adding a reply to a comment
let reply = try await feed.addComment(
    request: .init(
        comment: "I agree!",
        objectId: "activity_123",
        objectType: "activity",
        parentId: "comment_456"
    )
)

Updating Comments

try await feed.updateComment(
    commentId: "comment_123",
    request: .init(
        comment: "Not so great",
        custom: ["edited": true]
    )
)

Removing Comments

try await feed.removeComment(
    commentId: "comment_123"
)

Reading Comments

You’ll also want to show/return these comments. The most important is when reading the feed.

try await feed.getOrCreate()
print(feed.state.activities[0].comments)
// or
let activity = client.activity(
    for: "activity_123",
    in: FeedId(group: "user", id: "john")
)
try await activity.get()
print(activity.state.comments)

Querying Comments

You can also query the comments so you can show all comments for a given activity or user:

// All comments for an activity
let activityCommentList = client.commentList(
    for: .init(
        filter: [.activityIds: ["activity_123"]]
    )
)
let activityComments = try await activityCommentList.get()


// All replies to a parent comment
let replyList = client.commentList(
    for: .init(
        filter: [.parentIds: ["comment_456"]]
    )
)
let replies = try await replyList.get()

// All comments by a certain user
let userCommentList = client.commentList(
    for: .init(
        filter: [.userIds: ["john"]],
        limit: 100
    )
)
let userComments = try await userCommentList.get()

Comment Reactions

// Add a reaction to a comment
try await feed.addCommentReaction(
    commentId: "comment_123",
    request: .init(type: "like")
)

// Remove a reaction from a comment
try await feed.removeCommentReaction(
    commentId: "comment_123",
    type: "like"
)

Comment Threading

let comments = try await feed.getComments(
    objectId: "activity_123",
    objectType: "activity",
    // Depth of the threaded comments
    depth: 3,
    limit: 20,
)

// Get replies of a specific parent comment
let replies = try await feed.getCommentReplies(
    commentId: "parent_123"
)
© Getstream.io, Inc. All Rights Reserved.