Skip to content

Commit 7ea330f

Browse files
committed
Refactor sidekick experiment loader
Make toggleExp async and centralize the experimentation module URL (DA_EXP). Cache the imported module in expMod to avoid repeated imports and call its default export when needed. Replace the previous defined flag and promise-based import with await-based logic, and simplify initialization by using an immediately-invoked async function that attaches the event listener if the aem-sidekick element is present (removing the sidekick-ready fallback).
1 parent f7d1ee9 commit 7ea330f

File tree

1 file changed

+14
-16
lines changed

1 file changed

+14
-16
lines changed

scripts/sidekick.js

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,20 @@
1-
let defined;
1+
let expMod;
2+
const DA_EXP = 'https://da.live/nx/public/plugins/exp/exp.js';
23

3-
function toggleExp() {
4-
if (defined) {
5-
defined.remove();
6-
defined = undefined;
4+
async function toggleExp() {
5+
const exists = document.querySelector('#aem-sidekick-exp');
6+
7+
if (!exists) {
8+
expMod = await import(DA_EXP);
79
return;
810
}
9-
import('https://da.live/nx/public/plugins/exp/exp.js').then((mod) => {
10-
defined = mod;
11-
});
11+
12+
if (!expMod) expMod = await import(DA_EXP);
13+
expMod.default();
1214
}
1315

14-
const sk = document.querySelector('aem-sidekick');
15-
if (sk) {
16+
(async function sidekick() {
17+
const sk = document.querySelector('aem-sidekick');
18+
if (!sk) return;
1619
sk.addEventListener('custom:experimentation', toggleExp);
17-
} else {
18-
document.addEventListener('sidekick-ready', () => {
19-
document.querySelector('aem-sidekick')
20-
.addEventListener('custom:experimentation', toggleExp);
21-
}, { once: true });
22-
}
20+
}());

0 commit comments

Comments
 (0)