synapse-react-client
Version:
[](https://travis-ci.com/Sage-Bionetworks/Synapse-React-Client) [](https://badge.fury.io/js/synaps
74 lines • 4.66 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var react_1 = (0, tslib_1.__importStar)(require("react"));
var fontawesome_svg_core_1 = require("@fortawesome/fontawesome-svg-core");
var free_solid_svg_icons_1 = require("@fortawesome/free-solid-svg-icons");
var react_fontawesome_1 = require("@fortawesome/react-fontawesome");
var react_router_dom_1 = require("react-router-dom");
var utils_1 = require("../../utils");
var dispatchDownloadListChangeEvent_1 = require("../../utils/functions/dispatchDownloadListChangeEvent");
var DownloadListTable_1 = (0, tslib_1.__importDefault)(require("./DownloadListTable"));
var react_tooltip_1 = (0, tslib_1.__importDefault)(require("react-tooltip"));
var SynapseTableConstants_1 = require("../table/SynapseTableConstants");
var SynapseContext_1 = require("../../utils/SynapseContext");
fontawesome_svg_core_1.library.add(free_solid_svg_icons_1.faDownload);
/**
* Nav toolbar UI to show how many files are in the Web-based Download List.
*
* @deprecated Moving to using the new Download List Services instead. http://rest-docs.synapse.org/rest/#org.sagebionetworks.repo.web.controller.DownloadListController
*/
function ShowDownload(_a) {
var _this = this;
var _b;
var to = _a.to;
var accessToken = (0, SynapseContext_1.useSynapseContext)().accessToken;
var _c = (0, react_1.useState)(undefined), downloadList = _c[0], setDownloadList = _c[1];
var _d = (0, react_1.useState)(false), showDownloadModal = _d[0], setShowDownloadModal = _d[1];
var idForToolTip = 'SHOW_DOWNLOAD_TOOLTIP';
var tooltipText = 'Click to view items in your download list.';
(0, react_1.useEffect)(function () {
if (!accessToken) {
return;
}
var updateDownloadList = function (event) { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () {
return (0, tslib_1.__generator)(this, function (_a) {
if (event === null || event === void 0 ? void 0 : event.detail) {
setDownloadList(event.detail);
}
else {
// for initialization
utils_1.SynapseClient.getDownloadList(accessToken).then(function (downloadList) {
setDownloadList(downloadList);
});
}
return [2 /*return*/];
});
}); };
updateDownloadList();
document.addEventListener(dispatchDownloadListChangeEvent_1.DOWNLOAD_LIST_CHANGE_EVENT, updateDownloadList);
return function () {
document.removeEventListener(dispatchDownloadListChangeEvent_1.DOWNLOAD_LIST_CHANGE_EVENT, updateDownloadList);
};
}, [accessToken]);
if (!accessToken) {
return react_1.default.createElement(react_1.default.Fragment, null);
}
var size = (_b = downloadList === null || downloadList === void 0 ? void 0 : downloadList.filesToDownload.length) !== null && _b !== void 0 ? _b : 0;
if (size === 0 && !showDownloadModal) {
// close only if the download modal is already closed too
return react_1.default.createElement(react_1.default.Fragment, null);
}
var positionClass = to ? 'position-by-anchor' : 'position-by-button';
var content = (react_1.default.createElement(react_1.default.Fragment, null,
react_1.default.createElement("span", { id: idForToolTip, "data-for": idForToolTip, "data-tip": tooltipText },
react_1.default.createElement("span", { className: "icon-container" },
react_1.default.createElement(react_fontawesome_1.FontAwesomeIcon, { icon: "download" })),
react_1.default.createElement("span", { className: "download-size " + positionClass }, size)),
react_1.default.createElement(react_tooltip_1.default, { delayShow: SynapseTableConstants_1.TOOLTIP_DELAY_SHOW, place: 'bottom', type: 'dark', effect: 'solid', border: true, id: idForToolTip })));
return to ? (react_1.default.createElement(react_router_dom_1.Link, { className: "Download-Link SRC-userImgSmall", to: to }, content)) : (react_1.default.createElement(react_1.default.Fragment, null,
react_1.default.createElement("button", { onClick: function () { return setShowDownloadModal(true); }, className: "Download-Link" }, content),
showDownloadModal && (react_1.default.createElement(DownloadListTable_1.default, { renderAsModal: true, onHide: function () { return setShowDownloadModal(false); } }))));
}
exports.default = (0, react_router_dom_1.withRouter)(ShowDownload);
//# sourceMappingURL=ShowDownload.js.map