mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
UX: Use discourse-ready as a baseline for removing the splash (#17297)
We previously used the window load event as a target to remove the splash. The issue with that is that it means we wait for images to download before we remove the splash. Ember has a better method that we can use ready(). This PR triggers a custom discourse-ready when that happens and uses that as the baseline for removing the splash. This PR also adds three new performance marks. discourse-ready, discourse-splash-visible, and discourse-splash-removed These will help us keep track of performance. Internal topic /t/65378/81
This commit is contained in:
parent
caa0247f5c
commit
adb7fa5e2f
@ -86,6 +86,12 @@ const Discourse = Application.extend({
|
|||||||
_registerPluginCode(version, code) {
|
_registerPluginCode(version, code) {
|
||||||
_pluginCallbacks.push({ version, code });
|
_pluginCallbacks.push({ version, code });
|
||||||
},
|
},
|
||||||
|
|
||||||
|
ready() {
|
||||||
|
performance.mark("discourse-ready");
|
||||||
|
const event = new CustomEvent("discourse-ready");
|
||||||
|
document.dispatchEvent(event);
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
function moduleThemeId(moduleName) {
|
function moduleThemeId(moduleName) {
|
||||||
|
@ -109,7 +109,7 @@
|
|||||||
const targetTime = connectStart + DELAY_TARGET;
|
const targetTime = connectStart + DELAY_TARGET;
|
||||||
|
|
||||||
let splashInterval;
|
let splashInterval;
|
||||||
let windowLoaded;
|
let discourseReady;
|
||||||
|
|
||||||
const swapSplash = () => {
|
const swapSplash = () => {
|
||||||
splashWrapper?.style.setProperty("--animation-state", "running");
|
splashWrapper?.style.setProperty("--animation-state", "running");
|
||||||
@ -119,6 +119,8 @@
|
|||||||
"--animation-state: running;"
|
"--animation-state: running;"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
performance.mark("discourse-splash-visible");
|
||||||
|
|
||||||
clearSplashInterval();
|
clearSplashInterval();
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -129,7 +131,7 @@
|
|||||||
|
|
||||||
(() => {
|
(() => {
|
||||||
splashInterval = setInterval(() => {
|
splashInterval = setInterval(() => {
|
||||||
if (windowLoaded) {
|
if (discourseReady) {
|
||||||
clearSplashInterval();
|
clearSplashInterval();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -139,11 +141,12 @@
|
|||||||
}, POLLING_INTERVAL);
|
}, POLLING_INTERVAL);
|
||||||
})();
|
})();
|
||||||
|
|
||||||
window.addEventListener(
|
document.addEventListener(
|
||||||
"load",
|
"discourse-ready",
|
||||||
() => {
|
() => {
|
||||||
windowLoaded = true;
|
discourseReady = true;
|
||||||
splashWrapper?.remove();
|
splashWrapper?.remove();
|
||||||
|
performance.mark("discourse-splash-removed");
|
||||||
},
|
},
|
||||||
{ once: true }
|
{ once: true }
|
||||||
);
|
);
|
||||||
|
Loading…
Reference in New Issue
Block a user