synapse-react-client
Version:
[](https://travis-ci.com/Sage-Bionetworks/Synapse-React-Client) [](https://badge.fury.io/js/synaps
98 lines • 6.41 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.LoadingAccessRequirementCard = exports.MeetAccessRequirementCard = exports.LOCK_TITLE = exports.ACT_TITLE = exports.SELF_SIGN_TITLE = exports.TERMS_OF_USE_TITLE = void 0;
var tslib_1 = require("tslib");
var react_1 = (0, tslib_1.__importStar)(require("react"));
var react_error_boundary_1 = require("react-error-boundary");
var ErrorUtils_1 = require("../../utils/ErrorUtils");
var useGetAccessRequirement_1 = (0, tslib_1.__importDefault)(require("../../utils/hooks/SynapseAPI/useGetAccessRequirement"));
var react_bootstrap_1 = require("react-bootstrap");
var utils_1 = require("../row_renderers/utils");
var SynapseConstants_1 = require("../../utils/SynapseConstants");
var AccessRequirementList_1 = (0, tslib_1.__importStar)(require("../access_requirement_list/AccessRequirementList"));
var lab_1 = require("@material-ui/lab");
exports.TERMS_OF_USE_TITLE = 'Requires Acceptance of Data-Specific Terms of Use';
exports.SELF_SIGN_TITLE = 'Requires Acceptance of Data-Specific Terms of Use';
exports.ACT_TITLE = 'Requires Approval of Data-Specific Access Requirements';
exports.LOCK_TITLE = 'Access Restricted';
var MeetAccessRequirementCard = function (_a) {
var _b, _c, _d;
var accessRequirementId = _a.accessRequirementId, count = _a.count;
var handleError = (0, react_error_boundary_1.useErrorHandler)();
var _e = (0, useGetAccessRequirement_1.default)(accessRequirementId), ar = _e.data, isFetching = _e.isFetching, isError = _e.isError, newError = _e.error;
(0, react_1.useEffect)(function () {
if (isError && newError) {
handleError((0, ErrorUtils_1.toError)(newError));
}
}, [isError, newError, handleError]);
var _f = (0, react_1.useState)(false), isShowingAccessRequirement = _f[0], setIsShowingAccessRequirement = _f[1];
var content = react_1.default.createElement(react_1.default.Fragment, null);
if (!isError && !isFetching && ar) {
var title = undefined;
var iconType = '';
var description = '';
switch (ar.concreteType) {
case AccessRequirementList_1.SUPPORTED_ACCESS_REQUIREMENTS.TermsOfUseAccessRequirement:
title = exports.TERMS_OF_USE_TITLE;
iconType = SynapseConstants_1.EASY_DIFFICULTY;
description = (_b = ar.description) !== null && _b !== void 0 ? _b : '';
break;
case AccessRequirementList_1.SUPPORTED_ACCESS_REQUIREMENTS.SelfSignAccessRequirement: {
title = exports.SELF_SIGN_TITLE;
var selfSignAR = ar;
if (selfSignAR.isValidatedProfileRequired) {
iconType = SynapseConstants_1.VARIABLE_DIFFICULTY;
}
else if (selfSignAR.isCertifiedUserRequired) {
iconType = SynapseConstants_1.MEDIUM_DIFFICULTY;
}
else {
iconType = SynapseConstants_1.EASY_DIFFICULTY;
}
description = (_c = ar.description) !== null && _c !== void 0 ? _c : '';
break;
}
case AccessRequirementList_1.SUPPORTED_ACCESS_REQUIREMENTS.ManagedACTAccessRequirement:
case AccessRequirementList_1.SUPPORTED_ACCESS_REQUIREMENTS.ACTAccessRequirement:
title = exports.ACT_TITLE;
iconType = SynapseConstants_1.VARIABLE_DIFFICULTY;
description = (_d = ar.description) !== null && _d !== void 0 ? _d : '';
break;
case 'org.sagebionetworks.repo.model.LockAccessRequirement':
title = exports.LOCK_TITLE;
iconType = SynapseConstants_1.VARIABLE_DIFFICULTY;
description = 'Access restricted pending review by Synapse Access and Compliance Team.';
break;
}
if (title) {
content = react_1.default.createElement("div", { className: "MeetAccessRequirementCard actionRequiredCard" },
react_1.default.createElement(utils_1.Icon, { type: iconType }),
react_1.default.createElement("div", { className: "metadata" },
react_1.default.createElement("div", { className: "title" }, title),
react_1.default.createElement("div", { className: "fileCount" },
count,
" File(s)"),
react_1.default.createElement("div", { className: "description" }, description)),
react_1.default.createElement("div", { className: "startButtonContainer" },
react_1.default.createElement(react_bootstrap_1.Button, { className: "startButton", variant: "secondary", onClick: function () { return setIsShowingAccessRequirement(true); } }, "Start")));
}
}
return (react_1.default.createElement(react_1.default.Fragment, null,
!isError && !isFetching && content,
isFetching && (react_1.default.createElement(exports.LoadingAccessRequirementCard, null)),
isShowingAccessRequirement && ar && (react_1.default.createElement(AccessRequirementList_1.default, { entityId: ar.subjectIds[0].id, accessRequirementFromProps: [ar], renderAsModal: true, numberOfFilesAffected: count, onHide: function () { return setIsShowingAccessRequirement(false); } }))));
};
exports.MeetAccessRequirementCard = MeetAccessRequirementCard;
var LoadingAccessRequirementCard = function () {
return react_1.default.createElement("div", { className: "MeetAccessRequirementCard actionRequiredCard" },
react_1.default.createElement(lab_1.Skeleton, { variant: "rect", width: 136, height: 74 }),
react_1.default.createElement("div", { className: "metadata" },
react_1.default.createElement("div", { className: "title" },
react_1.default.createElement(lab_1.Skeleton, { width: 320 })),
react_1.default.createElement("div", { className: "fileCount" },
react_1.default.createElement(lab_1.Skeleton, { width: 100 }))),
react_1.default.createElement("div", { className: "startButtonContainer" },
react_1.default.createElement(lab_1.Skeleton, { variant: "rect", width: 160, height: 33 })));
};
exports.LoadingAccessRequirementCard = LoadingAccessRequirementCard;
//# sourceMappingURL=MeetAccessRequirementCard.js.map