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 } }