From 9d8104618e4e41d35c6a27576a0028962ac7544d Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Sun, 21 Jul 2024 12:22:33 -0600 Subject: [PATCH] Correctly unsubscribe notifications --- frigate/comms/webpush.py | 3 ++- .../views/settings/NotificationsSettingsView.tsx | 14 +++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/frigate/comms/webpush.py b/frigate/comms/webpush.py index b09615a44..d78c52547 100644 --- a/frigate/comms/webpush.py +++ b/frigate/comms/webpush.py @@ -170,7 +170,8 @@ class WebPushClient(Communicator): # type: ignore[misc] if resp.status_code == 201: pass - elif resp.status_code == 410: + elif resp.status_code == 404 or resp.status_code == 410: + # subscription is not found or has been unsubscribed if not self.expired_subs.get(user): self.expired_subs[user] = [] diff --git a/web/src/views/settings/NotificationsSettingsView.tsx b/web/src/views/settings/NotificationsSettingsView.tsx index ddcf7ed89..67d4c5c2b 100644 --- a/web/src/views/settings/NotificationsSettingsView.tsx +++ b/web/src/views/settings/NotificationsSettingsView.tsx @@ -290,9 +290,17 @@ export default function NotificationView({ } }); } else { - registration.unregister(); - setRegistration(null); - removeMessage("notification_settings", "registration"); + registration.pushManager + .getSubscription() + .then((pushSubscription) => { + pushSubscription?.unsubscribe(); + registration.unregister(); + setRegistration(null); + removeMessage( + "notification_settings", + "registration", + ); + }); } }} >