1
0
Fork 0
docsearch/src/useSearchClient.ts
2020-07-21 11:01:02 +02:00

31 lines
1.1 KiB
TypeScript

import algoliasearch from 'algoliasearch/dist/algoliasearch-lite.esm.browser';
import React from 'react';
import { SearchClient } from './types';
import { version } from './version';
export function useSearchClient(
appId: string,
apiKey: string,
transformSearchClient: (searchClient: SearchClient) => SearchClient
): SearchClient {
const searchClient = React.useMemo(() => {
const client = algoliasearch(appId, apiKey);
client.addAlgoliaAgent('docsearch', version);
// Since DocSearch.js relies on DocSearch React with an alias to Preact,
// we cannot add the `docsearch-react` user agent by default, otherwise
// it would also be sent on a DocSearch.js integration.
// We therefore only add the `docsearch-react` user agent if `docsearch.js`
// is not present.
if (
/docsearch.js \(.*\)/.test(client.transporter.userAgent.value) === false
) {
client.addAlgoliaAgent('docsearch-react', version);
}
return transformSearchClient(client);
}, [appId, apiKey, transformSearchClient]);
return searchClient;
}