UNPKG

synapse-react-client

Version:

[![Build Status](https://travis-ci.com/Sage-Bionetworks/Synapse-React-Client.svg?branch=main)](https://travis-ci.com/Sage-Bionetworks/Synapse-React-Client) [![npm version](https://badge.fury.io/js/synapse-react-client.svg)](https://badge.fury.io/js/synaps

214 lines 12.6 kB
"use strict"; /** * Copied from src/lib/containers/access_requirement_list/AcceptedRequirements.tsx */ Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var React = (0, tslib_1.__importStar)(require("react")); var react_1 = require("react"); var MarkdownSynapse_1 = (0, tslib_1.__importDefault)(require("../../MarkdownSynapse")); var synapseTypes_1 = require("../../../utils/synapseTypes/"); var utils_1 = require("../../../utils"); var AccessApprovalCheckMark_1 = (0, tslib_1.__importDefault)(require("../AccessApprovalCheckMark")); var AccessRequirementList_1 = require("../AccessRequirementList"); var SynapseClient_1 = require("../../../utils/SynapseClient"); var react_bootstrap_1 = require("react-bootstrap"); var SynapseContext_1 = require("../../../utils/SynapseContext"); var RequestDataAccess = function (props) { var user = props.user, wikiPage = props.wikiPage, accessRequirementStatus = props.accessRequirementStatus, accessRequirement = props.accessRequirement, _a = props.showButton, showButton = _a === void 0 ? true : _a, onHide = props.onHide, requestDataStepCallback = props.requestDataStepCallback; var accessToken = (0, SynapseContext_1.useSynapseContext)().accessToken; var _b = (0, react_1.useState)(true), isHide = _b[0], setIsHide = _b[1]; var propsIsApproved = accessRequirementStatus === null || accessRequirementStatus === void 0 ? void 0 : accessRequirementStatus.isApproved; var _c = (0, react_1.useState)(propsIsApproved), isApproved = _c[0], setIsApproved = _c[1]; var _d = (0, react_1.useState)(), submissionState = _d[0], setSubmissionState = _d[1]; var _e = (0, react_1.useState)(), alert = _e[0], setAlert = _e[1]; var _f = (0, react_1.useState)(false), isSubmissionCanceled = _f[0], setIsSubmissionCanceled = _f[1]; (0, react_1.useEffect)(function () { setIsApproved(propsIsApproved); if (accessRequirementStatus === null || accessRequirementStatus === void 0 ? void 0 : accessRequirementStatus.currentSubmissionStatus) { setSubmissionState(accessRequirementStatus.currentSubmissionStatus.state); showSubmissionStatusAlert(accessRequirementStatus.currentSubmissionStatus); } }, [propsIsApproved]); var showRequestAccess = function () { requestDataStepCallback === null || requestDataStepCallback === void 0 ? void 0 : requestDataStepCallback({ managedACTAccessRequirement: accessRequirement, step: 1, }); }; var onAcceptClicked = function () { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () { var errAlert, resp, e_1, accessApprovalRequest; return (0, tslib_1.__generator)(this, function (_a) { switch (_a.label) { case 0: if (!(accessRequirement.concreteType === AccessRequirementList_1.SUPPORTED_ACCESS_REQUIREMENTS.ManagedACTAccessRequirement)) return [3 /*break*/, 9]; if (!accessToken) return [3 /*break*/, 7]; if (!(submissionState === synapseTypes_1.SUBMISSION_STATE.SUBMITTED && !isSubmissionCanceled)) return [3 /*break*/, 5]; errAlert = { key: 'danger', message: (React.createElement(React.Fragment, null, React.createElement("strong", null, "Error canceling your data access request."), React.createElement("br", null), "Please try again later.")), }; _a.label = 1; case 1: _a.trys.push([1, 3, , 4]); return [4 /*yield*/, (0, SynapseClient_1.cancelDataAccessRequest)(accessRequirementStatus === null || accessRequirementStatus === void 0 ? void 0 : accessRequirementStatus.currentSubmissionStatus.submissionId, accessToken)]; case 2: resp = _a.sent(); if (resp.state === synapseTypes_1.SUBMISSION_STATE.CANCELLED) { // successfully cancelled setAlert({ key: 'success', message: (React.createElement("strong", null, "Your data access request has been canceled.")), }); setIsSubmissionCanceled(true); } else { setAlert(errAlert); } return [3 /*break*/, 4]; case 3: e_1 = _a.sent(); console.log('RequestDataAccess: error canceling data access request:', e_1); setAlert(errAlert); return [3 /*break*/, 4]; case 4: return [3 /*break*/, 6]; case 5: showRequestAccess(); _a.label = 6; case 6: return [3 /*break*/, 8]; case 7: requestDataStepCallback === null || requestDataStepCallback === void 0 ? void 0 : requestDataStepCallback({ managedACTAccessRequirement: accessRequirement, step: 4, }); _a.label = 8; case 8: return [3 /*break*/, 10]; case 9: if (!isApproved) { accessApprovalRequest = { requirementId: accessRequirement === null || accessRequirement === void 0 ? void 0 : accessRequirement.id, submitterId: user === null || user === void 0 ? void 0 : user.ownerId, accessorId: user === null || user === void 0 ? void 0 : user.ownerId, state: synapseTypes_1.ApprovalState.APPROVED, }; utils_1.SynapseClient.postAccessApproval(accessToken, accessApprovalRequest) .then(function (_) { setIsApproved(true); }) .catch(function (err) { return console.error('Error on post access approval: ', err); }); } _a.label = 10; case 10: return [2 /*return*/]; } }); }); }; var getAcceptButtonText = function () { if (accessRequirement.concreteType === AccessRequirementList_1.SUPPORTED_ACCESS_REQUIREMENTS.ManagedACTAccessRequirement || accessRequirement.concreteType === AccessRequirementList_1.SUPPORTED_ACCESS_REQUIREMENTS.ACTAccessRequirement) { if (submissionState) { var btnActionText = void 0; switch (submissionState) { case synapseTypes_1.SUBMISSION_STATE.SUBMITTED: btnActionText = isSubmissionCanceled ? 'Update Request' : "Cancel Request"; break; case synapseTypes_1.SUBMISSION_STATE.APPROVED: case synapseTypes_1.SUBMISSION_STATE.REJECTED: case synapseTypes_1.SUBMISSION_STATE.CANCELLED: btnActionText = 'Update Request'; } return btnActionText; } else { return 'Request access'; } } else { return 'I Accept Terms of Use'; } }; var showSubmissionStatusAlert = function (submissionStatus) { switch (submissionStatus.state) { case synapseTypes_1.SUBMISSION_STATE.SUBMITTED: setAlert({ key: 'primary', message: React.createElement("strong", null, "You have submitted a data access request."), }); break; case synapseTypes_1.SUBMISSION_STATE.APPROVED: setAlert({ key: 'success', message: React.createElement("strong", null, "Your data access request has been approved."), }); break; case synapseTypes_1.SUBMISSION_STATE.REJECTED: setAlert({ key: 'danger', message: (React.createElement(React.Fragment, null, React.createElement("strong", null, "Your data access request has been rejected."), React.createElement("br", null), submissionStatus.rejectedReason || '')), }); break; } return React.createElement(React.Fragment, null); }; var termsOfUse = accessRequirement .termsOfUse; var actContactInfo = accessRequirement .actContactInfo; var isTermsOfUse = accessRequirement.concreteType === AccessRequirementList_1.SUPPORTED_ACCESS_REQUIREMENTS.TermsOfUseAccessRequirement; var isActContactInfo = accessRequirement.concreteType === AccessRequirementList_1.SUPPORTED_ACCESS_REQUIREMENTS.ACTAccessRequirement; var isActOrTermsOfUse = (isTermsOfUse && termsOfUse) || (isActContactInfo && actContactInfo); var markdown = React.createElement(React.Fragment, null); if (wikiPage) { markdown = (React.createElement("div", { className: "AcceptRequirementsMarkdown" }, wikiPage && (React.createElement(MarkdownSynapse_1.default // remove React mount/unmount error , { wikiId: wikiPage === null || wikiPage === void 0 ? void 0 : wikiPage.wikiPageId, ownerId: wikiPage === null || wikiPage === void 0 ? void 0 : wikiPage.ownerObjectId, objectType: wikiPage === null || wikiPage === void 0 ? void 0 : wikiPage.ownerObjectType })), /* Alert message */ alert && (React.createElement(react_bootstrap_1.Alert, { className: 'access-requirement-list-alert', variant: alert.key }, alert.message)))); } else if (isActOrTermsOfUse) { markdown = (React.createElement(MarkdownSynapse_1.default, { markdown: isTermsOfUse ? termsOfUse : actContactInfo })); } var isManagedActAr = accessRequirement.concreteType === AccessRequirementList_1.SUPPORTED_ACCESS_REQUIREMENTS.ManagedACTAccessRequirement; var approvedText = isManagedActAr ? 'Your data access request has been approved.' : 'You have accepted the terms of use.'; return (React.createElement(React.Fragment, null, React.createElement("div", { className: "requirement-container" }, React.createElement(AccessApprovalCheckMark_1.default, { isCompleted: isApproved }), React.createElement("div", { className: "terms-of-use-content" }, isApproved ? (React.createElement("div", null, React.createElement("p", null, approvedText), React.createElement("p", { style: { marginBottom: '0' } }, isManagedActAr && (React.createElement("button", { className: "update-request-button", onClick: function () { showRequestAccess(); }, style: { paddingLeft: '0', marginRight: '2rem', } }, getAcceptButtonText())), React.createElement("a", { onClick: function () { setIsHide(!isHide); } }, "View Terms")), React.createElement("div", { className: "view-terms " + (isHide ? 'hidden' : 'show') }, markdown))) : (markdown), showButton && ( // This will show when the access is not approved React.createElement("div", { className: "button-container " + (isApproved ? "hide" : "default") }, React.createElement("div", { className: "accept-button-container" }, React.createElement("button", { className: "accept-button", onClick: onAcceptClicked }, getAcceptButtonText())), React.createElement("div", { className: "not-accept-button-container" }, React.createElement("button", { className: "not-accpet-button", onClick: function () { return onHide === null || onHide === void 0 ? void 0 : onHide(); } }, "I do not accept")))))))); }; exports.default = RequestDataAccess; //# sourceMappingURL=RequestDataAccess.js.map