async function requestPermission(
notificationTitle: string,
notificationBody: string
) {
const result = await Notification.requestPermission();
if (result === "denied") {
return;
}
console.log("notify!");
const registration = await navigator.serviceWorker.getRegistration();
registration?.showNotification(notificationTitle, {
body: notificationBody,
icon: "/vite.svg",
});
}
if (store.webNotifications && data) {
requestPermission(data.chat.name, data.text);
}
});
почему лог "notify" только один раз выводится, а уведомлений много ?
видимо, дело в этом if (result === "denied") { return; }
а в чем проблема ?
ну return знаешь как работает? Если result === "denied", то функция дальше не работает, и console.log("notify!") не срабатывает
проблема в том что он мне хуева туча уведомлений показывает
if (store.webNotifications && data) { requestPermission(data.chat.name, data.text); } ну вот эти. Сообщения приходят и он раз 20 показывает вместо одного
точно эти? вот тут const result = await Notification.requestPermission(); что делается?
а зачем ты внутри хендлера еще какую-то function requestPermission определяешь?
Это другая функция разрешение юзера берет
ну это и должно срабатывать 20 раз. В store.webNotifications && data что?
При том что я вызываю функцию один раз?
каждый раз когда от сокета приходит ответ
А, ну да, но я в хэндлере где socket.on Выводил консол лог, и он выводится только один раз, и при перезагрузки страницы уведомления приходят только один раз как и задумывалась, но при дальше уже по нарастающей больше уведомлений становится
Так ты WS клиент инициализируешь значит каждый раз и не убиваешь старые клиенты
Обсуждают сегодня