[组件-自动移出稍后再看] 优化事件监听逻辑,防止重复监听导致重复调用接口

This commit is contained in:
sunfkny 2025-06-01 22:43:26 +08:00
parent 722123937b
commit 304b1aaa9c

View File

@ -4,6 +4,7 @@ import { videoUrls, watchlaterUrls } from '@/core/utils/urls'
import { playerAgent } from '@/components/video/player-agent' import { playerAgent } from '@/components/video/player-agent'
import { getWatchlaterList, toggleWatchlater } from '@/components/video/watchlater' import { getWatchlaterList, toggleWatchlater } from '@/components/video/watchlater'
let listener: (() => Promise<void>) | null = null
export const component = defineComponentMetadata({ export const component = defineComponentMetadata({
name: 'autoRemoveWatchlater', name: 'autoRemoveWatchlater',
displayName: '自动移出稍后再看', displayName: '自动移出稍后再看',
@ -12,12 +13,16 @@ export const component = defineComponentMetadata({
entry: () => { entry: () => {
videoChange(async ({ aid }) => { videoChange(async ({ aid }) => {
const videoElement = await playerAgent.query.video.element() const videoElement = await playerAgent.query.video.element()
videoElement.addEventListener('ended', async () => { if (listener !== null) {
videoElement.removeEventListener('ended', listener)
}
listener = async () => {
const list = await getWatchlaterList() const list = await getWatchlaterList()
if (list.includes(parseInt(aid))) { if (list.includes(parseInt(aid))) {
await toggleWatchlater(aid) await toggleWatchlater(aid)
} }
}) }
videoElement.addEventListener('ended', listener)
}) })
}, },
}) })