#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?