Skip to content

Commit b542705

Browse files
committed
refactor(search): adopt Typesense client types across the UI
1 parent dd8b240 commit b542705

4 files changed

Lines changed: 33 additions & 24 deletions

File tree

packages/docsearch-react/src/DocSearch.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -229,8 +229,8 @@ export interface DocSearchProps {
229229
* Hook to wrap or modify the algolia search client.
230230
*/
231231
transformSearchClient?: (
232-
searchClient: DocSearchTransformClient
233-
) => DocSearchTransformClient;
232+
searchClient: TypesenseDocsearchTransformClient
233+
) => TypesenseDocsearchTransformClient;
234234
/**
235235
* Disable storage and usage of recent and favorite searches.
236236
*/

packages/docsearch-react/src/ScreenState.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ export interface ScreenStateProps<TItem extends BaseItem>
4141
canHandleAskAi: boolean;
4242
inputRef: React.MutableRefObject<HTMLInputElement | null>;
4343
hitComponent: DocSearchProps['hitComponent'];
44-
indexName: DocSearchProps['indexName'];
44+
indexName: DocSearchProps['typesenseCollectionName'];
4545
messages: UseChatHelpers<AIMessage>['messages'];
4646
status: UseChatHelpers<AIMessage>['status'];
4747
askAiError?: Error;

packages/docsearch-react/src/useSearchClient.ts

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@ import type { SearchResponses } from 'algoliasearch/lite';
22
import React from 'react';
33
import { SearchClient as TypesenseSearchClient } from 'typesense';
44
import type { ConfigurationOptions as TypesenseConfigurationOptions } from 'typesense/lib/Typesense/Configuration';
5-
import type { SearchResponse as TypesenseSearchResponse, DocumentSchema } from 'typesense/lib/Typesense/Documents';
5+
import type {
6+
SearchResponse as TypesenseSearchResponse,
7+
DocumentSchema,
8+
} from 'typesense/lib/Typesense/Documents';
69
import type { MultiSearchRequestSchema } from 'typesense/lib/Typesense/Types';
710
import { SearchResponseAdapter as TypesenseSearchResponseAdapter } from 'typesense-instantsearch-adapter/lib/SearchResponseAdapter';
811

@@ -40,8 +43,10 @@ type AdaptedHit<T extends DocumentSchema> = T & {
4043
};
4144

4245
export function useSearchClient(
43-
transformSearchClient: (searchClient: TypesenseDocsearchTransformClient) => TypesenseDocsearchTransformClient,
44-
typesenseServerConfig: TypesenseConfigurationOptions,
46+
transformSearchClient: (
47+
searchClient: TypesenseDocsearchTransformClient
48+
) => TypesenseDocsearchTransformClient,
49+
typesenseServerConfig: TypesenseConfigurationOptions
4550
): TypesenseDocsearchTransformClient {
4651
const searchClient = React.useMemo(() => {
4752
const typesense = new TypesenseSearchClient(typesenseServerConfig);
@@ -60,21 +65,23 @@ export function useSearchClient(
6065
const response = await typesense.multiSearch.perform<[T]>({
6166
searches: [request],
6267
});
63-
const typesenseSearchResponseAdapter = new TypesenseSearchResponseAdapter(
64-
response.results[0],
65-
{
66-
params: {
67-
...request,
68-
highlightPreTag: '<mark>',
69-
highlightPostTag: '</mark>',
68+
const typesenseSearchResponseAdapter =
69+
new TypesenseSearchResponseAdapter(
70+
response.results[0],
71+
{
72+
params: {
73+
...request,
74+
highlightPreTag: '<mark>',
75+
highlightPostTag: '</mark>',
76+
},
7077
},
71-
},
72-
{
73-
geoLocationField: '',
74-
},
75-
);
78+
{
79+
geoLocationField: '',
80+
}
81+
);
7682

77-
const adapted: AdaptedSearchResponse<T> = typesenseSearchResponseAdapter.adapt();
83+
const adapted: AdaptedSearchResponse<T> =
84+
typesenseSearchResponseAdapter.adapt();
7885

7986
return {
8087
results: [

packages/docsearch-react/src/useSuggestedQuestions.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ import { useEffect, useState } from 'react';
33

44
import { SUGGESTED_QUETIONS_INDEX_NAME } from './constants';
55

6-
import type { DocSearchTransformClient, SuggestedQuestion, SuggestedQuestionHit } from '.';
6+
import type { SuggestedQuestion, SuggestedQuestionHit, TypesenseDocsearchTransformClient } from '.';
77

88
type UseSuggestedQuestionsProps = {
99
assistantId: string | null;
10-
searchClient: DocSearchTransformClient;
10+
searchClient: TypesenseDocsearchTransformClient;
1111
suggestedQuestionsEnabled?: boolean;
1212
};
1313

@@ -19,13 +19,15 @@ export const useSuggestedQuestions = ({
1919
const [suggestedQuestions, setSuggestedQuestions] = useState<SuggestedQuestionHit[]>([]);
2020

2121
useEffect(() => {
22+
// eslint-disable-next-line no-warning-comments
23+
// TODO: add typesense search parameters
2224
const getSuggestedQuestions = async (): Promise<void> => {
2325
const { results } = await searchClient.search<SuggestedQuestion>({
2426
requests: [
2527
{
26-
indexName: SUGGESTED_QUETIONS_INDEX_NAME,
27-
filters: `state:published AND assistantId:${assistantId}`,
28-
hitsPerPage: 3,
28+
collection: SUGGESTED_QUETIONS_INDEX_NAME,
29+
filter_by: `state:published && assistantId:${assistantId}`,
30+
per_page: 3,
2931
},
3032
],
3133
});

0 commit comments

Comments
 (0)