Skip to content

Commit cd47cca

Browse files
IkramBagbanhkirat
authored andcommitted
feat: persist caption settings in localStorage on track mode change (#1493) (#1503)
* feat: persist caption settings in localStorage on track mode change (#1493) * refactor: combine both the with same dependancy
1 parent 895b675 commit cd47cca

File tree

1 file changed

+40
-5
lines changed

1 file changed

+40
-5
lines changed

src/components/VideoPlayer2.tsx

Lines changed: 40 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,43 @@ export const VideoPlayer: FunctionComponent<VideoPlayerProps> = ({
9797
return pipButtonContainer;
9898
};
9999

100+
useEffect(() => {
101+
if (!player) return;
102+
103+
const savedCaptionSetting = localStorage.getItem('captionSetting');
104+
const tracks = player.textTracks();
105+
106+
if (savedCaptionSetting && player) {
107+
for (let i = 0; i < tracks.length; i++) {
108+
const track = tracks[i];
109+
110+
if (track) {
111+
track.mode =
112+
savedCaptionSetting === 'showing' ? 'showing' : 'disabled';
113+
}
114+
}
115+
}
116+
117+
const handleTrackChange = () => {
118+
for (let i = 0; i < tracks.length; i++) {
119+
const track = tracks[i];
120+
if (track.kind === 'subtitles' && track.language === 'en') {
121+
track.addEventListener('modechange', () => {
122+
localStorage.setItem('captionSetting', track.mode);
123+
});
124+
}
125+
}
126+
};
127+
128+
handleTrackChange();
129+
return () => {
130+
for (let i = 0; i < tracks.length; i++) {
131+
const track = tracks[i];
132+
track.removeEventListener('modechange', handleTrackChange);
133+
}
134+
};
135+
}, [player]);
136+
100137
useEffect(() => {
101138
const t = searchParams.get('timestamp');
102139
if (contentId && player && !t) {
@@ -260,11 +297,8 @@ export const VideoPlayer: FunctionComponent<VideoPlayerProps> = ({
260297
const track = tracks[i];
261298

262299
if (track.kind === 'subtitles' && track.language === 'en') {
263-
if (track.mode === 'hidden') {
264-
track.mode = 'showing';
265-
} else {
266-
track.mode = 'hidden';
267-
}
300+
if (track.mode === 'disabled') track.mode = 'showing';
301+
else track.mode = 'disabled';
268302
}
269303
}
270304
event.stopPropagation();
@@ -323,6 +357,7 @@ export const VideoPlayer: FunctionComponent<VideoPlayerProps> = ({
323357
document.removeEventListener('keydown', handleKeyPress);
324358
};
325359
}, [player]);
360+
326361
useEffect(() => {
327362
if (!player) {
328363
return;

0 commit comments

Comments
 (0)