From 09e6309edd50a866bb6f31b7e7c36b25ba45c8b2 Mon Sep 17 00:00:00 2001 From: Jack Hickey <133868041+nginx-jack@users.noreply.github.com> Date: Wed, 20 Aug 2025 15:20:45 +0100 Subject: [PATCH] Coveo: Fix bad token initial load --- assets/js/coveo.js | 88 +++++++++++++++++----------------------------- 1 file changed, 33 insertions(+), 55 deletions(-) diff --git a/assets/js/coveo.js b/assets/js/coveo.js index 9cf5aa4b..261ef70a 100644 --- a/assets/js/coveo.js +++ b/assets/js/coveo.js @@ -47,78 +47,56 @@ async function getsearchObj() { return response.json(); } -async function atomicCoveo() { - /* Fetch the credentials */ - await customElements.whenDefined('atomic-search-interface'); - const token = localStorage.getItem('coveo_jwt_v1'); - const org_id = localStorage.getItem('coveo_org_id_v1'); - let searchObj = { token, org_id }; - - if (token === null || org_id === null || isJwtExpired(token)) { - searchObj = await getsearchObj(); - localStorage.setItem('coveo_jwt_v1', searchObj.token); - localStorage.setItem('coveo_org_id_v1', searchObj.org_id); - } - - /* Initialize the interfaces with credentials */ - const searchPageInterface = document.querySelector('#search-v2'); - const searchBarHeader = document.querySelector('#search-standalone-header'); - const searchBarSidebar = document.querySelector('#search-standalone-sidebar'); - - if (searchPageInterface) { - await searchPageInterface.initialize({ +async function getValidSearchCredentials() { + const accessToken = localStorage.getItem('coveo_jwt_v1'); + const organizationId = localStorage.getItem('coveo_org_id_v1'); + + const needsFetch = + !accessToken || !organizationId || isJwtExpired(accessToken); + + if (needsFetch) { + const { token, org_id } = await getsearchObj(); + localStorage.setItem('coveo_jwt_v1', token); + localStorage.setItem('coveo_org_id_v1', org_id); + return { accessToken: token, organizationId: org_id, - analytics: { analyticsMode: 'legacy' }, - preprocessRequest: (request) => { - const body = JSON.parse(request.body); - body.q = `<@- ${body.q} -@>`; - request.body = JSON.stringify(body); - - return request; - }, - }); - await searchPageInterface.executeFirstSearch(); + }; } - /* Initialize the header searchbar */ - if (searchBarHeader) { - await searchBarHeader.initialize({ - accessToken: token, - organizationId: org_id, - analytics: { analyticsMode: 'legacy' }, - preprocessRequest: (request) => { - const body = JSON.parse(request.body); - body.q = `<@- ${body.q} -@>`; - request.body = JSON.stringify(body); + return { + accessToken, + organizationId, + }; +} - return request; - }, - }); +async function atomicCoveo() { + await customElements.whenDefined('atomic-search-interface'); + const credentials = await getValidSearchCredentials(); - await searchBarHeader.executeFirstSearch(); - } + const interfaces = [ + document.querySelector('#search-v2'), + document.querySelector('#search-standalone-header'), + document.querySelector('#search-standalone-sidebar'), + ].filter(Boolean); - /* Initialize the sidebar searchbar */ - if (searchBarSidebar) { - await searchBarSidebar.initialize({ - accessToken: token, - organizationId: org_id, + for (const el of interfaces) { + await el.initialize({ + ...credentials, analytics: { analyticsMode: 'legacy' }, preprocessRequest: (request) => { const body = JSON.parse(request.body); body.q = `<@- ${body.q} -@>`; request.body = JSON.stringify(body); - return request; }, }); - - await searchBarSidebar.executeFirstSearch(); + await el.executeFirstSearch(); } - if (searchBarHeader?.shadowRoot) { - hideShadowElement(searchBarHeader.shadowRoot, 'atomic-relevance-inspector'); + const headerSearchBar = document.querySelector('#search-standalone-header'); + if (headerSearchBar?.shadowRoot) { + hideShadowElement(headerSearchBar.shadowRoot, 'atomic-relevance-inspector'); } }