2025-07-19 11:56:30 +01:00
|
|
|
import json
|
2025-07-18 17:51:48 +01:00
|
|
|
from flask import current_app
|
|
|
|
from pywebpush import webpush, WebPushException
|
2025-07-19 11:56:30 +01:00
|
|
|
from ktvmanager.lib.database import delete_push_subscription
|
2025-07-18 17:51:48 +01:00
|
|
|
|
2025-07-19 11:56:30 +01:00
|
|
|
def send_notification(subscription_json, message_body):
|
2025-07-18 17:51:48 +01:00
|
|
|
try:
|
2025-07-19 11:56:30 +01:00
|
|
|
subscription_info = json.loads(subscription_json)
|
2025-07-18 17:51:48 +01:00
|
|
|
webpush(
|
|
|
|
subscription_info=subscription_info,
|
|
|
|
data=message_body,
|
|
|
|
vapid_private_key=current_app.config["VAPID_PRIVATE_KEY"],
|
|
|
|
vapid_claims={"sub": current_app.config["VAPID_CLAIM_EMAIL"]},
|
|
|
|
)
|
|
|
|
except WebPushException as ex:
|
|
|
|
print(f"Web push error: {ex}")
|
|
|
|
if ex.response and ex.response.status_code == 410:
|
|
|
|
print("Subscription is no longer valid, removing from DB.")
|
2025-07-19 11:56:30 +01:00
|
|
|
delete_push_subscription(subscription_json)
|