正确的方式做“成为朋友”的活动,没有“加倍”在[getStream]


Correct way to do ‘Became friends’ activity without ‘doubling’ up in [getStream]

使用Laravel和getStream。

当前结构:

用户的仪表板上有一个feed,它是FeedManager::getNewsFeeds($request->user()->id)['timeline’]; &&FeedManager::getUserFeed($request->user()->id);

这很好,但是当我们试图做一个"成为朋友"的活动时,会发生"双重"的活动。

如果Joe跟着Jane,他会看到

Jane is now friends with Joe

Joe is now friends with Jane

理想情况:我们只有Joe is now friends with Jane,如果当前用户是Joe,则将其调整为You are now friends with Jane

如果乔跟着山姆和彼得也会发生同样的事情,然后他们成为朋友。

乔的提要:

Sam is now friends with Peter

Peter is now friends with Sam

理想情况下:我们会得到Sam and Peter are now friends(顺序并不重要)

用getStream做这种跟踪(或过滤)的最好方法是什么?

(它们是指向两个用户的单一活动吗?)

由于您单独拉取每个提要,并且由于我们不了解您的actor/verb/object的含义,因此Stream不可能删除重复或重命名这些事件,因为您已经将它们合并在一起了。你可能已经给我们发送了一个"Joe"的唯一id,所以你需要在你这边进行逻辑检查,说一些像(伪代码):

$bits = $activity->actor.split(":");
$activity_user = get_user_details($bits[1]);
$actor_is = $activity_user->name . " is";
if ($user->id == $activity_user->id) {
    $actor_is = "You are";
}
$output = $actor_is . " now following ...";

我们不允许在获取feed的活动时过滤活动数据。我们的过滤规则更多的是关于分页。