From 918bd1b484fe874aaa3042769d0ce7be3288a15a Mon Sep 17 00:00:00 2001 From: hzj <1304805162@qq.com> Date: Sat, 23 May 2026 19:36:28 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=AF=8F=E6=97=A5=E5=85=85=E5=80=BC):=20?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=88=9D=E5=A7=8B=E5=8C=96=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=9A=84=E6=8E=A5=E5=8F=A3=E8=B0=83=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/Activities/DailyRecharge/index.vue | 52 ++++++++++++++++---- 1 file changed, 42 insertions(+), 10 deletions(-) diff --git a/src/views/Activities/DailyRecharge/index.vue b/src/views/Activities/DailyRecharge/index.vue index 85283d3..fe7e007 100644 --- a/src/views/Activities/DailyRecharge/index.vue +++ b/src/views/Activities/DailyRecharge/index.vue @@ -876,6 +876,7 @@ const mainRewardVapRenderKey = computed(() => { return `${mainRewardRenderKey.value}-vap-${mainRewardVapRetryVersion.value}` }) let pageInitializationStarted = false +let pageInitializationPromise = null const isLocalRewardAsset = (reward) => { return Boolean(reward?.localRewardAsset) @@ -1106,8 +1107,13 @@ const initData = async () => { console.error('Failed to initialize daily recharge activity rewards:', rewardResult.reason) } - if (taskResult.status === 'rejected' && rewardResult.status === 'rejected') { - throw taskResult.reason || rewardResult.reason + if (taskResult.status === 'rejected') { + throw taskResult.reason + } + + return { + taskSuccess: true, + rewardSuccess: rewardResult.status === 'fulfilled', } } @@ -1144,9 +1150,16 @@ const preloadCriticalImages = async () => { const completePreloading = async () => { try { await initData() - await preloadCriticalImages() + pageInitializationStarted = true + try { + await preloadCriticalImages() + } catch (preloadError) { + console.warn('Daily recharge critical assets preload failed:', preloadError) + } + return true } catch (error) { console.error('棰勫姞杞借繃绋嬩腑鍙戠敓閿欒:', error) + return false } finally { isLoading.value = false queueRewardVapPreload(activityRewards.value) @@ -1155,19 +1168,38 @@ const completePreloading = async () => { const startPageInitialization = async () => { if (pageInitializationStarted) { - return + return true } - pageInitializationStarted = true - await completePreloading() + if (pageInitializationPromise) { + return pageInitializationPromise + } + + pageInitializationPromise = completePreloading().finally(() => { + pageInitializationPromise = null + }) + + return pageInitializationPromise } const connectToAppHandler = async () => { - const result = await connectToApp(async () => { - await startPageInitialization() - }) + try { + await runWithRetry(async () => { + const result = await connectToApp(async () => { + const initialized = await startPageInitialization() + if (!initialized) { + throw new Error('Daily recharge initialization failed') + } + }) - if (!result?.success) { + if (!result?.success) { + throw new Error(result?.error || 'APP connection failed') + } + + return result + }, 2, 1200) + } catch (error) { + console.error('Daily recharge connection or initialization failed:', error) isLoading.value = false } }