@lableb/javascript-sdk
Version:
Lableb cloud search client for javascript
54 lines (41 loc) • 2.02 kB
text/typescript
import { GlobalRequestOptions } from "../../request/main/main.request.type";
import { RecommendRequestParams } from "../../request/recommend/recommend.request.type";
import { customIdentity, customPickBy } from "../../utils";
import { LablebAPIResponseWrapper } from "../lableb-client/lableb-client.type";
import { RecommendResponse, RecommendResponseWithFeedback } from "./recommend.type";
export function injectFeedbackDataIntoRecommendResponse({
globalOptions,
recommendOptions,
recommendResponse
}: {
recommendOptions: RecommendRequestParams,
recommendResponse: LablebAPIResponseWrapper<RecommendResponse>,
globalOptions: GlobalRequestOptions
}): LablebAPIResponseWrapper<RecommendResponseWithFeedback> {
return {
...recommendResponse,
response: {
...recommendResponse.response,
results: recommendResponse.response.results.map((document, index) => ({
...document,
feedback: customPickBy({
sourceId: recommendOptions.id,
targetId: document.id,
sourceTitle: recommendOptions.title,
targetTitle: document.title,
sourceUrl: recommendOptions.url,
targetUrl: document.url,
itemOrder: index,
userCountry: recommendOptions.userCountry || globalOptions.userCountry,
userId: recommendOptions.userId || globalOptions.userId,
userIp: recommendOptions.userIp || globalOptions.userIp,
sessionId:
recommendOptions.sessionId ||
(recommendOptions.sessionIdGenerator ? recommendOptions.sessionIdGenerator() : undefined) ||
globalOptions.sessionId ||
(globalOptions.sessionIdGenerator ? globalOptions.sessionIdGenerator() : undefined),
}, customIdentity),
}))
}
}
}