169 похожих чатов

socket.on("notify", async (data) => {

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" только один раз выводится, а уведомлений много ?

14 ответов

43 просмотра

видимо, дело в этом if (result === "denied") { return; }

kayr Султанбек
а в чем проблема ?

ну return знаешь как работает? Если result === "denied", то функция дальше не работает, и console.log("notify!") не срабатывает

kayr-Султанбек Автор вопроса
Роман Бандурин
ну return знаешь как работает? Если result === "de...

проблема в том что он мне хуева туча уведомлений показывает

kayr-Султанбек Автор вопроса
Роман Бандурин
каких?

if (store.webNotifications && data) { requestPermission(data.chat.name, data.text); } ну вот эти. Сообщения приходят и он раз 20 показывает вместо одного

kayr Султанбек
if (store.webNotifications && data) { r...

точно эти? вот тут const result = await Notification.requestPermission(); что делается?

kayr Султанбек
if (store.webNotifications && data) { r...

а зачем ты внутри хендлера еще какую-то function requestPermission определяешь?

kayr-Султанбек Автор вопроса
Роман Бандурин
точно эти? вот тут const result = await Notificati...

Это другая функция разрешение юзера берет

kayr Султанбек
if (store.webNotifications && data) { r...

ну это и должно срабатывать 20 раз. В store.webNotifications && data что?

kayr-Султанбек Автор вопроса
kayr Султанбек
При том что я вызываю функцию один раз?

каждый раз когда от сокета приходит ответ

kayr-Султанбек Автор вопроса
Роман Бандурин
каждый раз когда от сокета приходит ответ

А, ну да, но я в хэндлере где socket.on Выводил консол лог, и он выводится только один раз, и при перезагрузки страницы уведомления приходят только один раз как и задумывалась, но при дальше уже по нарастающей больше уведомлений становится

kayr Султанбек
А, ну да, но я в хэндлере где socket.on Выводил ко...

Так ты WS клиент инициализируешь значит каждый раз и не убиваешь старые клиенты

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта