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

65 lines 3.75 kB
"use strict"; 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