@lableb/javascript-sdk
Version:
Lableb cloud search client for javascript
48 lines (38 loc) • 1.92 kB
text/typescript
import { AutocompleteRequestParams } from "../../request/autocomplete/autocomplete.request.type";
import { GlobalRequestOptions } from "../../request/main/main.request.type";
import { customIdentity, customPickBy } from "../../utils";
import { LablebAPIResponseWrapper } from "../lableb-client/lableb-client.type";
import { AutocompleteResponse, AutocompleteResponseWithFeedback } from "./autocomplete.type";
export function injectFeedbackDataIntoAutocompleteResponse({
autocompleteOptions,
globalOptions,
autocompleteResponse,
}: {
autocompleteOptions: AutocompleteRequestParams,
autocompleteResponse: LablebAPIResponseWrapper<AutocompleteResponse>,
globalOptions: GlobalRequestOptions,
}): LablebAPIResponseWrapper<AutocompleteResponseWithFeedback> {
return {
...autocompleteResponse,
response: {
...autocompleteResponse.response,
results: autocompleteResponse.response.results.map((document, index) => ({
...document,
feedback: customPickBy({
query: autocompleteOptions.query,
itemId: document.id,
itemOrder: index,
url: document.url,
userCountry: autocompleteOptions.userCountry || globalOptions.userCountry,
userId: autocompleteOptions.userId || globalOptions.userId,
userIp: autocompleteOptions.userIp || globalOptions.userIp,
sessionId:
autocompleteOptions.sessionId ||
(autocompleteOptions.sessionIdGenerator ? autocompleteOptions.sessionIdGenerator() : undefined) ||
globalOptions.sessionId ||
(globalOptions.sessionIdGenerator ? globalOptions.sessionIdGenerator() : undefined),
}, customIdentity),
}))
}
}
}