GetStream- Как отсортировать активность ленты в порядке убывания лайков?

#getstream-io

#getstream-io

Вопрос:

У меня есть 10 каналов активности, каждый канал с разным количеством лайков, нужно показывать ленту активности в порядке убывания по количеству лайков, как это реализовать?

Комментарии:

1. Вы имеете в виду, что хотите получить общее количество лайков для всех действий в каждой ленте и отсортировать на основе этого?

2. нет, мне нужно количество лайков для каждого действия, например — у post1: было 18 лайков, а у post2: было 20 лайков. Если я вижу ленту активности, порядок должен быть post2 и post1. как фильтровать подобным образом?

Ответ №1:

Количество реакций доступно для обогащенных действий. На данный момент Stream не поддерживает ранжирование каналов на основе данных о реакциях, но вы можете отсортировать действия самостоятельно после получения их с сервера:

 List<EnrichedActivity> activities = client.flatFeed("user", "alice")
        .getEnrichedActivities(new EnrichmentFlags().withReactionCounts())
        .get();

activities.sort((a, b) -> {
    int aLikes = a.getReactionCounts().getOrDefault("like", 0).intValue();
    int bLikes = b.getReactionCounts().getOrDefault("like", 0).intValue();
    return aLikes - bLikes;
});