Targeting with TO Field

The TO field allows you to specify a list of feeds to which the activity should be copied. One way to think about it is as the CC functionality of email.

If initial activity is removed from the origin feed, it’s also removed from all TO targeted feeds and origin feed followers.

Use Case: Mentions

Targeting is useful when you want to support @mentions and notify users. An example is shown below:

// Add the activity to Eric's feed and to Jessica's notification feed
final activity = Activity(
 actor: 'user:Eric',
 extraData: {
  'message': "@Jessica check out getstream.io it's awesome!",
 },
 verb: 'tweet',
 object: 'tweet:id',
 to: [FeedId.id('notification:Jessica')],
 );

await user1.addActivity(activity);

The TO field is limited to a maximum of 100 targets per API request.

Use Case: Organizations & Topics

Another everyday use case is for teams, organizations or topics.

For example, one of our customers runs a football community. Updates about a player should also be added to their team’s feed. Stream supports this by adding the activity to the player’s feed, and specifying the target feeds in the TO field:

final activity = Activity(
 actor: 'Player:Suarez',
 verb: 'foul',
 object: 'Player:Ramos',
 extraData: {
 'match': {'name': 'El Clasico', 'id': 10},
 },
 to: [
 FeedId.id('team:barcelona'),
 FeedId.id('match:1')
]);
 
await playerFeed1.addActivity(activity);

By default only the user, flat, aggregated and notification feed groups are set up automatically. You’ll need to go to the dashboard and create feeds called team, player and match for the above example to work.

Update to targets

To targets can be updated later on to change where the activity is copied. This API requires server side auth and requires foreign id and time.

// to remove
var add = "user:1234";
feed.UpdateActivityToTargetsAsync(fidTime, new[] { add });

// to remove
var remove = "user:1234";
feed.UpdateActivityToTargetsAsync(fidTime, null, null, new[] { remove });

// to set/replace
var newOnes = new List<string>()
{
 "flat:1234",
 "user:1234",
};

feed.UpdateActivityToTargetsAsync(fidTime, null, newOnes);
© Getstream.io, Inc. All Rights Reserved.