@selfcommunity/react-ui
Version:
React UI Components to integrate a Community created with SelfCommunity Platform.
52 lines (51 loc) • 2.66 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const jsx_runtime_1 = require("react/jsx-runtime");
const lab_1 = require("@mui/lab");
const material_1 = require("@mui/material");
const api_services_1 = require("@selfcommunity/api-services");
const react_1 = require("react");
const Errors_1 = require("../../constants/Errors");
const utils_1 = require("@selfcommunity/utils");
const react_intl_1 = require("react-intl");
const notistack_1 = require("notistack");
const pubsub_js_1 = tslib_1.__importDefault(require("pubsub-js"));
const PubSub_1 = require("../../constants/PubSub");
const course_1 = require("../../types/course");
function RemoveButton(props, ref) {
// PROPS
const { course, user, handleOpenDialog } = props;
// STATES
const [loading, setLoading] = (0, react_1.useState)(false);
// HOOKS
const { enqueueSnackbar } = (0, notistack_1.useSnackbar)();
// HANDLERS
const handleSubmit = (0, react_1.useCallback)((userToRemove) => {
setLoading(true);
const params = {
user: userToRemove.id
};
api_services_1.CourseService.leaveOrRemoveCourseRequest(course.id, params)
.then(() => {
setLoading(false);
pubsub_js_1.default.publish(`${PubSub_1.SCTopicType.COURSE}.${PubSub_1.SCCourseEventType.REMOVE_MEMBER}`, userToRemove);
enqueueSnackbar((0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.editCourse.tab.users.table.snackbar.removed", defaultMessage: "ui.editCourse.tab.users.table.snackbar.removed" }), {
variant: 'success',
autoHideDuration: 3000
});
})
.catch((error) => {
utils_1.Logger.error(Errors_1.SCOPE_SC_UI, error);
enqueueSnackbar((0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.common.error.action", defaultMessage: "ui.common.error.action" }), {
variant: 'error',
autoHideDuration: 3000
});
});
}, [course, setLoading]);
(0, react_1.useImperativeHandle)(ref, () => ({
handleManageUser: (userToRemove) => handleSubmit(userToRemove)
}), [handleSubmit]);
return ((0, jsx_runtime_1.jsx)(lab_1.LoadingButton, Object.assign({ size: "small", color: "inherit", variant: "outlined", onClick: () => handleOpenDialog({ tab: course_1.SCCourseEditTabType.USERS, user }), loading: loading, disabled: loading }, { children: (0, jsx_runtime_1.jsx)(material_1.Icon, { children: "close" }) })));
}
exports.default = (0, react_1.memo)((0, react_1.forwardRef)(RemoveButton));