References

When you add a user or a collection object to an activity, Stream stores the unique reference and replaces it at read time. In some complex cases, you need to be able to generate a reference to an existing object and embed that inside of an activity.

// First create a collection entry with upsert api
await client.collections.upsert('food', [
 CollectionEntry(id: 'cheese-burger', data: {'name': 'Cheese Burger'}),
]);

// Then create a user
await client.user('john-doe').getOrCreate({
 'name': 'John Doe',
 'occupation': 'Software Engineer',
 'gender': 'male',
});

// Since we know their IDs we can create references to both without reading from APIs
final cheeseBurgerRef = client.collections.entry('food', 'cheese-burger').ref;
final johnDoeRef = client.user('john-doe').ref;

// And then add an activity with these references
await client.flatFeed('user', 'john').addActivity(Activity(
 actor: johnDoeRef,
 verb: 'eat',
 object: cheeseBurgerRef,
));

If you are using the APIs on web / mobile (see auth section) you must set activity.actor to the reference of the current user or otherwise you will get a permission error (see examples above).

© Getstream.io, Inc. All Rights Reserved.