-
Notifications
You must be signed in to change notification settings - Fork 0
/
yts.js
78 lines (67 loc) · 2.42 KB
/
yts.js
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
window.sync = (API_KEY, DATABASE_URL) => {
var video = null;
var synced = false;
const app = firebase.initializeApp({
apiKey: API_KEY,
databaseURL: DATABASE_URL
});
const status = app.database().ref('/status');
const progress = app.database().ref('/progress');
const rate = app.database().ref('/rate');
const header = document.getElementById('info');
const button = document.createElement('button');
const interval = setInterval(() => {
const header = document.getElementById('info');
const button = document.createElement('button');
if (header) clearInterval(interval);
const buttonChange = () => {
const first = synced ? "STOP" : "SHARE";
const second = synced ? "SHARING" : "PLAYBACK";
button.innerHTML = `<span id='span-share'>${first}</span> ${second}`;
button.style.background = synced ? "#363636" : "#FF0000";
const span = document.getElementById('span-share');
span.style.fontWeight = 'bold';
span.style.color = '#FFF';
};
button.id = 'share';
button.style.color = 'rgba(255,255,255,0.8)';
button.style.borderRadius = '2px';
button.style.marginTop = '16px';
button.style.outline = 'none';
button.style.border = 'none';
button.style.cursor = 'pointer';
button.style.padding = '10px 16px';
header.appendChild(button);
buttonChange();
const listener = () => {
status.set(video.paused);
progress.set(video.currentTime);
rate.set(video.playbackRate);
};
button.addEventListener('click', () => {
if (synced) {
video.removeEventListener("pause", listener, true);
video.removeEventListener("play", listener, true);
status.off();
} else {
video = document.getElementsByClassName('video-stream')[0];
status.on('value', async(data) => {
snapshotProgress = await progress.once('value')
snapshotRate = await rate.once('value')
video.currentTime = snapshotProgress.val();
video.playbackRate = snapshotRate.val();
if (!data.val()) video.play();
else video.pause();
});
video.pause();
status.set(video.paused);
progress.set(video.currentTime);
rate.set(video.playbackRate);
video.addEventListener("pause", listener, true);
video.addEventListener("play", listener, true);
}
synced = !synced;
buttonChange();
});
}, 500);
}