From 3cfe42023b2719d5d325e075d6838d1ff45bd6f6 Mon Sep 17 00:00:00 2001 From: Oskar Date: Wed, 3 Nov 2021 12:35:33 +0100 Subject: [PATCH] Work around pywebpush issue #130 by copying claims before passing --- ftracker/notifier.py | 9 ++++++--- web/main.js | 12 +++++++----- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/ftracker/notifier.py b/ftracker/notifier.py index 68ab7aa..68a4f3a 100644 --- a/ftracker/notifier.py +++ b/ftracker/notifier.py @@ -1,4 +1,5 @@ import json +import copy from slugify import slugify from threading import Thread, Event from datetime import datetime, timedelta @@ -33,7 +34,7 @@ class Notifier(Thread): ps = ps[0] - print("Sending notification", arrival, ps) + print("Sending notification", arrival, ps, self.vapid_creds) subscription = ps['sub'] notification = { @@ -41,13 +42,15 @@ class Notifier(Thread): 'body': "You didn't sign out of ftracker yet", 'arr': arrival } + privkey = self.vapid_creds['private_key'] + claims = copy.copy(self.vapid_creds['claims']) try: webpush( subscription, json.dumps(notification), - vapid_private_key = self.vapid_creds['private_key'], - vapid_claims = self.vapid_creds['claims'] + vapid_private_key = privkey, + vapid_claims = claims ) print("Notification sent") return None diff --git a/web/main.js b/web/main.js index b8ac32c..8eb9e4a 100644 --- a/web/main.js +++ b/web/main.js @@ -268,16 +268,18 @@ function registerPush(name, pushServerPublicKey) { }).then(function(subscription) { console.log("User is subscribed:", subscription); + var jsonSub = JSON.stringify({ + name: name, + sub: subscription + }); + fetch('/pushsubscribe', { method: "POST", headers: {"Content-Type": "application/json"}, - body: JSON.stringify({ - name: name, - sub: subscription - }) + body: jsonSub }).then(function(res) { if (res.ok) - localStorage.setItem('pushsub', subscription); + localStorage.setItem('pushsub', jsonSub); }); }); });