synapse-react-client
Version:
[](https://travis-ci.com/Sage-Bionetworks/Synapse-React-Client) [](https://badge.fury.io/js/synaps
136 lines • 8.51 kB
JavaScript
"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