diff --git a/src/hub.js b/src/hub.js index 384564031ed4237f6ebdb54e8e43d0c99d54a283..84a0e496f188b4976c439147fa7397f210f0297d 100644 --- a/src/hub.js +++ b/src/hub.js @@ -500,7 +500,10 @@ document.addEventListener("DOMContentLoaded", async () => { retPhxChannel .join() .receive("ok", async data => subscriptions.setVapidPublicKey(data.vapid_public_key)) - .receive("error", res => console.error(res)); + .receive("error", res => { + subscriptions.setVapidPublicKey(null); + console.error(res); + }); linkChannel.setSocket(socket); }); diff --git a/src/subscriptions.js b/src/subscriptions.js index bdf5765ef13c9ee6096eb0812798283a22176af5..a5d9fc8afab5ad7b81fdeaf54fc9ecd90bab17f2 100644 --- a/src/subscriptions.js +++ b/src/subscriptions.js @@ -50,6 +50,10 @@ export default class Subscriptions { // registration becomes null if failed, non null if registered while (this.registration === undefined) await nextTick(); if (!this.registration || !this.registration.pushManager) return null; + + while (this.vapidPublicKey === undefined) await nextTick(); + if (this.vapidPublicKey === null) return null; + try { const convertedVapidKey = urlBase64ToUint8Array(this.vapidPublicKey);