Использование Laravel и getStream.
Текущая структура:
Пользователь имеет канал на своей панели, который является объединением FeedManager::getNewsFeeds($request->user()->id)['timeline’];
&& FeedManager::getUserFeed($request->user()->id);
Это прекрасно работает, однако «двойные удары» происходят, когда мы пытаемся «подружиться».
Если Джо последует за Джейн, он увидит
Jane is now friends with Joe
Joe is now friends with Jane
В идеале: мы бы просто Joe is now friends with Jane
и если текущий пользователь Джо, настройте его на 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?
(Является ли это особой деятельностью, которая ссылается на обоих пользователей?)
Поскольку вы извлекаете каждый фид отдельно, а у нас нет понимания того, что означает ваш субъект / глагол / объект, Stream не может дедуплицировать или переименовывать эти события, поскольку вы уже объединяете их все вместе. Скорее всего, вы уже отправите нам уникальный идентификатор для «Джо», поэтому вам понадобится логическая проверка на вашей стороне, чтобы сказать что-то вроде (псевдокод):
$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 ...";
Мы не разрешаем фильтровать данные об активности при получении активности канала. Наши правила фильтрации больше о пагинации.
Других решений пока нет …