Skip to content

Commit

Permalink
Wait before presenting link info from monitor hook
Browse files Browse the repository at this point in the history
* Wait for DOM before monitor hook trying to print out link information

* Switched to timer instead

* Making sure storage is available if getLinkDetails is called prior to component creation
  • Loading branch information
liljenback authored Aug 14, 2024
1 parent 08fd985 commit c9400f2
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 14 deletions.
15 changes: 9 additions & 6 deletions sandbox/public/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,16 @@
console.log("Alloy Instance Configured");
console.log(JSON.stringify(data.config, null, 2));
const { getLinkDetails } = data;

const listOfLinks = document.links;

for (var i = 0; i < listOfLinks.length; i++) {
const linkDetails = getLinkDetails(listOfLinks[i]);
console.log("link details", linkDetails);
}
setTimeout(async function () {
console.log(
`Will now print link details for ${listOfLinks.length} links`,
);
for (var i = 0; i < listOfLinks.length; i++) {
const linkDetails = getLinkDetails(listOfLinks[i]);
console.log("link details", linkDetails);
}
}, 1000);
},
});
</script>
Expand Down
26 changes: 18 additions & 8 deletions src/components/ActivityCollector/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,18 @@ const getClickedElementProperties = createGetClickedElementProperties({
});

let clickActivityStorage;
const initClickActivityStorage = (config) => {
if (!clickActivityStorage) {
const createNamespacedStorage = injectStorage(window);
const nameSpacedStorage = createNamespacedStorage(config.orgId || "");
// Use transient in-memory if sessionStorage is disabled
const transientStorage = createTransientStorage();
const storage = config.clickCollection.sessionStorageEnabled
? nameSpacedStorage.session
: transientStorage;
clickActivityStorage = createClickActivityStorage({ storage });
}
};

const createActivityCollector = ({
config,
Expand All @@ -44,14 +56,9 @@ const createActivityCollector = ({
logger,
}) => {
const clickCollection = config.clickCollection;
const createNamespacedStorage = injectStorage(window);
const nameSpacedStorage = createNamespacedStorage(config.orgId || "");
// Use transient in-memory if sessionStorage is disabled
const transientStorage = createTransientStorage();
const storage = clickCollection.sessionStorageEnabled
? nameSpacedStorage.session
: transientStorage;
clickActivityStorage = createClickActivityStorage({ storage });
if (!clickActivityStorage) {
initClickActivityStorage(config);
}
const injectClickedElementProperties = createInjectClickedElementProperties({
config,
logger,
Expand Down Expand Up @@ -100,6 +107,9 @@ createActivityCollector.buildOnInstanceConfiguredExtraParams = ({
config,
logger,
}) => {
if (!clickActivityStorage) {
initClickActivityStorage(config);
}
return {
getLinkDetails: (targetElement) => {
return getClickedElementProperties({
Expand Down

0 comments on commit c9400f2

Please sign in to comment.