Как я могу быстро отображать уведомления о приглашениях групп в GetStream?

#getstream-io

Вопрос:

Я создаю уведомления для своего сайта для следующего варианта использования и совершенно застрял с этим . Как мне следует поступить с этим?

Контекст

  • Я реализую логику присоединения к группам (это похоже на Facebook). Пользователи могут отправлять запросы на присоединение к группам, а владельцы групп могут утверждать запросы на присоединение.

Желаемые функции

  • Когда пользователь просит присоединиться к группе, владелец группы получает уведомление
  • В этом уведомлении есть ссылка на группу, чтобы модератор мог зайти туда и одобрить запрос
  • Уведомление исчезает, если модератор нажимает на него
  • Если человек является модератором нескольких групп и получает запросы на вступление во множество разных групп, они будут отображаться в виде отдельных уведомлений

Пробовал до сих пор

—бэкэнд (работает)—

 testfeed = client.feed('notification', '1'); 
activity = {"actor": "1", "verb": "request",  "object": 1, "group": 3, "time": now.toISOString(), "foreign_id": "test"};
testfeed.addActivity(activity);
 

—интерфейс, попытка 1—

 <StreamApp apiKey={apikey} appId={appid} token={userToken}>
    <NotificationFeed />
</StreamApp>
 

—интерфейс, попытка 2—

 <StreamApp apiKey={apikey} appId={appid} token={userToken}>
    <NotificationFeed Group={(group) => displayMyNotification(group)} />
</StreamApp>

const displayMyNotification = (content) => {
    return content.activityGroup.activities.map((activity) => {
        if (activity.verb === 'request') {
          return (<div onClick={() => markRead(activity)}>Someone has requested to join <Link to={url}>your collaboration</Link>. Approve them on the collaboration page.</div>);
        }
    })
}

const markRead = (activity) => {
  console.log('i wish i knew how to mark this as read!')
}
 

Проблемы с моим подходом

Попытка 1:

  • Совсем не работает. Это отображает только что-то вроде «1 новое уведомление», но ничего не говорит о содержании уведомления

Попытка 2:

  • Уведомления, похоже, хотят быть сгруппированы в группы действий, которые могут быть не идеальными, так как мне нужны отдельные уведомления, когда пользователи хотят присоединиться к разным группам.
  • Следовательно, мне нужно перебирать отдельные действия, которые, похоже, не имеют свойства is_read. Таким образом, я не знаю, что должна делать функция markRead- > Как таковая, мне нужно было бы либо (а) изменить логику группировки, либо (б) реализовать какое-либо пользовательское свойство «is_read» для каждого действия, что, похоже, немного противоречит структуре
  • The Group={(group) => displayMyNotification(group)} probably overrides a lot of useful default functionality built into Notification that I couldn’t figure out to use

What would be the correct way to implement this notification system?