Blog

Start/stop monetization

May 26, 2020

You can turn monetization on and off dynamically in response to a visitor clicking a button by adding or removing the meta tag.

import React, { useEffect, useState } from "react"
import { Helmet } from "react-helmet/es/Helmet"
import "antd/dist/antd.css"
import { Button } from "antd"

export const MonetizationSwitcher = ({ wallet }) => {
  const [state, setState] = useState("")
  const [monetized, setMonetized] = useState(true)

  const showMonetizationState = () => {
    setState(document.monetization.state)
  }

  useEffect(() => {
    if (typeof document !== "undefined") {
      if (document.monetization) {
        document.monetization.addEventListener("monetizationstop", showMonetizationState)
        document.monetization.addEventListener("monetizationpending", showMonetizationState)
        document.monetization.addEventListener("monetizationstart", showMonetizationState)
      } else {
        setState("Not enabled in browser")
      }
    }
  }, [])

  return (
    <div>
      <Helmet>
        {monetized && <meta name="monetization" content={wallet}/>}
      </Helmet>
      <p> Current monetization state: {state}</p>
      <Button type="primary" onClick={() => setMonetized(false)} disabled={!monetized} style={{marginRight: "5px"}}>Stop monetization</Button>
      <Button type="primary" onClick={() => setMonetized(true)} disabled={monetized}>Start monetization</Button>
    </div>
  )
}

Demo

Current monetization state:


Created by Petr Janík, a student of informatics in Brno, Czech Republic and a huge fan of web development. Follow me Twitter