Fix of the notification subscription
This commit is contained in:
@@ -308,8 +308,8 @@ def _send_fcm_notification(subscription, payload):
|
||||
|
||||
def _send_web_push_notification(subscription, payload):
|
||||
try:
|
||||
from pywebpush import webpush
|
||||
|
||||
from pywebpush import webpush, WebPushException
|
||||
|
||||
webpush(
|
||||
subscription_info={
|
||||
'endpoint': subscription['Endpoint'],
|
||||
@@ -319,18 +319,25 @@ def _send_web_push_notification(subscription, payload):
|
||||
vapid_private_key=VAPID_PRIVATE_KEY,
|
||||
vapid_claims={'sub': VAPID_SUBJECT},
|
||||
timeout=10,
|
||||
ttl=3600
|
||||
ttl=3600
|
||||
)
|
||||
|
||||
return True
|
||||
|
||||
|
||||
except ImportError:
|
||||
logger.warning('pywebpush not installed. pip install pywebpush')
|
||||
return False
|
||||
except Exception as e:
|
||||
logger.error(f'Web push error: {e}')
|
||||
return False
|
||||
# HÄRTUNG: Spezifische WebPush-Fehler abfangen
|
||||
except WebPushException as ex:
|
||||
# HTTP 404 (Not Found) oder 410 (Gone) bedeuten: Abo existiert nicht mehr
|
||||
if ex.response is not None and ex.response.status_code in [404, 410]:
|
||||
logger.info(f"Subscription expired or revoked (Code {ex.response.status_code}). Marking inactive.")
|
||||
return False # False signalisiert der übergeordneten Funktion, das Abo zu deaktivieren
|
||||
|
||||
logger.error(f'Web push failed with code {ex.response.status_code if ex.response else "Unknown"}: {ex}')
|
||||
return False
|
||||
except Exception as e:
|
||||
logger.error(f'Unexpected Web push error: {e}')
|
||||
return False
|
||||
|
||||
def _mark_subscription_inactive(subscription_id):
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user