UNPKG

@selfcommunity/react-ui

Version:

React UI Components to integrate a Community created with SelfCommunity Platform.

52 lines (51 loc) 2.66 kB
"use strict"; 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));