koel/resources/assets/js/composables/useEpisodeProgressTracking.ts
2024-10-14 00:37:01 +07:00

24 lines
770 B
TypeScript

import { eventBus } from '@/utils'
import { podcastStore } from '@/stores'
let progressTrackedEpisode: Episode | null = null
export const useEpisodeProgressTracking = () => {
if (eventBus.listeners('EPISODE_PROGRESS_UPDATED').length === 0) {
eventBus.on('EPISODE_PROGRESS_UPDATED', async ({ id }, progress: number) => {
if (!progressTrackedEpisode || progressTrackedEpisode.id !== id) {
return
}
const podcast = await podcastStore.resolve(progressTrackedEpisode.podcast_id)
podcast.state.current_episode = progressTrackedEpisode.id
podcast.state.progresses[progressTrackedEpisode.id] = progress
})
}
const trackEpisode = (episode: Episode) => (progressTrackedEpisode = episode)
return {
trackEpisode,
}
}