Skip to content

Commit 0c5ec9e

Browse files
authored
Coveo: Fix bad token initial load (#354)
1 parent 8958fce commit 0c5ec9e

File tree

1 file changed

+33
-55
lines changed

1 file changed

+33
-55
lines changed

assets/js/coveo.js

Lines changed: 33 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -47,78 +47,56 @@ async function getsearchObj() {
4747
return response.json();
4848
}
4949

50-
async function atomicCoveo() {
51-
/* Fetch the credentials */
52-
await customElements.whenDefined('atomic-search-interface');
53-
const token = localStorage.getItem('coveo_jwt_v1');
54-
const org_id = localStorage.getItem('coveo_org_id_v1');
55-
let searchObj = { token, org_id };
56-
57-
if (token === null || org_id === null || isJwtExpired(token)) {
58-
searchObj = await getsearchObj();
59-
localStorage.setItem('coveo_jwt_v1', searchObj.token);
60-
localStorage.setItem('coveo_org_id_v1', searchObj.org_id);
61-
}
62-
63-
/* Initialize the interfaces with credentials */
64-
const searchPageInterface = document.querySelector('#search-v2');
65-
const searchBarHeader = document.querySelector('#search-standalone-header');
66-
const searchBarSidebar = document.querySelector('#search-standalone-sidebar');
67-
68-
if (searchPageInterface) {
69-
await searchPageInterface.initialize({
50+
async function getValidSearchCredentials() {
51+
const accessToken = localStorage.getItem('coveo_jwt_v1');
52+
const organizationId = localStorage.getItem('coveo_org_id_v1');
53+
54+
const needsFetch =
55+
!accessToken || !organizationId || isJwtExpired(accessToken);
56+
57+
if (needsFetch) {
58+
const { token, org_id } = await getsearchObj();
59+
localStorage.setItem('coveo_jwt_v1', token);
60+
localStorage.setItem('coveo_org_id_v1', org_id);
61+
return {
7062
accessToken: token,
7163
organizationId: org_id,
72-
analytics: { analyticsMode: 'legacy' },
73-
preprocessRequest: (request) => {
74-
const body = JSON.parse(request.body);
75-
body.q = `<@- ${body.q} -@>`;
76-
request.body = JSON.stringify(body);
77-
78-
return request;
79-
},
80-
});
81-
await searchPageInterface.executeFirstSearch();
64+
};
8265
}
8366

84-
/* Initialize the header searchbar */
85-
if (searchBarHeader) {
86-
await searchBarHeader.initialize({
87-
accessToken: token,
88-
organizationId: org_id,
89-
analytics: { analyticsMode: 'legacy' },
90-
preprocessRequest: (request) => {
91-
const body = JSON.parse(request.body);
92-
body.q = `<@- ${body.q} -@>`;
93-
request.body = JSON.stringify(body);
67+
return {
68+
accessToken,
69+
organizationId,
70+
};
71+
}
9472

95-
return request;
96-
},
97-
});
73+
async function atomicCoveo() {
74+
await customElements.whenDefined('atomic-search-interface');
75+
const credentials = await getValidSearchCredentials();
9876

99-
await searchBarHeader.executeFirstSearch();
100-
}
77+
const interfaces = [
78+
document.querySelector('#search-v2'),
79+
document.querySelector('#search-standalone-header'),
80+
document.querySelector('#search-standalone-sidebar'),
81+
].filter(Boolean);
10182

102-
/* Initialize the sidebar searchbar */
103-
if (searchBarSidebar) {
104-
await searchBarSidebar.initialize({
105-
accessToken: token,
106-
organizationId: org_id,
83+
for (const el of interfaces) {
84+
await el.initialize({
85+
...credentials,
10786
analytics: { analyticsMode: 'legacy' },
10887
preprocessRequest: (request) => {
10988
const body = JSON.parse(request.body);
11089
body.q = `<@- ${body.q} -@>`;
11190
request.body = JSON.stringify(body);
112-
11391
return request;
11492
},
11593
});
116-
117-
await searchBarSidebar.executeFirstSearch();
94+
await el.executeFirstSearch();
11895
}
11996

120-
if (searchBarHeader?.shadowRoot) {
121-
hideShadowElement(searchBarHeader.shadowRoot, 'atomic-relevance-inspector');
97+
const headerSearchBar = document.querySelector('#search-standalone-header');
98+
if (headerSearchBar?.shadowRoot) {
99+
hideShadowElement(headerSearchBar.shadowRoot, 'atomic-relevance-inspector');
122100
}
123101
}
124102

0 commit comments

Comments
 (0)