fix(notifications): read camelCase publicKey from VAPID endpoint

The backend view returns {"public_key": ...} but the global
CamelCaseJSONRenderer rewrites it to {"publicKey": ...} on the wire,
so destructuring `public_key` always resolved to undefined and the
subscribe path bailed silently. Browsers never registered with the
backend, no PushSubscription rows were ever created, and no push
notifications fired.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
fazli 2026-06-17 12:06:35 +00:00
parent fef53fd003
commit 66b14cfa74

View File

@ -68,9 +68,11 @@ export function usePushNotifications() {
setPermission(perm); setPermission(perm);
if (perm !== "granted") return false; if (perm !== "granted") return false;
// Get the VAPID public key from the backend. // Get the VAPID public key from the backend. The backend's view returns
// {"public_key": ...} but its global CamelCaseJSONRenderer rewrites that
// to {"publicKey": ...} on the wire — so we read camelCase here.
const keyRes = await fetch(`${apiBase}/api/notif/v1/push/vapid-public-key/`); const keyRes = await fetch(`${apiBase}/api/notif/v1/push/vapid-public-key/`);
const { public_key: publicKey } = await keyRes.json(); const { publicKey } = await keyRes.json();
if (!publicKey) return false; if (!publicKey) return false;
const reg = await navigator.serviceWorker.ready; const reg = await navigator.serviceWorker.ready;