UNPKG

@atlaskit/profilecard

Version:

A React component to display a card with user information.

104 lines 3.4 kB
import _extends from "@babel/runtime/helpers/extends"; 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 const AgentProfileCardTrigger = ({ trigger = 'hover', viewingUserId, product, ...props }) => { const { resourceClient, agentId: userId, cloudId } = props; const { createAnalyticsEvent } = useAnalyticsEvents(); const fireAnalytics = useCallback(payload => { if (createAnalyticsEvent) { fireEvent(createAnalyticsEvent, payload); } }, [createAnalyticsEvent]); const getCreator = async (creator_type, creator) => { if (!creator) { return undefined; } switch (creator_type) { case 'SYSTEM': return { type: 'SYSTEM' }; case 'THIRD_PARTY': return { type: 'THIRD_PARTY', name: creator !== null && creator !== void 0 ? creator : '' }; case 'FORGE': return { type: 'THIRD_PARTY', name: creator !== null && creator !== void 0 ? creator : '' }; case 'CUSTOMER': const userId = getAAIDFromARI(creator) || ''; try { if (!userId || !cloudId) { return undefined; } const creatorInfo = await props.resourceClient.getProfile(cloudId, userId, fireAnalytics); return { type: 'CUSTOMER', name: creatorInfo.fullName, profileLink: `/people/${userId}`, id: userId }; } catch (error) { return undefined; } default: return undefined; } }; const fetchAgentProfile = async () => { const agentInfo = await resourceClient.getRovoAgentProfile({ type: 'agent', value: userId }, fireAnalytics); const agentCreatorInfo = await getCreator(agentInfo.creator_type, agentInfo.creator || undefined); return { ...agentInfo, creatorInfo: agentCreatorInfo }; }; const renderProfileCard = ({ profileData, error }) => { var _profileData$creatorI; 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 ? 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" })); };