UNPKG

@atlaskit/profilecard

Version:

A React component to display a card with user information.

118 lines 3.38 kB
import { useCallback } from 'react'; import { getATLContextUrl } from '@atlaskit/atlassian-context'; import { useRovoPostMessageToPubsub } from '@atlaskit/rovo-triggers'; import { encodeParamsToUrl } from '../../../util/url'; export const firstCharUpper = str => str.charAt(0).toUpperCase() + str.slice(1); const ROVO_PARAM_PREFIX = 'rovoChat'; const createRovoParams = params => { const rovoParams = {}; Object.entries(params).forEach(([key, value]) => { rovoParams[`${ROVO_PARAM_PREFIX}${firstCharUpper(key)}`] = encodeURIComponent(value); }); return rovoParams; }; export const useAgentUrlActions = ({ cloudId }) => { const { publishWithPostMessage } = useRovoPostMessageToPubsub(); const onEditAgent = useCallback(agentId => { const url = `${getATLContextUrl('home')}/chat/agents/${agentId}/edit`; const urlWithParams = encodeParamsToUrl(url, { cloudId, ...createRovoParams({ cloudId }) }); window.open(urlWithParams, '_blank', 'noopener, noreferrer'); }, [cloudId]); const onCopyAgent = agentId => { navigator.clipboard.writeText(`${window.location.origin}/people/agent/${agentId}`); }; const onDuplicateAgent = useCallback(agentId => { const baseUrl = `${getATLContextUrl('home')}/chat/agents/new`; const urlWithParams = encodeParamsToUrl(baseUrl, { cloudId, ...createRovoParams({ cloudId, agentId, pathway: 'agents-create' }) }); window.open(urlWithParams, '_blank', 'noopener, noreferrer'); }, [cloudId]); const onConversationStarter = ({ agentId, prompt }) => { const startConversationInNewTab = () => { const baseUrl = `${getATLContextUrl('home')}/chat`; const urlWithParams = encodeParamsToUrl(baseUrl, { cloudId, ...createRovoParams({ cloudId, agentId, prompt, pathway: 'chat' }) }); window.open(urlWithParams, '_blank', 'noopener, noreferrer'); }; publishWithPostMessage({ targetWindow: window, payload: { type: 'chat-new', source: 'AgentProfileCard', data: { name: prompt.slice(0, 50), prompt, agentId, dialogues: [] } }, onAcknowledgeTimeout: () => { startConversationInNewTab(); } }); }; const onOpenChat = (agentId, agentName) => { const openChatInNewTab = () => { const baseUrl = `${getATLContextUrl('home')}/chat`; const urlWithParams = encodeParamsToUrl(baseUrl, { cloudId, ...createRovoParams({ cloudId, agentId }) }); window.open(urlWithParams, '_blank', 'noopener, noreferrer'); }; publishWithPostMessage({ targetWindow: window, payload: { type: 'chat-new', source: 'AgentProfileCard', data: { agentId, dialogues: [], name: `Chat with ${agentName}` } }, onAcknowledgeTimeout: () => { openChatInNewTab(); } }); }; const onViewFullProfile = agentId => { window.open(`${window.location.origin}/people/agent/${agentId}`, '_blank', 'noopener, noreferrer'); }; return { onEditAgent, onCopyAgent, onDuplicateAgent, onOpenChat, onConversationStarter, onViewFullProfile }; };