Правильный способ «стать друзьями» без «удвоения» в [getStream]

Использование 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?

(Является ли это особой деятельностью, которая ссылается на обоих пользователей?)

0

Решение

Поскольку вы извлекаете каждый фид отдельно, а у нас нет понимания того, что означает ваш субъект / глагол / объект, 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 ...";

Мы не разрешаем фильтровать данные об активности при получении активности канала. Наши правила фильтрации больше о пагинации.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]