@atlaskit/global-search
Version:
A cross-product search component (batteries included)
68 lines (64 loc) • 2.14 kB
JavaScript
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)
}
};
};