synapse-react-client
Version:
[](https://travis-ci.com/Sage-Bionetworks/Synapse-React-Client) [](https://badge.fury.io/js/synaps
214 lines • 12.6 kB
JavaScript
"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