31 lines
1.1 KiB
TypeScript
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;
|
|
}
|