bananas-commerce-admin
Version:
What's this, an admin for apes?
30 lines • 1.22 kB
JavaScript
import React from "react";
import Button from "@mui/material/Button";
import { useSnackbar } from "notistack";
import { useApi } from "../contexts/ApiContext";
export const ActionButton = ({ operation, successMessage, errorMessage, children, variant = "outlined", refresh, onClick, request, init, ...props }) => {
const api = useApi();
const { enqueueSnackbar } = useSnackbar();
const handleClick = async () => {
const action = api.operations[operation];
if (!action) {
throw new Error(`Invalid action "${operation}".`);
}
const response = await action.call(request, init);
if (response.ok) {
enqueueSnackbar(successMessage, { variant: "success" });
refresh();
return successMessage;
}
else {
console.error("[ACTION_BUTTON]", response);
enqueueSnackbar(errorMessage, {
variant: "error",
});
throw new Error(errorMessage);
}
};
return (React.createElement(Button, { size: "medium", variant: variant, onClick: onClick ?? handleClick, ...props }, children));
};
export default ActionButton;
//# sourceMappingURL=ActionButton.js.map