From 89cef852820e9b96e7bdaee43a3ab5a2831ddf58 Mon Sep 17 00:00:00 2001 From: marzban-dev Date: Wed, 16 Apr 2025 22:31:54 +0330 Subject: [PATCH] Implement critical load if the showcase load is too long --- frontend/components/global/LoadingOverlay.vue | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/frontend/components/global/LoadingOverlay.vue b/frontend/components/global/LoadingOverlay.vue index 1898efd..0421860 100644 --- a/frontend/components/global/LoadingOverlay.vue +++ b/frontend/components/global/LoadingOverlay.vue @@ -9,6 +9,7 @@ const isSiteLoadingDisabled = useCookie("is-site-loading-disabled", { const shouldRenderLoadingOverlay = ref(true); const isAssetLoaded = ref(false); +const criticalLoad = ref(true); const progressInterval = ref(null); const assetLoadingProgress = ref(10); @@ -26,6 +27,7 @@ const progressStyle = computed(() => { // methods const onAssetLoaded = () => { + criticalLoad.value = false; clearInterval(progressInterval.value!); assetLoadingProgress.value = 100; isAssetLoaded.value = true; @@ -42,6 +44,14 @@ const onAssetFinished = () => { }); }; +// watch + +watch([assetLoadingProgress, criticalLoad], ([assetLoadingProgress, criticalLoad]) => { + if (criticalLoad && assetLoadingProgress >= 100) { + onAssetFinished(); + } +}); + // lifecycle onMounted(() => { @@ -58,7 +68,7 @@ onMounted(() => { progressInterval.value = setInterval(() => { assetLoadingProgress.value += Math.random() * 10; - }, 500); + }, 250); gsap.to("#loading-overlay", { opacity: 1, @@ -76,9 +86,15 @@ onMounted(() => { class="flex-col-center gap-6 transition-all duration-450 ease-in-out" :class="isAssetLoaded ? 'opacity-0 scale-75' : 'opacity-100 scale-100'" > - +
-
+