fix(每日充值活动): 修复动效有时获取不到报错的问题
This commit is contained in:
parent
b533451a40
commit
bf1aec6559
@ -339,16 +339,16 @@ justify-content: flex-start;
|
|||||||
@click="handleMainRewardPreviewClick"
|
@click="handleMainRewardPreviewClick"
|
||||||
>
|
>
|
||||||
<VapMp4Player
|
<VapMp4Player
|
||||||
v-if="isAndroidDevice && mainReward.sourceUrl"
|
v-if="shouldPlayMainRewardVap"
|
||||||
:model-value="true"
|
:model-value="true"
|
||||||
:src="mainReward.sourceUrl"
|
:src="mainRewardVapSourceUrl"
|
||||||
mode="inline"
|
mode="inline"
|
||||||
fit="contain"
|
fit="contain"
|
||||||
:loop="true"
|
:loop="true"
|
||||||
:mute="true"
|
:mute="true"
|
||||||
:auto-close="false"
|
:auto-close="false"
|
||||||
:show-status="false"
|
:show-status="false"
|
||||||
@error="handleRewardVapError"
|
@error="(error) => handleRewardVapError(error, mainRewardVapSourceUrl)"
|
||||||
/>
|
/>
|
||||||
<img
|
<img
|
||||||
v-else
|
v-else
|
||||||
@ -358,7 +358,7 @@ justify-content: flex-start;
|
|||||||
@error="(e) => handleRewardImageError(e, mainReward.type)"
|
@error="(e) => handleRewardImageError(e, mainReward.type)"
|
||||||
/>
|
/>
|
||||||
<button
|
<button
|
||||||
v-if="isIosDevice && mainReward.sourceUrl"
|
v-if="isIosDevice && mainRewardVapSourceUrl"
|
||||||
type="button"
|
type="button"
|
||||||
class="reward-showcase-play-button"
|
class="reward-showcase-play-button"
|
||||||
@click.stop="handleMainRewardPreviewClick"
|
@click.stop="handleMainRewardPreviewClick"
|
||||||
@ -781,6 +781,16 @@ const selectedRewardList = computed(() => {
|
|||||||
const mainReward = computed(() => {
|
const mainReward = computed(() => {
|
||||||
return selectedRewardList.value[0] || null
|
return selectedRewardList.value[0] || null
|
||||||
})
|
})
|
||||||
|
const mainRewardVapSourceUrl = computed(() => {
|
||||||
|
return normalizeVapSourceUrl(mainReward.value?.sourceUrl)
|
||||||
|
})
|
||||||
|
const shouldPlayMainRewardVap = computed(() => {
|
||||||
|
return (
|
||||||
|
isAndroidDevice.value &&
|
||||||
|
Boolean(mainRewardVapSourceUrl.value) &&
|
||||||
|
!failedRewardVapUrls.value.has(mainRewardVapSourceUrl.value)
|
||||||
|
)
|
||||||
|
})
|
||||||
const rewardGridList = computed(() => {
|
const rewardGridList = computed(() => {
|
||||||
return selectedRewardList.value.slice(1, 7)
|
return selectedRewardList.value.slice(1, 7)
|
||||||
})
|
})
|
||||||
@ -789,6 +799,7 @@ const mainRewardRenderKey = computed(() => {
|
|||||||
})
|
})
|
||||||
const rewardVapPreloadElements = new Map()
|
const rewardVapPreloadElements = new Map()
|
||||||
const criticalVapPreloadElements = new Map()
|
const criticalVapPreloadElements = new Map()
|
||||||
|
const failedRewardVapUrls = ref(new Set())
|
||||||
let rewardVapPreloadTimer = null
|
let rewardVapPreloadTimer = null
|
||||||
let rewardVapPreloadIdleCallbackId = null
|
let rewardVapPreloadIdleCallbackId = null
|
||||||
let rewardVapPreloadStarted = false
|
let rewardVapPreloadStarted = false
|
||||||
@ -802,6 +813,39 @@ const getRewardDisplayText = (reward) => {
|
|||||||
return formatRewardDisplay(reward.type, reward)
|
return formatRewardDisplay(reward.type, reward)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const normalizeVapSourceUrl = (sourceUrl = '') => {
|
||||||
|
const resolvedUrl = resolveProtectedAssetUrl(sourceUrl || '').trim()
|
||||||
|
if (!resolvedUrl) {
|
||||||
|
return ''
|
||||||
|
}
|
||||||
|
|
||||||
|
if (resolvedUrl.startsWith('//')) {
|
||||||
|
const protocol =
|
||||||
|
typeof window !== 'undefined' && window.location?.protocol ? window.location.protocol : 'https:'
|
||||||
|
return `${protocol}${resolvedUrl}`
|
||||||
|
}
|
||||||
|
|
||||||
|
if (/^http:\/\//i.test(resolvedUrl)) {
|
||||||
|
return resolvedUrl.replace(/^http:\/\//i, 'https://')
|
||||||
|
}
|
||||||
|
|
||||||
|
if (/^https?:\/\//i.test(resolvedUrl)) {
|
||||||
|
return resolvedUrl
|
||||||
|
}
|
||||||
|
|
||||||
|
if (resolvedUrl.startsWith('/oss/')) {
|
||||||
|
return resolvedUrl
|
||||||
|
}
|
||||||
|
|
||||||
|
if (resolvedUrl.startsWith('/')) {
|
||||||
|
return process.env.NODE_ENV === 'development'
|
||||||
|
? `/oss${resolvedUrl}`
|
||||||
|
: `https://tkm-likei.oss-ap-southeast-1.aliyuncs.com${resolvedUrl}`
|
||||||
|
}
|
||||||
|
|
||||||
|
return `https://${resolvedUrl}`
|
||||||
|
}
|
||||||
|
|
||||||
const getRewardRenderKey = (reward, index) => {
|
const getRewardRenderKey = (reward, index) => {
|
||||||
return [
|
return [
|
||||||
selectedRewardLevel.value,
|
selectedRewardLevel.value,
|
||||||
@ -816,7 +860,7 @@ const getRewardRenderKey = (reward, index) => {
|
|||||||
const getRewardVapUrls = (rewardTopList) => {
|
const getRewardVapUrls = (rewardTopList) => {
|
||||||
return (rewardTopList || [])
|
return (rewardTopList || [])
|
||||||
.flatMap((rewardTop) => rewardTop?.propsGroup?.activityRewardProps || [])
|
.flatMap((rewardTop) => rewardTop?.propsGroup?.activityRewardProps || [])
|
||||||
.map((reward) => resolveProtectedAssetUrl(reward?.sourceUrl || ''))
|
.map((reward) => normalizeVapSourceUrl(reward?.sourceUrl))
|
||||||
.filter(Boolean)
|
.filter(Boolean)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1013,18 +1057,22 @@ const openPopup = (type) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const handleRewardVapError = (error) => {
|
const handleRewardVapError = (error, sourceUrl = '') => {
|
||||||
console.error('Reward VAP playback failed:', error)
|
console.error('Reward VAP playback failed:', error)
|
||||||
|
const normalizedSourceUrl = normalizeVapSourceUrl(sourceUrl)
|
||||||
|
if (normalizedSourceUrl) {
|
||||||
|
failedRewardVapUrls.value = new Set([...failedRewardVapUrls.value, normalizedSourceUrl])
|
||||||
|
}
|
||||||
showError(error?.message || t('active_game_vap_playback_failed'))
|
showError(error?.message || t('active_game_vap_playback_failed'))
|
||||||
}
|
}
|
||||||
|
|
||||||
const handleMainRewardPreviewClick = () => {
|
const handleMainRewardPreviewClick = () => {
|
||||||
if (!mainReward.value?.sourceUrl) {
|
if (!mainRewardVapSourceUrl.value) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isIosDevice.value) {
|
if (isIosDevice.value) {
|
||||||
notifyAppPlayVap(mainReward.value.sourceUrl)
|
notifyAppPlayVap(mainRewardVapSourceUrl.value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user