current_app.logger.info(f"{g.username} registered push subscription")
- session["subid"] = row["subid"]
-
- return {"status": "success"}
+ return {"status": "success", "subid": row["subid"]}
@bp.post("/update-settings")
@auth.requires_login
# Request must contain valid subscription JSON
abort(400)
- if "subid" not in session:
- return {"status": "failed", "message": "no subid in current session"}
bitfield = 0
settings = request.json
+
+ if ("subid" not in settings) or ("comments" not in settings) or ("songs" not in settings):
+ abort(400)
+
+ subid = settings["subid"]
+
if settings["comments"]:
bitfield |= SubscriptionSetting.COMMENTS
if settings["songs"]:
SET settings = ?
WHERE subid = ? AND userid = ?
""",
- [bitfield, session["subid"], g.userid])
+ [bitfield, subid, g.userid])
db.commit()
current_app.logger.info(f"{g.username} updated push subscription settings: {bitfield:04x}")
"/push-notifications/update-settings", {
method: "post",
headers: {"Content-Type": "application/json"},
- body: JSON.stringify({comments: comment_push_enabled, songs: song_push_enabled})
+ body: JSON.stringify({
+ comments: comment_push_enabled,
+ songs: song_push_enabled,
+ subid: window.localStorage.getItem("subid"),
+ })
}
);
}
try {
const registration = await navigator.serviceWorker.getRegistration();
const existingSubscription = await registration.pushManager.getSubscription();
- if (!existingSubscription)
+ if (!existingSubscription || !window.localStorage.getItem("subid"))
{
// Subscribe via browser's push service
const vapid_public_key = "BLsO37LostwqKch7SFr5Df0MexEoBOcujdMRY7wJurRPc_MGdz9rAkMrqs_dil4qSFxVbVyAA3FqLEPSL-WRNZs";
console.log(JSON.stringify(subscription));
// Register subscription with LSP server
- await fetch(
+ const response = await fetch(
"/push-notifications/subscribe", {
method: "post",
headers: {"Content-Type": "application/json"},
body: JSON.stringify(subscription)
}
);
+
+ const rspJson = await response.json();
+ console.log("Subscription ID:", rspJson.subid);
+ window.localStorage.setItem("subid", rspJson.subid);
}
}
catch (err) {