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

73 lines 4.23 kB
"use strict"; 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