docbrown/app/assets/javascripts/initializePage.js
Joshua Wehner 98077a8df6
DisplayAdEvent tracking changes (#18460)
* Make user_id optional for DisplayAdEvent

* Track when DisplayAd is visible to user

* Tidy up a bit

* Deleting a user account should nullify related DisplayAdEvents

* Update tests with new association details
2022-09-26 16:33:03 +02:00

80 lines
2.5 KiB
JavaScript

/*
global initializeLocalStorageRender, initializeBodyData,
initializeAllTagEditButtons, initializeUserFollowButts,
initializeBaseTracking, initializeCommentsPage,
initializeArticleDate, initializeArticleReactions, initNotifications,
initializeCommentDate, initializeSettings,
initializeCommentPreview, initializeRuntimeBanner,
initializeTimeFixer, initializeDashboardSort,
initializeArchivedPostFilter, initializeCreditsPage,
initializeProfileInfoToggle, initializePodcastPlayback,
initializeVideoPlayback, initializeDrawerSliders, initializeProfileBadgesToggle,
initializeHeroBannerClose, initializeOnboardingTaskCard, initScrolling,
nextPage:writable, fetching:writable, done:writable,
initializePaymentPointers, initializeBroadcast, initializeDateHelpers
*/
function callInitializers() {
initializeBaseTracking();
initializePaymentPointers();
initializeCommentsPage();
initializeArticleDate();
initializeArticleReactions();
initNotifications();
initializeCommentDate();
initializeSettings();
initializeCommentPreview();
initializeTimeFixer();
initializeDashboardSort();
initializeArchivedPostFilter();
initializeCreditsPage();
initializeProfileInfoToggle();
initializeProfileBadgesToggle();
initializeDrawerSliders();
initializeHeroBannerClose();
initializeOnboardingTaskCard();
initializeDateHelpers();
}
function initializePage() {
initializeLocalStorageRender();
initializeBodyData();
var waitingForDataLoad = setInterval(function wait() {
if (document.body.getAttribute('data-loaded') === 'true') {
clearInterval(waitingForDataLoad);
if (document.body.getAttribute('data-user-status') === 'logged-in') {
initializeBaseUserData();
initializeAllTagEditButtons();
}
initializeBroadcast();
initializeReadingListIcons();
initializeSponsorshipVisibility();
initializeDisplayAdVisibility();
if (document.getElementById('sidebar-additional')) {
document.getElementById('sidebar-additional').classList.add('showing');
}
initializePodcastPlayback();
initializeVideoPlayback();
// Initialize data-runtime context to the body data-attribute
document.body.dataset.runtime = window.Forem.Runtime.currentContext();
}
}, 1);
callInitializers();
function freezeScrolling(event) {
event.preventDefault();
}
nextPage = 0;
fetching = false;
done = false;
setTimeout(function undone() {
done = false;
}, 300);
if (!initScrolling.called) {
initScrolling();
}
}