-
-
Notifications
You must be signed in to change notification settings - Fork 346
Expand file tree
/
Copy pathinit-youtube-subtitles.ts
More file actions
32 lines (24 loc) · 922 Bytes
/
init-youtube-subtitles.ts
File metadata and controls
32 lines (24 loc) · 922 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import { YOUTUBE_NAVIGATE_FINISH_EVENT, YOUTUBE_WATCH_URL_PATTERN } from "@/utils/constants/subtitles"
import { setupYoutubeSubtitles } from "./platforms/youtube"
import { youtubeConfig } from "./platforms/youtube/config"
import { mountSubtitlesUI } from "./renderer/mount-subtitles-ui"
export function initYoutubeSubtitles() {
let initialized = false
let mountedAdapter: ReturnType<typeof setupYoutubeSubtitles> | null = null
const tryInit = async () => {
if (!window.location.href.includes(YOUTUBE_WATCH_URL_PATTERN)) {
return
}
if (!mountedAdapter) {
mountedAdapter = setupYoutubeSubtitles()
}
await mountSubtitlesUI({ adapter: mountedAdapter, config: youtubeConfig })
if (initialized) {
return
}
initialized = true
void mountedAdapter.initialize()
}
void tryInit()
window.addEventListener(YOUTUBE_NAVIGATE_FINISH_EVENT, () => void tryInit())
}