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

79 lines 5.59 kB
"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