Dark Mode

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Helpers and hooks to speed up your integration with Web Monetization API

Notifications You must be signed in to change notification settings

guidovizoso/react-monetize

Repository files navigation

react-monetize

Helpers and hooks to speed up your integration with Web Monetization API

react-monetize.now.sh

Install

Currently supports React, Create React App, Next Js and Gatsby (through gatsby-plugin-monetization). Not yet tested in Gatsby or Preact. Not yet tested in Preact.

yarn add react-monetize

Usage

Wrap your app with the MonetizeProvider and add your payment pointer.

You can read how to get one here: https://webmonetization.org/docs/receiving

); } export default App;">import { MonetizeProvider } from 'react-monetize';

function App() {
return (
<MonetizePovider paymentPointer="myPaymentPointer">
<YourApp />
MonetizeProvider>
);
}

export default App;

Now you have two hooks available to use anywhere in your app:

useStatus

State is the current state provided by Web Monetization API according to this list.

Events are the payment events registered stored as CustomEvent.

State: {state}

    {events.map((e) => (
  • {`${e.detail.amount} ${e.detail.assetCode}`}
  • ))}
); } export default Component;">import { useStatus } from 'react-monetize';

function Component() {
const { state, events } = useStatus();

return (
<>
<p>State: {state}p>
<ul>
{events.map((e) => (
<li key={e.timeStamp}>{`${e.detail.amount} ${e.detail.assetCode}`}li>
))}
ul>
>
);
}

export default Component;

useContent

Provides a boolean that indicates if the user has provided a payment or not so you can choose to show paid content.

{isMonetized ?
My premium content
:
You need to subscribe to access premium content
} ); } export default MonetizedContent;">import { useContent } from 'react-monetize';

function MonetizedContent() {
const { isMonetized } = useContent();
return (
<React.Fragment>
{isMonetized ? <div>My premium contentdiv> : <div>You need to subscribe to access premium contentdiv>}
React.Fragment>
);
}

export default MonetizedContent;

Contribute

Clone and then:

cd react-monetize
yarn
yarn build
cd examples/next-js
yarn
yarn dev

Develop.

WIP

  • Improve documentation code and details.
  • Add documentation project to the library code.

Future changes

  • Remove global declaration for document once the property is added to DOM types.
  • Monetization UI?

Author

Guido Vizoso guido.vizoso9@gmail.com

Contributors

Muhammad Ali hi@muhammadali.io

Related projects

Show your support

Give a if this project helped you!


This README was generated with by readme-md-generator

About

Helpers and hooks to speed up your integration with Web Monetization API

Resources

Readme

Stars

Watchers

Forks

Packages

Contributors