synapse-react-client
Version:
[](https://travis-ci.com/Sage-Bionetworks/Synapse-React-Client) [](https://badge.fury.io/js/synaps
65 lines • 3.75 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
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 useGetDownloadListActionsRequired_1 = require("../../utils/hooks/SynapseAPI/useGetDownloadListActionsRequired");
var react_intersection_observer_1 = require("react-intersection-observer");
var MeetAccessRequirementCard_1 = require("./MeetAccessRequirementCard");
var RequestDownloadCard_1 = require("./RequestDownloadCard");
function DownloadListActionsRequired() {
var _a;
var handleError = (0, react_error_boundary_1.useErrorHandler)();
// Load the next page when this ref comes into view.
var _b = (0, react_intersection_observer_1.useInView)(), ref = _b.ref, inView = _b.inView;
var _c = (0, useGetDownloadListActionsRequired_1.useGetDownloadListActionsRequiredInfinite)(), data = _c.data, status = _c.status, isLoading = _c.isLoading, hasNextPage = _c.hasNextPage, isFetchingNextPage = _c.isFetchingNextPage, fetchNextPage = _c.fetchNextPage, isError = _c.isError, newError = _c.error;
(0, react_1.useEffect)(function () {
if (isError && newError) {
handleError((0, ErrorUtils_1.toError)(newError));
}
}, [isError, newError, handleError]);
(0, react_1.useEffect)(function () {
if (status === 'success' &&
!isFetchingNextPage &&
hasNextPage &&
fetchNextPage &&
inView) {
fetchNextPage();
}
}, [status, hasNextPage, isFetchingNextPage, fetchNextPage, inView]);
var allRows = (_a = data === null || data === void 0 ? void 0 : data.pages.flatMap(function (page) { return page.page; })) !== null && _a !== void 0 ? _a : [];
/**
* Returns rendering for the ActionRequiredCount.
*
* @param {ActionRequiredCount} actionRequiredCount actionRequiredCount being rendered
*/
var renderActionRequired = function (actionRequiredCount) {
switch (actionRequiredCount.action.concreteType) {
case 'org.sagebionetworks.repo.model.download.MeetAccessRequirement': {
var meetARAction = actionRequiredCount.action;
return (react_1.default.createElement(MeetAccessRequirementCard_1.MeetAccessRequirementCard, { key: meetARAction.accessRequirementId, accessRequirementId: meetARAction.accessRequirementId, count: actionRequiredCount.count }));
}
case 'org.sagebionetworks.repo.model.download.RequestDownload': {
var requestDownloadAction = actionRequiredCount.action;
return (react_1.default.createElement(RequestDownloadCard_1.RequestDownloadCard, { key: requestDownloadAction.benefactorId, entityId: "syn" + requestDownloadAction.benefactorId, count: actionRequiredCount.count }));
}
// case not supported yet
default:
return undefined;
}
};
return (react_1.default.createElement(react_1.default.Fragment, null,
allRows.length > 0 && (react_1.default.createElement("div", { className: "DownloadListActionsRequired" },
allRows.map(function (item) {
if (item) {
return renderActionRequired(item);
}
else
return false;
}),
react_1.default.createElement("div", { ref: ref }))),
isLoading && (react_1.default.createElement(MeetAccessRequirementCard_1.LoadingAccessRequirementCard, null))));
}
exports.default = DownloadListActionsRequired;
//# sourceMappingURL=DownloadListActionsRequired.js.map