UNPKG

@atlaskit/rovo-agent-components

Version:

This package host public components related to rovo agents, the components here are needed for other public atlaskit packages

154 lines (152 loc) 8.22 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports.AgentVerificationDropdownItem = void 0; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _agentVerificationDropdownItem_AtlaskitRovoAgentComponents_updateAgentVerificationMutation2 = _interopRequireDefault(require("./__generated__/agentVerificationDropdownItem_AtlaskitRovoAgentComponents_updateAgentVerificationMutation.graphql")); var _agentVerificationDropdownItem_AtlaskitRovoAgentComponents_userPermissionsRef2 = _interopRequireDefault(require("./__generated__/agentVerificationDropdownItem_AtlaskitRovoAgentComponents_userPermissionsRef.graphql")); var _agentVerificationDropdownItem_AtlaskitRovoAgentComponents_agentRef2 = _interopRequireDefault(require("./__generated__/agentVerificationDropdownItem_AtlaskitRovoAgentComponents_agentRef.graphql")); var _react = _interopRequireWildcard(require("react")); var _reactIntl = require("react-intl"); var _reactRelay = require("react-relay"); var _dropdownMenu = require("@atlaskit/dropdown-menu"); var _flag = require("@atlaskit/flag"); var _statusError = _interopRequireDefault(require("@atlaskit/icon/core/status-error")); var _statusSuccess = _interopRequireDefault(require("@atlaskit/icon/core/status-success")); var _actions = require("@atlaskit/rovo-agent-analytics/actions"); var _messages = _interopRequireDefault(require("./messages")); function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); } /** * A dropdown item for verifying or unverifying an agent. * Renders "Verify agent" if the agent is not verified, or "Remove verification" if it is. * Returns null if the user doesn't have permission to govern agents or the feature flag is off. */ var AgentVerificationDropdownItem = exports.AgentVerificationDropdownItem = function AgentVerificationDropdownItem(_ref) { var _userPermissions$isAb, _agentData$isVerified; var agentRef = _ref.agentRef, userPermissionsRef = _ref.userPermissionsRef, onClick = _ref.onClick, onVerificationSuccess = _ref.onVerificationSuccess, testId = _ref.testId, renderItem = _ref.renderItem; var _useIntl = (0, _reactIntl.useIntl)(), formatMessage = _useIntl.formatMessage; var _useFlags = (0, _flag.useFlags)(), showFlag = _useFlags.showFlag; var agentData = (0, _reactRelay.useFragment)(_agentVerificationDropdownItem_AtlaskitRovoAgentComponents_agentRef2.default, agentRef); var userPermissions = (0, _reactRelay.useFragment)(_agentVerificationDropdownItem_AtlaskitRovoAgentComponents_userPermissionsRef2.default, userPermissionsRef); var isAbleToGovernAgents = (_userPermissions$isAb = userPermissions === null || userPermissions === void 0 ? void 0 : userPermissions.isAbleToGovernAgents) !== null && _userPermissions$isAb !== void 0 ? _userPermissions$isAb : false; var isVerified = (_agentData$isVerified = agentData === null || agentData === void 0 ? void 0 : agentData.isVerified) !== null && _agentData$isVerified !== void 0 ? _agentData$isVerified : false; var agentId = agentData === null || agentData === void 0 ? void 0 : agentData.id; var _useRovoAgentActionAn = (0, _actions.useRovoAgentActionAnalytics)({ touchPoint: 'agent-verification-dropdown-item', agentId: agentId, isAbleToGovernAgents: isAbleToGovernAgents }), trackAgentEvent = _useRovoAgentActionAn.trackAgentEvent; var _useMutation = (0, _reactRelay.useMutation)(_agentVerificationDropdownItem_AtlaskitRovoAgentComponents_updateAgentVerificationMutation2.default), _useMutation2 = (0, _slicedToArray2.default)(_useMutation, 2), commitUpdateVerification = _useMutation2[0], isPending = _useMutation2[1]; var handleError = (0, _react.useCallback)(function (verified, errorMessage) { showFlag({ title: formatMessage(verified ? _messages.default.verifyErrorTitle : _messages.default.unverifyErrorTitle), description: formatMessage(_messages.default.errorDescription, { errorMessage: errorMessage }), appearance: 'error', icon: /*#__PURE__*/_react.default.createElement(_statusError.default, { spacing: "spacious", label: "" }) }); }, [formatMessage, showFlag]); var handleUpdateVerification = (0, _react.useCallback)(function (verified) { if (!agentId) { return; } onClick === null || onClick === void 0 || onClick(); commitUpdateVerification({ variables: { id: agentId, verified: verified }, onCompleted: function onCompleted(response) { var payload = response === null || response === void 0 ? void 0 : response.agentStudio_updateAgentVerification; if (payload !== null && payload !== void 0 && payload.success) { onVerificationSuccess === null || onVerificationSuccess === void 0 || onVerificationSuccess(verified); trackAgentEvent({ action: verified ? 'verify' : 'unverify', actionSubject: 'rovoAgent', attributes: {} }); showFlag({ title: formatMessage(verified ? _messages.default.verifySuccessTitle : _messages.default.unverifySuccessTitle), appearance: 'success', isAutoDismiss: true, icon: /*#__PURE__*/_react.default.createElement(_statusSuccess.default, { spacing: "spacious", label: "" }) }); } else { var _payload$errors; var errorMessage = payload === null || payload === void 0 || (_payload$errors = payload.errors) === null || _payload$errors === void 0 || (_payload$errors = _payload$errors[0]) === null || _payload$errors === void 0 ? void 0 : _payload$errors.message; if (errorMessage) { trackAgentEvent({ action: verified ? 'verify' : 'unverify', actionSubject: 'rovoAgentError', attributes: { agentId: agentId, error: { message: errorMessage } } }); handleError(verified, errorMessage); } } }, onError: function onError(error) { trackAgentEvent({ action: verified ? 'verify' : 'unverify', actionSubject: 'rovoAgentError', attributes: { agentId: agentId, error: { message: error.message } } }); handleError(verified, error.message); } }); }, [agentId, commitUpdateVerification, formatMessage, handleError, onClick, onVerificationSuccess, showFlag, trackAgentEvent]); var labelText = formatMessage(isVerified ? _messages.default.unverifyAgentLabel : _messages.default.verifyAgentLabel); var handleOnClick = function handleOnClick() { return handleUpdateVerification(!isVerified); }; if ( // Don't render if agent ID is not available !agentId || // Don't render if user doesn't have permission !isAbleToGovernAgents) { return null; } // Use custom render or default to DropdownItem if (renderItem) { return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, renderItem({ isPending: isPending, isVerified: isVerified, labelText: labelText, onClick: handleOnClick })); } return /*#__PURE__*/_react.default.createElement(_dropdownMenu.DropdownItem, { testId: testId, onClick: handleOnClick }, labelText); };