Checkout Flow

The Subbi library also includes a full drop in checkout flow for you to use if you so desire. It is a single component that has the following props:

styles (optional): An optional object with four optional properties: connect, approve, subscribe, complete. The value of each property is a standard CSS-in-JS style, as seen here. Because Subbi uses styled-components under the hood, this includes pseudo elements.

onError (optional): An optional function that is called if any of the components encounter an error. It is passed one argument: the error object in question.

onSuccessHandlers (optional): An optional object with three optional properties: connect, approve, subscribe. The value of each property is a function that is called on successful web3 connection, spending approval and subscription respectively. The first argument of each function is a basket of properties pertaining to the user, network they are connected to and the contract they are subscribing to.

showWeb3Connection (REQUIRED): A boolean value that dictates whether or not to include the browser wallet connection step. If false assumes that you are handling the connection or passing a signer to the SubbiProvider.

subscriptionContractAddress (REQUIRED): The address for your deployed contract.

interface OnActionProps {
  user: string;
  contract: string;
  network: SupportedNetworks;
}

interface Props {
  subscriptionContractAddress: string;
  showWeb3Connection: boolean;
  onError?: (error: any) => void | Promise<void>;
  styles?: { [key in "connect" | "approve" | "subscribe" | "complete"]?: {
  [x: string]: string | number | {};
} & React.CSSProperties; };
  onSuccessHandlers?: {
    [key in "connect" | "approve" | "subscribe"]?:
      | ((arg0: OnActionProps) => void | Promise<void>)
      | undefined;
  };
}

Usage

import { CheckoutFlow } from "@subbi/react";

<CheckoutFlow
    showWeb3Connection
    subscriptionContractAddress="0xadac08d7d5bf608d622a94bfab669b38fdc7bcb2"
    onSuccessHandlers={{
        connect: () => console.log("successful connection!"),
        approve: () => console.log("successful approval!"),
        subscribe: () => console.log("successful subscription!")
    }}
    onError={(error: any) => console.log(error)}
    styles={{
        connect: { backgroundColor: "blue" },
        approve: { color: "green" },
        subscribe: { fontSize: "24px" },
        complete: { textDecoration: "underline" }
    }}
/>

Last updated