feat(每日充值): 优化初始化数据的接口调用

This commit is contained in:
hzj 2026-05-23 19:36:28 +08:00
parent 6624db0a7c
commit 918bd1b484

View File

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