UNPKG

@lableb/javascript-sdk

Version:

Lableb cloud search client for javascript

54 lines (41 loc) 2.02 kB
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), })) } } }