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", + ); + }); } }} >