synapse-react-client
Version:
[](https://travis-ci.com/Sage-Bionetworks/Synapse-React-Client) [](https://badge.fury.io/js/synaps
54 lines • 2.7 kB
JavaScript
"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