synapse-react-client
Version:
[](https://travis-ci.com/Sage-Bionetworks/Synapse-React-Client) [](https://badge.fury.io/js/synaps
50 lines • 2.55 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var react_1 = (0, tslib_1.__importDefault)(require("react"));
var react_bootstrap_1 = require("react-bootstrap");
var SynapseClient_1 = require("../utils/SynapseClient");
var SynapseContext_1 = require("../utils/SynapseContext");
var DirectDownloadButton = function (props) {
var id = props.id, fileHandleAssociation = props.fileHandleAssociation, className = props.className, variant = props.variant, fileName = props.fileName;
var accessToken = (0, SynapseContext_1.useSynapseContext)().accessToken;
var getDownloadLink = function () { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () {
var batchFileRequest, file, preSignedURL, e_1;
return (0, tslib_1.__generator)(this, function (_a) {
switch (_a.label) {
case 0:
if (!fileHandleAssociation.fileHandleId || !accessToken)
return [2 /*return*/];
batchFileRequest = {
requestedFiles: [fileHandleAssociation],
includePreSignedURLs: true,
includeFileHandles: false,
includePreviewPreSignedURLs: false,
};
_a.label = 1;
case 1:
_a.trys.push([1, 3, , 4]);
return [4 /*yield*/, (0, SynapseClient_1.getFiles)(batchFileRequest, accessToken)];
case 2:
file = _a.sent();
preSignedURL = file.requestedFiles[0].preSignedURL;
if (!preSignedURL) {
console.log('Fail to get file download link');
}
else {
window.open(preSignedURL);
}
return [3 /*break*/, 4];
case 3:
e_1 = _a.sent();
console.log('Fail to get file download link', e_1);
return [3 /*break*/, 4];
case 4: return [2 /*return*/];
}
});
}); };
return (react_1.default.createElement(react_1.default.Fragment, null,
react_1.default.createElement(react_bootstrap_1.Button, { id: id, variant: variant, className: className, onClick: function (e) { return getDownloadLink(); } }, fileName)));
};
exports.default = DirectDownloadButton;
//# sourceMappingURL=DirectDownloadButton.js.map