See what's going on with notifications
Test / test (push) Failing after 51s
Details
Test / test (push) Failing after 51s
Details
This commit is contained in:
parent
49392ebc4f
commit
93340fb1dd
|
|
@ -1,8 +1,7 @@
|
||||||
import React from "react"
|
import React from "react"
|
||||||
import { useEffect } from "react"
|
import { useEffect } from "react"
|
||||||
import { usePush } from "../usePush"
|
import { usePush } from "../usePush"
|
||||||
import pushPublicKey from "../../pushPublicKey"
|
import { request } from "http"
|
||||||
import urlB64ToUint8Array from "../../b64ToUInt8"
|
|
||||||
|
|
||||||
export default function EnableNotifications({
|
export default function EnableNotifications({
|
||||||
onSubscribe,
|
onSubscribe,
|
||||||
|
|
@ -31,8 +30,33 @@ function EnableButton({ onSubscribe }: { onSubscribe: () => void }) {
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!canSendPush) return
|
if (!canSendPush) return
|
||||||
|
|
||||||
subscribeToPush(urlB64ToUint8Array(pushPublicKey) as any, onSubscribe)
|
subscribeToPush(
|
||||||
|
urlB64ToUint8Array(applicationServerPublicKey) as any,
|
||||||
|
(subscription) => {
|
||||||
|
fetch("/api/subscribe", {
|
||||||
|
method: "POST",
|
||||||
|
body: JSON.stringify(subscription),
|
||||||
|
})
|
||||||
|
onSubscribe()
|
||||||
|
}
|
||||||
|
)
|
||||||
}, [canSendPush])
|
}, [canSendPush])
|
||||||
|
|
||||||
return <button onClick={subscribe}>Enable Notifications</button>
|
return <button onClick={subscribe}>Enable Notifications</button>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -93,6 +93,10 @@ function TackUpNow({
|
||||||
|
|
||||||
const [isInstalled, setIsInstalled] = useState(installed)
|
const [isInstalled, setIsInstalled] = useState(installed)
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
window.addEventListener("message", console.log)
|
||||||
|
}, [])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ClientOnly fallback={<div>Loading</div>}>
|
<ClientOnly fallback={<div>Loading</div>}>
|
||||||
{() =>
|
{() =>
|
||||||
|
|
|
||||||
|
|
@ -43,9 +43,24 @@ export default function start(self: ServiceWorkerGlobalScope) {
|
||||||
self.addEventListener("pushsubscriptionchange", function (event) {
|
self.addEventListener("pushsubscriptionchange", function (event) {
|
||||||
const waitEvent = event as ExtendableEvent
|
const waitEvent = event as ExtendableEvent
|
||||||
|
|
||||||
waitEvent.waitUntil(submitSubscription(self.registration))
|
waitEvent.waitUntil(
|
||||||
|
(async () => {
|
||||||
|
const newSubscription = await submitSubscription(self.registration)
|
||||||
|
|
||||||
self.registration.pushManager.getSubscription()
|
const clients = await self.clients.matchAll()
|
||||||
|
|
||||||
|
await Promise.all(
|
||||||
|
clients.map(async (client) =>
|
||||||
|
client.postMessage({
|
||||||
|
subscription:
|
||||||
|
await self.registration.pushManager.getSubscription(),
|
||||||
|
event,
|
||||||
|
newSubscription,
|
||||||
|
})
|
||||||
|
)
|
||||||
|
)
|
||||||
|
})()
|
||||||
|
)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -66,6 +81,8 @@ async function submitSubscription(registration: ServiceWorkerRegistration) {
|
||||||
await (existingSubscriptionId === undefined
|
await (existingSubscriptionId === undefined
|
||||||
? postSubscription(newSubscription, db)
|
? postSubscription(newSubscription, db)
|
||||||
: putSubscription(newSubscription, existingSubscriptionId.subscriptionId))
|
: putSubscription(newSubscription, existingSubscriptionId.subscriptionId))
|
||||||
|
|
||||||
|
return newSubscription
|
||||||
}
|
}
|
||||||
|
|
||||||
async function postSubscription(
|
async function postSubscription(
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue