UNPKG

@atlaskit/global-search

Version:

A cross-product search component (batteries included)

85 lines (78 loc) 2.9 kB
import { ResultType } from '../model/Result'; export const DEFAULT_GAS_SOURCE = 'globalSearchDrawer'; export const DEFAULT_GAS_CHANNEL = 'fabric-elements'; export const DEFAULT_GAS_ATTRIBUTES = { packageName: 'global-search', packageVersion: '0.0.0', componentName: 'GlobalQuickSearch' }; export const GLOBAL_SEARCH_SCREEN_NAME = 'globalSearchDrawer'; export const sanitizeSearchQuery = query => { return (query || '').replace(/\s+/g, ' ').trim(); }; export const sanitizeContainerId = containerId => { const trimmedContainerId = (containerId || '').trim(); return trimmedContainerId.startsWith('~') ? 'UNAVAILABLE' : trimmedContainerId; }; function mapResultsToShownSection(results) { return { sectionId: results[0].resultType, results: results.map(mapResultToShownResult) }; } function mapResultToShownResult(result) { if (result.resultType === ResultType.ConfluenceObjectResult) { const confluenceResult = result; return { resultContentId: result.resultId, resultType: confluenceResult.contentType, containerId: sanitizeContainerId(confluenceResult.containerId), isRecentResult: !!result.isRecentResult }; } else if (result.resultType === ResultType.JiraObjectResult) { const jiraResult = result; return { resultContentId: result.resultId, resultType: jiraResult.contentType, containerId: sanitizeContainerId(jiraResult.containerId) }; } return { resultContentId: result.resultId }; } /** * @param resultsArrays an ordered array of Result arrays, passed as arguments */ export function buildShownEventDetails(...resultsArrays) { const sectionsWithContent = resultsArrays.filter(section => section.length > 0); const totalResultCount = resultsArrays.reduce((prev, curr) => prev + curr.length, 0); return { resultCount: totalResultCount, resultSectionCount: sectionsWithContent.length, resultContext: sectionsWithContent.map(mapResultsToShownSection) }; } export let Screen; (function (Screen) { Screen["PRE_QUERY"] = "GlobalSearchPreQueryDrawer"; Screen["POST_QUERY"] = "GlobalSearchPostQueryDrawer"; })(Screen || (Screen = {})); export function buildScreenEvent(screen, timesViewed, searchSessionId, referralContextIdentifiers) { return { action: 'viewed', actionSubject: GLOBAL_SEARCH_SCREEN_NAME, eventType: 'screen', source: DEFAULT_GAS_SOURCE, name: DEFAULT_GAS_SOURCE, attributes: { subscreen: screen, timesViewed: timesViewed, searchSessionId: searchSessionId, searchReferrerId: referralContextIdentifiers && referralContextIdentifiers.searchReferrerId, currentContentId: referralContextIdentifiers && referralContextIdentifiers.currentContentId, currentContainerId: referralContextIdentifiers && referralContextIdentifiers.currentContainerId, ...DEFAULT_GAS_ATTRIBUTES } }; }