@atlaskit/profilecard
Version:
A React component to display a card with user information.
151 lines • 6.84 kB
JavaScript
import _extends from "@babel/runtime/helpers/extends";
import _defineProperty from "@babel/runtime/helpers/defineProperty";
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
var _excluded = ["trigger", "viewingUserId", "product"];
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
import _regeneratorRuntime from "@babel/runtime/regenerator";
import React, { Suspense, useCallback } from 'react';
import { useAnalyticsEvents } from '@atlaskit/analytics-next';
import { fireEvent } from '../../util/analytics';
import { getAAIDFromARI } from '../../util/rovoAgentUtils';
import ProfileCardTrigger from '../common/ProfileCardTrigger';
import { AgentProfileCardLazy } from './lazyAgentProfileCard';
export var AgentProfileCardTrigger = function AgentProfileCardTrigger(_ref) {
var _ref$trigger = _ref.trigger,
trigger = _ref$trigger === void 0 ? 'hover' : _ref$trigger,
viewingUserId = _ref.viewingUserId,
product = _ref.product,
props = _objectWithoutProperties(_ref, _excluded);
var resourceClient = props.resourceClient,
userId = props.agentId,
cloudId = props.cloudId;
var _useAnalyticsEvents = useAnalyticsEvents(),
createAnalyticsEvent = _useAnalyticsEvents.createAnalyticsEvent;
var fireAnalytics = useCallback(function (payload) {
if (createAnalyticsEvent) {
fireEvent(createAnalyticsEvent, payload);
}
}, [createAnalyticsEvent]);
var getCreator = /*#__PURE__*/function () {
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(creator_type, creator) {
var _userId, creatorInfo;
return _regeneratorRuntime.wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
if (creator) {
_context.next = 2;
break;
}
return _context.abrupt("return", undefined);
case 2:
_context.t0 = creator_type;
_context.next = _context.t0 === 'SYSTEM' ? 5 : _context.t0 === 'THIRD_PARTY' ? 6 : _context.t0 === 'FORGE' ? 7 : _context.t0 === 'CUSTOMER' ? 8 : 21;
break;
case 5:
return _context.abrupt("return", {
type: 'SYSTEM'
});
case 6:
return _context.abrupt("return", {
type: 'THIRD_PARTY',
name: creator !== null && creator !== void 0 ? creator : ''
});
case 7:
return _context.abrupt("return", {
type: 'THIRD_PARTY',
name: creator !== null && creator !== void 0 ? creator : ''
});
case 8:
_userId = getAAIDFromARI(creator) || '';
_context.prev = 9;
if (!(!_userId || !cloudId)) {
_context.next = 12;
break;
}
return _context.abrupt("return", undefined);
case 12:
_context.next = 14;
return props.resourceClient.getProfile(cloudId, _userId, fireAnalytics);
case 14:
creatorInfo = _context.sent;
return _context.abrupt("return", {
type: 'CUSTOMER',
name: creatorInfo.fullName,
profileLink: "/people/".concat(_userId),
id: _userId
});
case 18:
_context.prev = 18;
_context.t1 = _context["catch"](9);
return _context.abrupt("return", undefined);
case 21:
return _context.abrupt("return", undefined);
case 22:
case "end":
return _context.stop();
}
}, _callee, null, [[9, 18]]);
}));
return function getCreator(_x, _x2) {
return _ref2.apply(this, arguments);
};
}();
var fetchAgentProfile = /*#__PURE__*/function () {
var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
var agentInfo, agentCreatorInfo;
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
while (1) switch (_context2.prev = _context2.next) {
case 0:
_context2.next = 2;
return resourceClient.getRovoAgentProfile({
type: 'agent',
value: userId
}, fireAnalytics);
case 2:
agentInfo = _context2.sent;
_context2.next = 5;
return getCreator(agentInfo.creator_type, agentInfo.creator || undefined);
case 5:
agentCreatorInfo = _context2.sent;
return _context2.abrupt("return", _objectSpread(_objectSpread({}, agentInfo), {}, {
creatorInfo: agentCreatorInfo
}));
case 7:
case "end":
return _context2.stop();
}
}, _callee2);
}));
return function fetchAgentProfile() {
return _ref3.apply(this, arguments);
};
}();
var renderProfileCard = function renderProfileCard(_ref4) {
var _profileData$creatorI;
var profileData = _ref4.profileData,
error = _ref4.error;
return /*#__PURE__*/React.createElement(Suspense, {
fallback: null
}, /*#__PURE__*/React.createElement(AgentProfileCardLazy, {
agent: profileData,
hasError: !!error,
isCreatedByViewingUser: (profileData === null || profileData === void 0 ? void 0 : profileData.creatorInfo) && (profileData === null || profileData === void 0 || (_profileData$creatorI = profileData.creatorInfo) === null || _profileData$creatorI === void 0 ? void 0 : _profileData$creatorI.id) === viewingUserId,
cloudId: props.cloudId,
product: product,
errorType: error,
onChatClick: props.onChatClick,
onConversationStartersClick: props.onConversationStartersClick,
resourceClient: props.resourceClient,
addFlag: props.addFlag
}));
};
return /*#__PURE__*/React.createElement(ProfileCardTrigger, _extends({}, props, {
trigger: "hover",
renderProfileCard: renderProfileCard,
fetchProfile: fetchAgentProfile,
fireAnalytics: fireAnalytics,
profileCardType: "agent"
}));
};