synapse-react-client
Version:
[](https://travis-ci.com/Sage-Bionetworks/Synapse-React-Client) [](https://badge.fury.io/js/synaps
73 lines • 4.23 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ExternalFileHandleLink = void 0;
var tslib_1 = require("tslib");
var react_1 = (0, tslib_1.__importStar)(require("react"));
var synapseTypes_1 = require("../utils/synapseTypes");
var utils_1 = require("../utils/");
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 SynapseContext_1 = require("../utils/SynapseContext");
var assert_1 = require("assert");
fontawesome_svg_core_1.library.add(free_solid_svg_icons_1.faExternalLinkAlt);
var ExternalFileHandleLink = function (props) {
var accessToken = (0, SynapseContext_1.useSynapseContext)().accessToken;
var synId = props.synId, className = props.className;
var _a = (0, react_1.useState)(undefined), data = _a[0], setData = _a[1];
(0, react_1.useEffect)(function () {
var getEntity = function () { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () {
var fileEntity_1, batchFileRequest, file, externalFileHandle_1, e_1;
return (0, tslib_1.__generator)(this, function (_a) {
switch (_a.label) {
case 0:
_a.trys.push([0, 3, , 4]);
return [4 /*yield*/, utils_1.SynapseClient.getEntity(accessToken, synId)];
case 1:
fileEntity_1 = _a.sent();
if (!(0, synapseTypes_1.isFileEntity)(fileEntity_1)) {
throw new assert_1.AssertionError({
message: "File Entity expected but found " + fileEntity_1,
});
}
batchFileRequest = {
requestedFiles: [
{
associateObjectId: synId,
associateObjectType: synapseTypes_1.FileHandleAssociateType.FileEntity,
fileHandleId: fileEntity_1.dataFileHandleId,
},
],
includeFileHandles: true,
includePreSignedURLs: false,
includePreviewPreSignedURLs: false,
};
return [4 /*yield*/, utils_1.SynapseClient.getFiles(batchFileRequest, accessToken)];
case 2:
file = _a.sent();
externalFileHandle_1 = file.requestedFiles[0].fileHandle;
(0, synapseTypes_1.assertIsExternalFileHandle)(externalFileHandle_1);
setData({
externalFileHandle: externalFileHandle_1,
fileEntity: fileEntity_1,
});
return [3 /*break*/, 4];
case 3:
e_1 = _a.sent();
console.error('Error on getting external file handle = ', e_1);
return [3 /*break*/, 4];
case 4: return [2 /*return*/];
}
});
}); };
getEntity();
}, [synId, accessToken]);
var externalFileHandle = data === null || data === void 0 ? void 0 : data.externalFileHandle;
var fileEntity = data === null || data === void 0 ? void 0 : data.fileEntity;
return externalFileHandle ? (react_1.default.createElement("a", { href: externalFileHandle.externalURL, className: className, target: "_blank", rel: "noopener noreferrer" },
react_1.default.createElement("span", null, fileEntity === null || fileEntity === void 0 ? void 0 :
fileEntity.name,
react_1.default.createElement(react_fontawesome_1.FontAwesomeIcon, { style: { marginLeft: 5 }, icon: "external-link-alt" })))) : (react_1.default.createElement(react_1.default.Fragment, null));
};
exports.ExternalFileHandleLink = ExternalFileHandleLink;
//# sourceMappingURL=ExternalFileHandleLink.js.map