UNPKG

@moveflow/widget

Version:

> ⚠️ **This is a testnet version** of the MoveFlow Checkout Widget. It is intended for development and testing purposes only. Do not use for mainnet payments.

66 lines (65 loc) 2.67 kB
"use client"; import { jsx as _jsx } from "react/jsx-runtime"; import { useState, useEffect, useContext } from "react"; import { Button, Typography } from "@mui/material"; import { AptosContext } from "./aptosWallet/AptosContext"; // Update the path to match your actual file structure const SubscriptionButtonAptos = (props) => { const { primaryColor, fontFamily, borderRadius } = props; const aptosContext = useContext(AptosContext); const { createSubscription, isConnectedAptos } = aptosContext || {}; const [subscriptionStatus, setSubscriptionStatus] = useState("idle"); const isButtonDisabled = subscriptionStatus === "success" || !isConnectedAptos; let buttonText; if (!isConnectedAptos) { buttonText = "Insufficient Balance"; } else { switch (subscriptionStatus) { case "loading": buttonText = "Loading..."; break; case "success": buttonText = "Subscription Successfully Created"; break; case "error": buttonText = "Create Subscription"; break; default: buttonText = "Create Subscription"; break; } } const handleButtonClick = async () => { // Check if createSubscription is available in the context and wallet is connected if (aptosContext?.createSubscription && isConnectedAptos) { setSubscriptionStatus("loading"); try { // Wait for the subscription creation to complete await createSubscription(props.payment); setSubscriptionStatus("success"); } catch (error) { console.error("Error creating subscription:", error); setSubscriptionStatus("error"); } } }; useEffect(() => { // Reset subscription status when payment props change setSubscriptionStatus("idle"); }, [props.payment]); return (_jsx(Button, { variant: "contained", sx: { "&.MuiButton-root": { width: "100%", borderRadius: `${borderRadius}px`, background: primaryColor, color: "white", fontFamily: fontFamily, pointerEvents: isButtonDisabled ? "none" : "auto", }, }, onClick: handleButtonClick, children: _jsx(Typography, { sx: { fontFamily: fontFamily, color: !isConnectedAptos ? "rgb(245,124,235)" : "white", }, children: buttonText }) })); }; export default SubscriptionButtonAptos;