import { waitForAtomic,waitForRecsAtomic } from "./utils/atomic"; async function main() { await waitForAtomic(); const searchInterface: HTMLAtomicSearchInterfaceElement = document.querySelector("#search")!; searchInterface && initSearch(searchInterface); const searchBox: HTMLAtomicSearchInterfaceElement = document.querySelector("#searchbox")!; searchBox && initStandaloneSearchBox(searchBox); // const platformUrl = process.env.PLATFORM_URL!; // const organizationId = process.env.ORGANIZATION_ID!; // const accessToken = process.env.API_KEY!; // await searchInterface.initialize({ // accessToken, // organizationId, // platformUrl, // preprocessRequest: (request, clientOrigin, metadata) => { // if(clientOrigin == "searchApiFetch" && metadata?.method == "search") { // request.url += '&viewAllContent=1'; // var body = JSON.parse(request.body as string); // body.context = { // "user_country_snow": "CZ" // }; // request.body = JSON.stringify(body); // } // return request; // } // }); // searchInterface.executeFirstSearch(); // searchInterface.i18n.addResourceBundle('en', 'translation', { // 'no-results-for': 'No results for {{query}}' // }); // await searchBox.initialize({ // accessToken, // organizationId, // platformUrl, // preprocessRequest: (request, clientOrigin, metadata) => { // if(clientOrigin == "searchApiFetch" && metadata?.method == "search") { // request.url += '&viewAllContent=1'; // var body = JSON.parse(request.body as string); // body.context = { // "user_country_snow": "CZ" // }; // var q = body.q || ""; // var event = new CustomEvent('header/searchbox/query', { // detail: q // }); // window.dispatchEvent(event); // request.body = JSON.stringify(body); // } // return request; // }, // analytics: { // enabled: false // } // }); await waitForRecsAtomic(); const recsInterfaces = Array.from(document.querySelectorAll('atomic-recs-interface')); recsInterfaces.length && initRecs(); } async function initStandaloneSearchBox(searchBox: any){ const platformUrl = process.env.PLATFORM_URL!; const organizationId = process.env.ORGANIZATION_ID!; const accessToken = process.env.API_KEY!; await searchBox.initialize({ accessToken, organizationId, platformUrl, preprocessRequest: (request :any, clientOrigin :any, metadata :any) => { if(clientOrigin == "searchApiFetch" && metadata?.method == "search") { request.url += '&viewAllContent=1'; var body = JSON.parse(request.body as string); body.context = { "user_country_snow": "CZ" }; var q = body.q || ""; var event = new CustomEvent('header/searchbox/query', { detail: q }); window.dispatchEvent(event); request.body = JSON.stringify(body); } return request; }, analytics: { enabled: false } }); } async function initSearch(searchInterface: any){ const platformUrl = process.env.PLATFORM_URL!; const organizationId = process.env.ORGANIZATION_ID!; const accessToken = process.env.API_KEY!; await searchInterface.initialize({ accessToken, organizationId, platformUrl, preprocessRequest: (request :any, clientOrigin :any, metadata :any) => { if(clientOrigin == "searchApiFetch" && metadata?.method == "search") { request.url += '&viewAllContent=1'; var body = JSON.parse(request.body as string); body.context = { "user_country_snow": "CZ" }; request.body = JSON.stringify(body); } return request; }, search: { preprocessSearchResponseMiddleware: (response:any) => { response.body.results.forEach((result:any) => { if(result.raw.snavatar) { result.raw.resultpicture = 'https://abinbevwwdev.service-now.com/'+result.raw.snavatar; } return result; }); return response; }, } }); searchInterface.executeFirstSearch(); } async function initRecs() { const organizationId = process.env.ORGANIZATION_ID!; const accessToken = process.env.API_KEY!; const recsInterface:HTMLAtomicRecsInterfaceElement = document.querySelector('#recs')!; recsInterface.querySelector("recs-initialization-helper")?.setAttribute("user-country","BE"); await recsInterface?.initialize({ accessToken: accessToken, organizationId: organizationId, preprocessRequest: (request, clientOrigin, metadata) => { if(clientOrigin == "searchApiFetch" && metadata?.method == "recommendations") { request.url += '&viewAllContent=1'; var body = JSON.parse(request.body as string); body.context = { "user_country": "CZ", "user_country_snow": "CZ", ...body.context }; request.body = JSON.stringify(body); } return request; } }); //recsInterface?.getRecommendations(); /*await Promise.all( recsInterfaces.map(async (recommendationInterface: { initialize: (arg0: { accessToken: string; organizationId: string; }) => any; getOrganizationEndpoints: (arg0: string) => any; }) => recommendationInterface.initialize({ accessToken: accessToken, organizationId: organizationId }) ) ); const context = { "user_country": "CZ", "context_user_country": "CZ" }; recsInterfaces.forEach((recInterface: { engine: any; getRecommendations: () => void; }) => { const engine = recInterface.engine; engine.dispatch(loadContextActions(engine).setContext(context)); recInterface.getRecommendations(); });*/ } main();