synapse-react-client
Version:
[](https://travis-ci.com/Sage-Bionetworks/Synapse-React-Client) [](https://badge.fury.io/js/synaps
91 lines • 5.66 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.CreatePackageV2 = exports.TEMPLATE_ERROR_FILE_NAME = void 0;
var tslib_1 = require("tslib");
var react_1 = (0, tslib_1.__importStar)(require("react"));
var react_bootstrap_1 = require("react-bootstrap");
var SynapseClient_1 = require("../../utils/SynapseClient");
var SynapseContext_1 = require("../../utils/SynapseContext");
var FullWidthAlert_1 = (0, tslib_1.__importDefault)(require("../FullWidthAlert"));
exports.TEMPLATE_ERROR_FILE_NAME = 'Please provide a package file name and try again.';
var CreatePackageV2 = 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)(), alert = _c[0], setAlert = _c[1];
var _d = (0, react_1.useState)(undefined), bulkFileDownloadResponse = _d[0], setBulkFileDownloadResponse = _d[1];
var onPackageCreation = props.onPackageCreation;
var createPackageHandler = function (event) { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () {
var fileNameWithZipExtension, currentBulkFileDownloadResponse, resultFileHandleId, _a, err_1, err_2;
return (0, tslib_1.__generator)(this, function (_b) {
switch (_b.label) {
case 0:
event.preventDefault();
if (!fileName) {
setAlert({
message: exports.TEMPLATE_ERROR_FILE_NAME,
variant: 'danger',
});
return [2 /*return*/];
}
setIsLoading(true);
_b.label = 1;
case 1:
_b.trys.push([1, 7, 8, 9]);
fileNameWithZipExtension = fileName + ".zip";
return [4 /*yield*/, (0, SynapseClient_1.createPackageFromDownloadListV2)(fileNameWithZipExtension, accessToken)];
case 2:
currentBulkFileDownloadResponse = _b.sent();
setBulkFileDownloadResponse(currentBulkFileDownloadResponse);
resultFileHandleId = currentBulkFileDownloadResponse.resultFileHandleId;
_b.label = 3;
case 3:
_b.trys.push([3, 5, , 6]);
//reset
_a = window.location;
return [4 /*yield*/, (0, SynapseClient_1.getFileHandleByIdURL)(resultFileHandleId, accessToken)];
case 4:
//reset
_a.href = _b.sent();
setZipFileName('');
setBulkFileDownloadResponse(undefined);
onPackageCreation();
return [3 /*break*/, 6];
case 5:
err_1 = _b.sent();
console.error('Err on getFileHandleByIdURL = ', err_1);
return [3 /*break*/, 6];
case 6: return [3 /*break*/, 9];
case 7:
err_2 = _b.sent();
setAlert({
message: err_2.reason,
variant: 'danger',
});
return [3 /*break*/, 9];
case 8:
setIsLoading(false);
return [7 /*endfinally*/];
case 9: return [2 /*return*/];
}
});
}); };
var onChange = function (event) {
setZipFileName(event.currentTarget.value);
};
return (react_1.default.createElement(react_1.default.Fragment, null,
react_1.default.createElement("div", { className: "CreatePackageV2 bootstrap-4-backport" },
react_1.default.createElement("div", { className: "createPackageStep" },
react_1.default.createElement("span", { className: "createPackageTitle" }, "Create your Download Package"),
react_1.default.createElement("span", { className: "createPackageDescription" }, "Name your download package and select Download Package to get started."),
!isLoading && !bulkFileDownloadResponse && react_1.default.createElement("div", { className: "inputAndCreateButton" },
react_1.default.createElement("input", { onChange: onChange, type: "text", placeholder: "PackageName", style: { width: '233px' } }),
react_1.default.createElement("span", { className: "zipUI" }, ".zip"),
react_1.default.createElement(react_bootstrap_1.Button, { variant: fileName ? 'primary' : 'dark', onClick: createPackageHandler, type: "button", style: { marginLeft: 20 }, disabled: fileName ? false : true }, "Download Package")),
isLoading && (react_1.default.createElement("div", { className: "creatingPackage" },
react_1.default.createElement("span", { className: "spinner" }),
react_1.default.createElement("span", { style: { marginLeft: 5 } }, "Creating package..."))))),
react_1.default.createElement(FullWidthAlert_1.default, { show: !!alert, variant: (alert === null || alert === void 0 ? void 0 : alert.variant) ? alert.variant : 'success', description: alert === null || alert === void 0 ? void 0 : alert.message, autoCloseAfterDelayInSeconds: 10, onClose: function () { setAlert(undefined); } })));
};
exports.CreatePackageV2 = CreatePackageV2;
//# sourceMappingURL=CreatePackageV2.js.map