diff --git a/app/routes/_index.tsx b/app/routes/_index.tsx index 2583754..185f59b 100644 --- a/app/routes/_index.tsx +++ b/app/routes/_index.tsx @@ -78,15 +78,32 @@ function EnableButton({ onSubscribe }: { onSubscribe: () => void }) { async function subscribe() { console.log("Hey the thing was clicked wow") - await new Promise((resolve) => - window.Notification.requestPermission(resolve) + await requestPermission() + subscribeToPush( + urlB64ToUint8Array(applicationServerPublicKey) as any, + (subscription) => { + fetch("/subscribe", { + method: "POST", + body: JSON.stringify(subscription), + }) + onSubscribe() + } ) - subscribeToPush("Derpderp", (subscription) => { - fetch("/subscribe", { - method: "POST", - body: JSON.stringify(subscription), - }) - onSubscribe() - }) } } + +const applicationServerPublicKey = + "BDTbzdtzJxwV0sscdsXla-GKvlcxqQr7edEfkX8-papwvvV1UVc3IMyRacl1BbgTi31nWPji2wKCZkjf1l5iX7Y" + +function urlB64ToUint8Array(base64String: string) { + const padding = "=".repeat((4 - (base64String.length % 4)) % 4) + const base64 = (base64String + padding).replace(/\-/g, "+").replace(/_/g, "/") + + const rawData = window.atob(base64) + const outputArray = new Uint8Array(rawData.length) + + for (let i = 0; i < rawData.length; ++i) { + outputArray[i] = rawData.charCodeAt(i) + } + return outputArray +}