synapse-react-client
Version:
[](https://travis-ci.com/Sage-Bionetworks/Synapse-React-Client) [](https://badge.fury.io/js/synaps
79 lines • 5.59 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.AccessTokenCard = void 0;
var tslib_1 = require("tslib");
var free_solid_svg_icons_1 = require("@fortawesome/free-solid-svg-icons");
var react_fontawesome_1 = require("@fortawesome/react-fontawesome");
var moment_1 = (0, tslib_1.__importDefault)(require("moment"));
var react_1 = (0, tslib_1.__importStar)(require("react"));
var react_bootstrap_1 = require("react-bootstrap");
var react_error_boundary_1 = require("react-error-boundary");
var react_tooltip_1 = (0, tslib_1.__importDefault)(require("react-tooltip"));
var utils_1 = require("../../utils/");
var SynapseContext_1 = require("../../utils/SynapseContext");
var ScopeDescriptions_1 = require("../../utils/synapseTypes/AccessToken/ScopeDescriptions");
var WarningModal_1 = (0, tslib_1.__importDefault)(require("../synapse_form_wrapper/WarningModal"));
var AccessTokenCard = function (_a) {
var accessToken = _a.accessToken, onDelete = _a.onDelete;
var authToken = (0, SynapseContext_1.useSynapseContext)().accessToken;
var _b = (0, react_1.useState)(false), showModal = _b[0], setShowModal = _b[1];
var handleError = (0, react_error_boundary_1.useErrorHandler)();
var isExpired = accessToken.state === 'EXPIRED';
(0, react_1.useEffect)(function () {
// For reasons unknown, the tooltips in this component would not load in Synapse.org without this
// see https://github.com/wwayne/react-tooltip/issues/344
react_tooltip_1.default.rebuild();
}, []);
return (react_1.default.createElement("div", { className: 'cardContainer PersonalAccessTokenCard' +
(isExpired ? ' bg-warning' : '') },
react_1.default.createElement(WarningModal_1.default, { title: 'Confirm Deletion', modalBody: react_1.default.createElement(react_1.default.Fragment, null,
react_1.default.createElement("p", null, "If you delete this token, any applications using it will stop working. This action cannot be undone."),
react_1.default.createElement("p", { className: "SRC-boldText" }, "Are you sure you want to delete this token?")), confirmButtonText: 'Delete Token', onCancel: function () { return setShowModal(false); }, onConfirm: function (id) {
utils_1.SynapseClient.deletePersonalAccessToken(id, authToken)
.then(function () {
onDelete();
setShowModal(false);
})
.catch(function (error) {
handleError(error);
});
}, confirmButtonVariant: "danger", show: showModal, onConfirmCallbackArgs: [accessToken.id, authToken] }),
react_1.default.createElement("div", { className: "SRC-cardContent" },
react_1.default.createElement("div", { className: "SRC-eqHeightRow SRC-userCardName" },
react_1.default.createElement(react_tooltip_1.default, { delayShow: 100 }),
react_1.default.createElement("span", { className: 'SRC-blackText' }, accessToken.name),
isExpired && (react_1.default.createElement("span", null,
react_1.default.createElement(react_fontawesome_1.FontAwesomeIcon, { "data-tip": 'This token has expired. It no longer works and can only be deleted.', icon: free_solid_svg_icons_1.faExclamationTriangle, "aria-hidden": "true" })))),
react_1.default.createElement("div", { className: "SRC-eqHeightRow" },
react_1.default.createElement("span", null, "Permissions: "),
accessToken.scopes.map(function (scope) {
return (react_1.default.createElement("span", { className: "PersonalAccessTokenCard__ScopeName SRC-primary-text-color SRC-primary-color-hover SRC-hand-cursor SRC-inlineFlex", "data-tip": ScopeDescriptions_1.scopeDescriptions[scope].description, key: scope }, ScopeDescriptions_1.scopeDescriptions[scope].displayName));
})),
react_1.default.createElement("div", { className: "SRC-eqHeightRow" },
react_1.default.createElement("span", null,
"Last used ",
(0, moment_1.default)(accessToken.lastUsed).fromNow()),
react_1.default.createElement("span", { className: 'SRC-deemphasized-text' }, ' | '),
react_1.default.createElement("span", null,
"Created ",
(0, moment_1.default)(accessToken.createdOn).fromNow()))),
react_1.default.createElement("div", { className: "PersonalAccessTokenCard__DeleteButton" },
react_1.default.createElement(react_bootstrap_1.Button, { variant: "default", "aria-label": "delete", onClick: function () {
if (isExpired) {
// token no longer works, no need for warning/confirmation
utils_1.SynapseClient.deletePersonalAccessToken(accessToken.id, authToken)
.then(function () {
onDelete();
})
.catch(function (error) {
handleError(error);
});
}
else {
setShowModal(true);
}
} },
react_1.default.createElement(react_fontawesome_1.FontAwesomeIcon, { icon: free_solid_svg_icons_1.faTrash, "aria-hidden": "true" })))));
};
exports.AccessTokenCard = AccessTokenCard;
//# sourceMappingURL=AccessTokenCard.js.map