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

Reactions

Overview

You can react to both activities and comments. It’s possible to configure any reaction types that best fit your app.

// Add a reaction to an activity
val reaction: Result<FeedsReactionData> = feed.addReaction(
    activityId = "activity_123",
    request = AddReactionRequest(
        custom = mapOf("emoji" to "❤️"),
        type = "like"
    )
)

// Remove a reaction
val deleteResult: Result<FeedsReactionData> = feed.deleteReaction(
    activityId = "activity_123",
    type = "like"
)

By default creating a reaction doesn’t create an activity.

When you read a feed the reactions are included. Here’s an example:

feed.getOrCreate()
feed.state.activities.collect { activities ->
    // Last 15 reactions on the first activity
    println(activities.first().latestReactions)
    // Count of reactions by type
    println(activities.first().reactionGroups)
}

Querying Reactions

You can query reactions to both activities and comments. Here are some examples:

// Query reactions to a specific activity
val activityReactionList = client.activityReactionList(
    ActivityReactionsQuery(
        activityId = "activity-123",
        filter = ActivityReactionsFilterField.reactionType.equal("like"),
    )
)
activityReactionList.get()
activityReactionList.state.reactions.collect { reactions ->
    // Handle activity reactions
}

// Query reactions to a specific comment
val commentReactionList = client.commentReactionList(
    CommentReactionsQuery(
        commentId = "comment-456",
        filter = CommentReactionsFilterField.reactionType.equal("like"),
    )
)
commentReactionList.get()
commentReactionList.state.reactions.collect { reactions ->
    // Handle comment reactions
}

Reaction Queryable Built-In Fields

nametypedescriptionsupported operationsexample
reaction_typestring or list of stringsThe type of reaction$in, $eq{ reaction_type: { $in: [ 'like', 'heart', 'thumbs_up' ] } }
user_idstring or list of stringsThe ID of the user who created the reaction$in, $eq{ user_id: { $eq: 'user_123' } }
created_atstring, must be formatted as an RFC3339 timestampThe time the reaction was created$eq, $gt, $gte, $lt, $lte{ created_at: { $gte: '2023-12-04T09:30:20.45Z' } }
© Getstream.io, Inc. All Rights Reserved.