Use the same notification pipeline everywhere

This means less duplication and `actions` support for all
notifications.
This commit is contained in:
nimbleghost 2023-06-14 23:20:48 +02:00
parent fa418eef16
commit b197ea3ab6
5 changed files with 102 additions and 73 deletions

View file

@ -1,4 +1,4 @@
import { useNavigate, useParams } from "react-router-dom";
import { useParams } from "react-router-dom";
import { useEffect, useMemo, useState } from "react";
import subscriptionManager from "../app/SubscriptionManager";
import { disallowedTopic, expandSecureUrl, topicUrl } from "../app/utils";
@ -21,7 +21,6 @@ import { webPush, useWebPushTopicListener } from "../app/WebPush";
* topics, such as sync topics (st_...).
*/
export const useConnectionListeners = (account, subscriptions, users, webPushTopics) => {
const navigate = useNavigate();
const wsSubscriptions = useMemo(
() => (subscriptions && webPushTopics ? subscriptions.filter((s) => !webPushTopics.includes(s.topic)) : []),
// wsSubscriptions should stay stable unless the list of subscription IDs changes. Without the memo, the connection
@ -51,8 +50,7 @@ export const useConnectionListeners = (account, subscriptions, users, webPushTop
const handleNotification = async (subscriptionId, notification) => {
const added = await subscriptionManager.addNotification(subscriptionId, notification);
if (added) {
const defaultClickAction = (subscription) => navigate(routes.forSubscription(subscription));
await subscriptionManager.notify(subscriptionId, notification, defaultClickAction);
await subscriptionManager.notify(subscriptionId, notification);
}
};