使用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的活动时过滤活动数据。我们的过滤规则更多的是关于分页。