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

136 lines 8.51 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CreatePackage = exports.TEMPLATE_ERROR_FILE_NAME = exports.TEMPLATE_DOWNLOAD_MESSAGE = void 0; var tslib_1 = require("tslib"); 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_1 = (0, tslib_1.__importStar)(require("react")); var ReactBoostrap = (0, tslib_1.__importStar)(require("react-bootstrap")); var SynapseClient_1 = require("../../utils/SynapseClient"); var SynapseContext_1 = require("../../utils/SynapseContext"); var synapseTypes_1 = require("../../utils/synapseTypes/"); fontawesome_svg_core_1.library.add(free_solid_svg_icons_1.faCheck); fontawesome_svg_core_1.library.add(free_solid_svg_icons_1.faDownload); fontawesome_svg_core_1.library.add(free_solid_svg_icons_1.faFolder); exports.TEMPLATE_DOWNLOAD_MESSAGE = 'files were downloaded and removed from the list.'; exports.TEMPLATE_ERROR_FILE_NAME = 'Please provide a package file name and try again.'; var CreatePackage = function (props) { var accessToken = (0, SynapseContext_1.useSynapseContext)().accessToken; var _a = (0, react_1.useState)(false), isLoading = _a[0], setIsLoading = _a[1]; var _b = (0, react_1.useState)(''), fileName = _b[0], setZipFileName = _b[1]; var _c = (0, react_1.useState)({ message: '', className: undefined, variant: undefined, }), alert = _c[0], setAlert = _c[1]; var _d = (0, react_1.useState)(undefined), bulkFileDownloadResponse = _d[0], setBulkFileDownloadResponse = _d[1]; var children = props.children, updateDownloadList = props.updateDownloadList; var createPackageHandler = function (event) { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () { var fileNameWithZipExtension, downloadOrder, bulkFileDownloadRequest, currentBulkFileDownloadResponse, err_1; return (0, tslib_1.__generator)(this, function (_a) { switch (_a.label) { case 0: event.preventDefault(); if (!fileName) { setAlert({ message: exports.TEMPLATE_ERROR_FILE_NAME, variant: 'danger', className: undefined, }); return [2 /*return*/]; } setAlert({ message: '', variant: undefined, className: undefined }); setIsLoading(true); _a.label = 1; case 1: _a.trys.push([1, 4, 5, 6]); fileNameWithZipExtension = fileName + ".zip"; return [4 /*yield*/, (0, SynapseClient_1.getDownloadOrder)(fileNameWithZipExtension, accessToken)]; case 2: downloadOrder = _a.sent(); bulkFileDownloadRequest = { concreteType: 'org.sagebionetworks.repo.model.file.BulkFileDownloadRequest', requestedFiles: downloadOrder.files, zipFileName: fileNameWithZipExtension, zipFileFormat: synapseTypes_1.ZipFileFormat.Flat, }; return [4 /*yield*/, (0, SynapseClient_1.getBulkFiles)(bulkFileDownloadRequest, accessToken)]; case 3: currentBulkFileDownloadResponse = _a.sent(); setBulkFileDownloadResponse(currentBulkFileDownloadResponse); return [3 /*break*/, 6]; case 4: err_1 = _a.sent(); setAlert({ message: err_1.reason, variant: 'danger', className: undefined, }); return [3 /*break*/, 6]; case 5: setIsLoading(false); return [7 /*endfinally*/]; case 6: return [2 /*return*/]; } }); }); }; var downloadPackageHandler = function () { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () { var _a, resultZipFileHandleId, fileSummary, numfilesDownloaded, url, err_2; return (0, tslib_1.__generator)(this, function (_b) { switch (_b.label) { case 0: _a = bulkFileDownloadResponse, resultZipFileHandleId = _a.resultZipFileHandleId, fileSummary = _a.fileSummary; _b.label = 1; case 1: _b.trys.push([1, 3, , 4]); numfilesDownloaded = fileSummary.filter(function (el) { return el.status === synapseTypes_1.FileDownloadStatus.SUCCESS; }).length; setAlert({ message: numfilesDownloaded + " " + exports.TEMPLATE_DOWNLOAD_MESSAGE, className: 'SRC-primary-background-color SRC-whiteText', variant: undefined, }); return [4 /*yield*/, (0, SynapseClient_1.getFileHandleByIdURL)(resultZipFileHandleId, accessToken)]; case 2: url = _b.sent(); window.location.href = url; updateDownloadList(); setBulkFileDownloadResponse(undefined); return [3 /*break*/, 4]; case 3: err_2 = _b.sent(); console.error('Err on getFileHandleByIdURL = ', err_2); return [3 /*break*/, 4]; case 4: return [2 /*return*/]; } }); }); }; var onChange = function (event) { setZipFileName(event.currentTarget.value); }; return (react_1.default.createElement(react_1.default.Fragment, null, alert.message && (react_1.default.createElement(ReactBoostrap.Alert, { transition: false, variant: alert.variant, show: true, className: alert.className }, alert.message)), react_1.default.createElement("div", { className: "create-package-container bootstrap-4-backport" }, children, react_1.default.createElement("div", null, isLoading && (react_1.default.createElement("span", { className: "SRC-centerContentInline" }, react_1.default.createElement("span", { className: "spinner" }), react_1.default.createElement("span", { style: { marginLeft: 5 }, className: "create-package-text" }, "Creating package..."))), react_1.default.createElement("div", { className: "SRC-split" }, !isLoading && !bulkFileDownloadResponse && (react_1.default.createElement(react_1.default.Fragment, null, react_1.default.createElement("form", { onSubmit: createPackageHandler }, react_1.default.createElement("input", { onChange: onChange, type: "text", placeholder: "PackageFileName" }), react_1.default.createElement("span", { className: "zip-extension SRC-boldText" }, ".zip")), react_1.default.createElement(ReactBoostrap.Button, { variant: "primary", className: "pill-xl", onClick: createPackageHandler, type: "button" }, react_1.default.createElement(react_fontawesome_1.FontAwesomeIcon, { icon: "folder" }), "Create Package"))), bulkFileDownloadResponse && (react_1.default.createElement(react_1.default.Fragment, null, react_1.default.createElement("div", { className: "package-created" }, react_1.default.createElement(react_fontawesome_1.FontAwesomeIcon, { icon: "check", color: "green" }), react_1.default.createElement("span", { className: "create-package-text" }, "Package created! Ready for download.")), react_1.default.createElement(ReactBoostrap.Button, { variant: "primary", className: "pill-xl", onClick: downloadPackageHandler }, react_1.default.createElement(react_fontawesome_1.FontAwesomeIcon, { icon: "download", color: "white" }), "Download Package")))))))); }; exports.CreatePackage = CreatePackage; //# sourceMappingURL=CreatePackage.js.map