// Watch for a specific event
const unsubscribe = feed.on("feeds.activity.added", (event) =>
console.log(event),
);
// Watch for all events
const unsubscribe = feed.on("all", (event) => console.log(event));Event Handling
The state layer provides a way to be notified about state updates easily. However, it’s also possible to watch for WebSocket events directly, should you need it.
Available Event Types
Below is a comprehensive table of all available event types and their descriptions:
| Event Name | Description | Where is it published? |
|---|---|---|
| Activity Events | ||
feeds.activity.added | Fired when a new activity is added to a feed | client, feed, activity |
feeds.activity.updated | Fired when an activity is modified | client, feed, activity |
feeds.activity.deleted | Fired when an activity is removed | client, feed, activity |
feeds.activity.removed_from_feed | Fired when an activity is removed from a specific feed | client, feed, activity |
feeds.activity.marked | Fired when activities are marked as read/seen | client, feed, activity |
feeds.activity.pinned | Fired when an activity is pinned to the top | client, feed, activity |
feeds.activity.unpinned | Fired when an activity is unpinned | client, feed, activity |
feeds.activity.feedback | Fired when a user provides an activity feedback (for example “show more”) | client |
| Notification Events | ||
feeds.notification_feed.updated | Fired when a feed with notification configuration has new notifications, or a notification is marked as read/seen | client, feed |
| Comment Events | ||
feeds.comment.added | Fired when a new comment is added to an activity | client, feed, activity |
feeds.comment.updated | Fired when a comment is modified | client, feed, activity |
feeds.comment.deleted | Fired when a comment is removed | client, feed, activity |
| Reaction Events | ||
feeds.activity.reaction.added | Fired when a reaction is added to an activity | client, feed, activity |
feeds.activity.reaction.deleted | Fired when a reaction is removed from an activity | client, feed, activity |
feeds.activity.reaction.updated | Fired when a reaction is updated (used if enforce_unique is true) | client, feed, activity |
feeds.comment.reaction.added | Fired when a reaction is added to a comment | client, feed, activity |
feeds.comment.reaction.deleted | Fired when a reaction is removed from a comment | client, feed, activity |
feeds.comment.reaction.updated | Fired when a reaction is updated (used if enforce_unique is true) | client, feed, activity |
| Poll Events | ||
feeds.poll.closed | Fired when a poll is closed | client |
feeds.poll.deleted | Fired when a poll is deleted | client |
feeds.poll.updated | Fired when a poll is modified | client |
feeds.poll.vote_casted | Fired when a vote is cast | client |
feeds.poll.vote_changed | Fired when a vote is changed | client |
feeds.poll.vote_removed | Fired when a vote is removed | client |
| Feed Events | ||
feeds.feed.created | Fired when a new feed is created | client, feed |
feeds.feed.updated | Fired when a feed is modified | client, feed |
feeds.feed.deleted | Fired when a feed is deleted | client, feed |
feeds.feed_group.changed | Fired when a feed group is modified | client, feed |
feeds.feed_group.deleted | Fired when a feed group is deleted | client, feed |
| Member Events | ||
feeds.feed_member.added | Fired when a member is added to a feed | client, feed |
feeds.feed_member.removed | Fired when a member is removed from a feed | client, feed |
feeds.feed_member.updated | Fired when a member’s role/permissions change | client, feed |
| Follow Events | ||
feeds.follow.created | Fired when a follow relationship is created | client, feed |
feeds.follow.deleted | Fired when a follow relationship is removed | client, feed |
feeds.follow.updated | Fired when follow settings are modified | client, feed |
| Bookmark Events | ||
feeds.bookmark.added | Fired when an activity is bookmarked | client |
feeds.bookmark.deleted | Fired when a bookmark is removed | client |
feeds.bookmark.updated | Fired when bookmark metadata is modified | client |
feeds.bookmark_folder.deleted | Fired when bookmark folder is deleted | client |
feeds.bookmark_folder.updated | Fired when bookmark folder is updated | client |
| Story Feed Events | ||
feeds.stories_feed.updated | Fired when a user marks a story as watched | client, feed |
| Connection Events | ||
health.check | Fired when health check is received | client |
| User Events | ||
user.updated | Fired when a user is updated | client |
Feed events
Feed events are related to a specific feed. This is how you can subscribe to them:
To receive feed event, you need to watch the feed:
const feed = client.feed("user", "sara");
// Provide the watch flag to receive state updates via WebSocket events
await feed.getOrCreate({ watch: true });
// Query multiple feeds using a filter
const feeds = client.queryFeeds({
filter: {
// Your query
},
// Provide the watch flag to receive state updates via WebSocket events
watch: true,
});Activity events
When reading an activity outside of a feed, you can only watch for WebSocket events, if the feed the activity belongs to is watched:
const activityWithStateUpdates =
client.activityWithStateUpdates(activityId);
await activityWithStateUpdates.get({
// Optionally fetch comments too
comments: {
limit: 10,
depth: 2,
},
});
// Optionally start watching the feed
// If activity belongs to multiple feeds, it's up to you to choose which feed to watch
const fid = activityWithStateUpdates.currentState.activity!.feeds[0];
const [group, id] = fid.split(':');
const feed = client.feed(group, id);
let shouldWatch = false;
if (!feed.currentState.watch) {
await feed.getOrCreate({
watch: true,
limit: 0,
followers_pagination: { limit: 0 },
following_pagination: { limit: 0 },
});
}
const unsubscribe = activityWithStateUpdates.on("feeds.activity.updated", (event) =>
console.log(event),
);Client events
Client events contain
- all events related to currently watched feeds
- all poll vote events related to currently watched feeds
- events related to a specific user (for example bookmark event)
- events related to network connection
// Watch for a specific event
const unsubscribe = client.on("connection.changed", (event) =>
console.log(event),
);
// Watch for all events
const unsubscribe = client.on("all", (event) =>
console.log(`Client is ${event.online ? "online" : "offline"}`),
);