docbrown/app/assets/javascripts/initializePage.js
Fernando Valverde 8341c5a5dd
Fix JS error when window.Forem.runtime is not available yet (#19007)
* Add retry with timeout if window.Forem.runtime is not available

* Refactor asset pipeline initializer into webpack bundle

* Remove leftover comment

* Fix CodeQL issue

* Revert Regexp interpolation

* Revert regexp interpolation without verify

* Remove problematic Regexp marked as dangerous by CodeQL
2023-02-03 05:57:49 -06:00

73 lines
2.2 KiB
JavaScript

/*
global initializeLocalStorageRender, initializeBodyData,
initializeAllTagEditButtons, initializeUserFollowButts,
initializeCommentsPage,
initializeArticleDate, initializeArticleReactions, initNotifications,
initializeCommentDate, initializeSettings,
initializeCommentPreview, initializeRuntimeBanner,
initializeTimeFixer, initializeDashboardSort,
initializeArchivedPostFilter, initializeCreditsPage,
initializeProfileInfoToggle, initializeDrawerSliders,
initializeProfileBadgesToggle, initializeHeroBannerClose,
initializeOnboardingTaskCard, initScrolling, nextPage:writable,
fetching:writable, done:writable, initializePaymentPointers,
initializeBroadcast, initializeDateHelpers
*/
function callInitializers() {
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();
initializeDisplayAdVisibility();
if (document.getElementById('sidebar-additional')) {
document.getElementById('sidebar-additional').classList.add('showing');
}
}
}, 1);
callInitializers();
function freezeScrolling(event) {
event.preventDefault();
}
nextPage = 0;
fetching = false;
done = false;
setTimeout(function undone() {
done = false;
}, 300);
if (!initScrolling.called) {
initScrolling();
}
}