I have a notification feed like NOTIFICATIONS:userID
and I have a flat feed GLOBAL:domain
.
The notification feed is set up to follow the flat feed, but when I push activities to the flat feed they are not coming through to the notification feed. I can't get them to come through the react components or making the API calls directly. Any items in the notification feed come through fine, but not the flat feed.
Is there anything I would have missed when setting up the feeds to make this possible? I'm not sure why it isn't working.
Here's the code used to call getstream:
// AddNotification writes a feed notification to the provided feed.
func (c *Client) AddNotification(feedID, actor string, n *feed.Notification) error {
keys := map[string]bool{}
feeds := make([]stream.Feed, 0)
for _, s := range n.Streams {
if s == feed.STREAM_NONE {
continue
}
if _, ok := keys[s.String()]; ok {
continue
}
f, err := c.getstream.FlatFeed(s.String(), feedID)
if err != nil {
return errors.Wrapf(err, "failed to get feed %s", feedID)
}
keys[s.String()] = true
feeds = append(feeds, f)
}
extra, err := getExtraFromString(n.Content)
if err != nil {
return errors.Wrap(err, "failed to marshal extra content")
}
appliesAt, err := time.FromProtoTS(n.GetAppliesAt())
if err != nil {
return errors.Wrap(err, "failed to cast applies at time")
}
activity := stream.Activity{
Actor: actor,
Verb: n.GetVerb(),
Object: n.GetObject(),
Extra: extra,
ForeignID: n.GetIdempotentKey(),
Time: stream.Time{Time: appliesAt},
}
log.WithFields(log.Fields{
"activity": activity,
"feeds": keys,
}).Debug("sending request to stream.io")
if err = c.getstream.AddToMany(activity, feeds...); err != nil {
return errors.Wrap(err, "error while feeding to stream.io")
}
return nil
}
Just to explain the code a bit. We have a feed.Notification
type that allows you to specify what we've called "streams", these are just types that represent the slugs.
In this case, I'm using the GLOBAL:domain
feed, which the user's NOTIFICATION:userID
feed is set up to follow.
From batch add docs:
Activities added using this method are not propagated to followers. That is, any other Feeds that follow the Feed(s) listed in the API call will not receive the new Activity.
If you're using batching, you need to specify all feeds you want to add the activity for. Another way is that you can add to feeds one by one to push to followers.