import React 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 (
    <div>
      <h1>Allow Notifications</h1>
      <div>
        Tack Up Now requires your permission to send notifications in order to
        function properly
      </div>
      <EnableButton onSubscribe={onSubscribe} />
    </div>
  )
}

function EnableButton({ onSubscribe }: { onSubscribe: () => void }) {
  const { subscribeToPush, requestPermission, canSendPush } = usePush()

  function subscribe() {
    requestPermission()
  }

  useEffect(() => {
    if (!canSendPush) return

    subscribeToPush(urlB64ToUint8Array(pushPublicKey) as any, () => {
      navigator.serviceWorker.controller?.postMessage({ type: "subscribed" })
      onSubscribe()
    })
  }, [canSendPush])

  return <button onClick={subscribe}>Enable Notifications</button>
}
