UNPKG

@atlaskit/global-search

Version:

A cross-product search component (batteries included)

68 lines (64 loc) 2.14 kB
import { AnalyticsType } from '../model/Result'; import configureSearchClients from './configureSearchClients'; import { EMPTY_CROSS_PRODUCT_SEARCH_RESPONSE } from './CrossProductSearchClient'; import { mapJiraItemToResult } from './JiraItemMapper'; import { Scope } from './types'; const prefetchConfluence = async confluenceClient => { // based on https://github.com/microsoft/TypeScript/issues/34925 const [objects, spaces] = await Promise.all([confluenceClient.getRecentItems(), confluenceClient.getRecentSpaces()]); return { objects: { items: objects, totalSize: objects.length }, spaces: { items: spaces, totalSize: spaces.length }, people: { items: [], totalSize: 0 } }; }; const prefetchJira = async crossProductSearchClient => { const { results } = await crossProductSearchClient.getRecentItems({ context: 'jira', modelParams: [], resultLimit: 250, mapItemToResult: (_, item) => mapJiraItemToResult(AnalyticsType.RecentJira)(item) }); return results; }; export const getConfluencePrefetchedData = (cloudId, confluenceUrl) => { const config = confluenceUrl ? { confluenceUrl } : {}; const { confluenceClient, crossProductSearchClient } = configureSearchClients(cloudId, config, false); // Pre-call the relevant endpoints to cache the results return { confluenceRecentItemsPromise: prefetchConfluence(confluenceClient), abTestPromise: { [Scope.ConfluencePageBlogAttachment]: crossProductSearchClient.getAbTestData(Scope.ConfluencePageBlogAttachment) }, crossProductRecentItemsPromise: Promise.resolve(EMPTY_CROSS_PRODUCT_SEARCH_RESPONSE.results) }; }; export const getJiraPrefetchedData = (cloudId, isUserAnonymous, jiraUrl) => { const config = jiraUrl ? { jiraUrl } : {}; const { crossProductSearchClient } = configureSearchClients(cloudId, config, isUserAnonymous); return { crossProductRecentItemsPromise: prefetchJira(crossProductSearchClient), abTestPromise: { [Scope.JiraIssue]: crossProductSearchClient.getAbTestData(Scope.JiraIssue) } }; };