import React, { useState } from "react" import { useEffect } from "react" import { usePush } from "../usePush" import { request } from "http" import urlB64ToUint8Array from "../../b64ToUInt8" import pushPublicKey from "../../pushPublicKey" export default function EnableNotifications({ onSubscribe, }: { onSubscribe: () => void }) { return (

Allow Notifications

Tack Up Now requires your permission to send notifications in order to function properly
) } function EnableButton({ onSubscribe }: { onSubscribe: () => void }) { const { subscribeToPush, requestPermission, canSendPush } = usePush() const [error, setError] = useState() const [log, setLog] = useState([]) function subscribe() { requestPermission() } useEffect(() => { if (!canSendPush) return setLog((prev) => [...prev, "Subscribing to push notifications"]) subscribeToPush( urlB64ToUint8Array(pushPublicKey) as any, (subscription) => { setLog((prev) => [ ...prev, `controller is undefined? ${navigator.serviceWorker.controller === undefined}`, ]) setLog((prev) => [ ...prev, `subscriptions: ${JSON.stringify(subscription.toJSON())}`, ]) try { navigator.serviceWorker.controller?.postMessage({ type: "subscribed", subscription: subscription.toJSON(), }) // onSubscribe() } catch (error) { setError(error as Error) } }, (error) => { setError(error) } ) }, [canSendPush]) return ( <>
{error?.toString()}
{log.map((log, index) => (
{log}
))} ) }