// Add a reaction to an activity
let reaction = try await feed.addReaction(
activityId: "activity_123",
request: .init(
custom: ["emoji": "❤️"],
type: "like"
)
)
// Remove a reaction
_ = try await feed.deleteReaction(activityId: "activity_123", type: "like")Reactions
Overview
You can react to both activities and comments. It's possible to configure any reaction types that best fit your app.
When adding reactions and the enforce_unique flag is set to true, the existing reaction of a user will be overridden with the new reaction. Use this flag if you want to ensure users have a single reaction per each comment/activity. The default value is false, in which case users can have multiple reactions.
// Add a reaction to an activity
$response = $feedsClient->addActivityReaction(
"activity_123",
new GeneratedModels\AddReactionRequest(
type: 'like',
userID: 'user123',
// Optionally override existing reaction
enforceUnique: true,
custom: (object)['emoji' => '❤️']
)
);
// Adding a reaction without triggering push notifications
$response = $feedsClient->addActivityReaction(
"activity_123",
new GeneratedModels\AddReactionRequest(
type: 'like',
userID: 'user123',
custom: (object)['emoji' => '❤️'],
skipPush: true
)
);
// Add a reaction to a comment
$response = $feedsClient->addCommentReaction(
"comment_456",
new GeneratedModels\AddCommentReactionRequest(
type: 'like',
userID: 'user123',
// Optionally override existing reaction
enforceUnique: true,
custom: (object)['emoji' => '👍']
)
);
// Adding a comment reaction without triggering push notifications
$response = $feedsClient->addCommentReaction(
"comment_456",
new GeneratedModels\AddCommentReactionRequest(
type: 'like',
userID: 'user123',
custom: (object)['emoji' => '👍'],
skipPush: true
)
);
// Delete activity reaction
$response = $feedsClient->deleteActivityReaction(
"activity_123",
"like",
"user123"
);Overview of the reaction model
By default creating a reaction doesn't create an activity.
When you read a feed the reactions are included. Here's an example:
// Get feed data with reactions
$feedResponse = $feedsClient->getOrCreateFeed(
"user",
"sara",
new GeneratedModels\GetOrCreateFeedRequest(
userID: "sara"
)
);
// Access reaction data from activities
$activities = $feedResponse->getData()->activities;
if (!empty($activities)) {
$firstActivity = $activities[0];
echo "Own reactions: " . json_encode($firstActivity->ownReactions ?? []) . "\n";
echo "Latest reactions: " . json_encode($firstActivity->latestReactions ?? []) . "\n";
echo "Reaction groups: " . json_encode($firstActivity->reactionGroups ?? []) . "\n";
}
// Query reactions to a specific activity
$response = $feedsClient->queryActivityReactions(
"activity_123",
new GeneratedModels\QueryActivityReactionsRequest(
limit: 10,
filter: (object)['reaction_type' => 'like']
)
);Querying Reactions
You can query reactions to both activities and comments. Here are some examples:
// Query reactions to a specific activity
$response = $feedsClient->queryActivityReactions(
"activity_123",
new GeneratedModels\QueryActivityReactionsRequest(
limit: 10,
filter: (object)['reaction_type' => 'like']
)
);
// Handle activity reactions
$reactions = $response->getData()->reactions;
foreach ($reactions as $reaction) {
echo "Reaction: " . $reaction->type . " by " . $reaction->user->id . "\n";
}
// Query reactions to a specific comment
$response = $feedsClient->queryCommentReactions(
$commentId,
new GeneratedModels\QueryCommentReactionsRequest(
limit: 10,
filter: (object)['reaction_type' => 'like']
)
);
// Handle comment reactions
$reactions = $response->getData()->reactions;
foreach ($reactions as $reaction) {
echo "Comment reaction: " . $reaction->type . " by " . $reaction->user->id . "\n";
}Reaction Queryable Built-In Fields
| name | type | description | supported operations | example |
|---|---|---|---|---|
reaction_type | string or list of strings | The type of reaction | $in, $eq | { reaction_type: { $in: [ 'like', 'heart', 'thumbs_up' ] } } |
user_id | string or list of strings | The ID of the user who created the reaction | $in, $eq | { user_id: { $eq: 'user_123' } } |
created_at | string, must be formatted as an RFC3339 timestamp | The time the reaction was created | $eq, $gt, $gte, $lt, $lte | { created_at: { $gte: '2023-12-04T09:30:20.45Z' } } |