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

54 lines 2.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var React = (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 FileUpload = function (props) { var id = props.id, variant = props.variant, _a = props.label, label = _a === void 0 ? 'Browse...' : _a, uploadCallback = props.uploadCallback, context = props.context; var accessToken = (0, SynapseContext_1.useSynapseContext)().accessToken; var hiddenFileInput = React.useRef(null); var clickHandler = function () { var _a; if (hiddenFileInput === null || hiddenFileInput === void 0 ? void 0 : hiddenFileInput.current) { (_a = hiddenFileInput.current) === null || _a === void 0 ? void 0 : _a.click(); } }; var changeHandler = function (e) { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () { var file, resp, e_1; return (0, tslib_1.__generator)(this, function (_a) { switch (_a.label) { case 0: if (!e.target.files) return [3 /*break*/, 4]; file = e.target.files[0]; _a.label = 1; case 1: _a.trys.push([1, 3, , 4]); return [4 /*yield*/, (0, SynapseClient_1.uploadFile)(accessToken, file.name, file)]; case 2: resp = _a.sent(); uploadCallback === null || uploadCallback === void 0 ? void 0 : uploadCallback({ success: true, resp: resp, context: context, }); return [3 /*break*/, 4]; case 3: e_1 = _a.sent(); console.log('FileUpload: fail to upload file', e_1); uploadCallback === null || uploadCallback === void 0 ? void 0 : uploadCallback({ success: false, message: e_1, }); return [3 /*break*/, 4]; case 4: return [2 /*return*/]; } }); }); }; return (React.createElement(React.Fragment, null, React.createElement("input", { type: 'file', ref: hiddenFileInput, onChange: changeHandler, style: { display: 'none' } }), React.createElement(react_bootstrap_1.Button, { id: id, variant: variant, onClick: clickHandler }, label))); }; exports.default = FileUpload; //# sourceMappingURL=FileUpload.js.map