bananas-commerce-admin
Version:
What's this, an admin for apes?
44 lines • 2.05 kB
JavaScript
import React from "react";
import { useSnackbar } from "notistack";
import ActionButton from "../../../components/ActionButton";
import { useApi } from "../../../contexts/ApiContext";
import { useCardContext } from "../../../contexts/CardContext";
import { useI18n } from "../../../contexts/I18nContext";
const CancelSubscriptionButton = ({ subscriptionId, refresh, variant = "outlined", children, handleClose, operation = "subscription.subscription:cancel", }) => {
const { setIsEditing } = useCardContext();
const { t } = useI18n();
const successMessage = t("Subscription cancelled successfully.");
const errorMessage = t("Failed to cancel subscription.");
const api = useApi();
const { enqueueSnackbar } = useSnackbar();
const action = async (subscriptionId) => {
const action = api.operations[operation];
if (!action) {
throw new Error(`Invalid action "${operation}".`);
}
const response = await action.call({
params: { subscription_id: subscriptionId },
});
if (response.ok) {
enqueueSnackbar(successMessage, { variant: "success" });
refresh();
return successMessage;
}
else {
console.error("[CANCEL_SUBSCRIPTION_BUTTON]", response);
enqueueSnackbar(errorMessage, {
variant: "error",
});
throw new Error(errorMessage);
}
};
const handleClick = async () => {
handleClose();
action(subscriptionId);
setIsEditing(false);
};
return (React.createElement(React.Fragment, null,
React.createElement(ActionButton, { errorMessage: errorMessage, operation: "subscription.subscription:cancel", refresh: refresh, request: { params: { subscription_id: subscriptionId } }, successMessage: successMessage, variant: variant, onClick: handleClick }, children ?? t("Cancel subscription"))));
};
export default CancelSubscriptionButton;
//# sourceMappingURL=CancelSubscriptionButton.js.map