@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
JavaScript
"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;