@@ -8,7 +8,7 @@ const langs = require('langs');
8
8
const { useTranslation } = require ( 'react-i18next' ) ;
9
9
const { useRouteFocused } = require ( 'stremio-router' ) ;
10
10
const { useServices } = require ( 'stremio/services' ) ;
11
- const { useFullscreen, useBinaryState, useToast, useStreamingServer, withCoreSuspender } = require ( 'stremio/common' ) ;
11
+ const { onFileDrop , useFullscreen, useBinaryState, useToast, useStreamingServer, withCoreSuspender, CONSTANTS } = require ( 'stremio/common' ) ;
12
12
const { HorizontalNavBar, Transition } = require ( 'stremio/components' ) ;
13
13
const BufferingLoader = require ( './BufferingLoader' ) ;
14
14
const VolumeChangeIndicator = require ( './VolumeChangeIndicator' ) ;
@@ -133,11 +133,20 @@ const Player = ({ urlParams, queryParams }) => {
133
133
toast . show ( {
134
134
type : 'success' ,
135
135
title : t ( 'PLAYER_SUBTITLES_LOADED' ) ,
136
- message : track . exclusive ? t ( 'PLAYER_SUBTITLES_LOADED_EXCLUSIVE' ) : t ( 'PLAYER_SUBTITLES_LOADED_ORIGIN' , { origin : track . origin } ) ,
136
+ message :
137
+ track . exclusive ? t ( 'PLAYER_SUBTITLES_LOADED_EXCLUSIVE' ) :
138
+ track . local ? t ( 'PLAYER_SUBTITLES_LOADED_LOCAL' ) :
139
+ t ( 'PLAYER_SUBTITLES_LOADED_ORIGIN' , { origin : track . origin } ) ,
137
140
timeout : 3000
138
141
} ) ;
139
142
} , [ ] ) ;
140
143
144
+ const onExtraSubtitlesTrackAdded = React . useCallback ( ( track ) => {
145
+ if ( track . local ) {
146
+ video . setExtraSubtitlesTrack ( track . id ) ;
147
+ }
148
+ } , [ ] ) ;
149
+
141
150
const onPlayRequested = React . useCallback ( ( ) => {
142
151
video . setProp ( 'paused' , false ) ;
143
152
setSeeking ( false ) ;
@@ -172,13 +181,11 @@ const Player = ({ urlParams, queryParams }) => {
172
181
} , [ ] ) ;
173
182
174
183
const onSubtitlesTrackSelected = React . useCallback ( ( id ) => {
175
- video . setProp ( 'selectedSubtitlesTrackId' , id ) ;
176
- video . setProp ( 'selectedExtraSubtitlesTrackId' , null ) ;
184
+ video . setSubtitlesTrack ( id ) ;
177
185
} , [ ] ) ;
178
186
179
187
const onExtraSubtitlesTrackSelected = React . useCallback ( ( id ) => {
180
- video . setProp ( 'selectedSubtitlesTrackId' , null ) ;
181
- video . setProp ( 'selectedExtraSubtitlesTrackId' , id ) ;
188
+ video . setExtraSubtitlesTrack ( id ) ;
182
189
} , [ ] ) ;
183
190
184
191
const onAudioTrackSelected = React . useCallback ( ( id ) => {
@@ -270,6 +277,10 @@ const Player = ({ urlParams, queryParams }) => {
270
277
event . nativeEvent . immersePrevented = true ;
271
278
} , [ ] ) ;
272
279
280
+ onFileDrop ( CONSTANTS . SUPPORTED_LOCAL_SUBTITLES , async ( filename , buffer ) => {
281
+ video . addLocalSubtitles ( filename , buffer ) ;
282
+ } ) ;
283
+
273
284
React . useEffect ( ( ) => {
274
285
setError ( null ) ;
275
286
video . unload ( ) ;
@@ -586,13 +597,15 @@ const Player = ({ urlParams, queryParams }) => {
586
597
video . events . on ( 'ended' , onEnded ) ;
587
598
video . events . on ( 'subtitlesTrackLoaded' , onSubtitlesTrackLoaded ) ;
588
599
video . events . on ( 'extraSubtitlesTrackLoaded' , onExtraSubtitlesTrackLoaded ) ;
600
+ video . events . on ( 'extraSubtitlesTrackAdded' , onExtraSubtitlesTrackAdded ) ;
589
601
video . events . on ( 'implementationChanged' , onImplementationChanged ) ;
590
602
591
603
return ( ) => {
592
604
video . events . off ( 'error' , onError ) ;
593
605
video . events . off ( 'ended' , onEnded ) ;
594
606
video . events . off ( 'subtitlesTrackLoaded' , onSubtitlesTrackLoaded ) ;
595
607
video . events . off ( 'extraSubtitlesTrackLoaded' , onExtraSubtitlesTrackLoaded ) ;
608
+ video . events . off ( 'extraSubtitlesTrackAdded' , onExtraSubtitlesTrackAdded ) ;
596
609
video . events . off ( 'implementationChanged' , onImplementationChanged ) ;
597
610
} ;
598
611
} , [ ] ) ;
0 commit comments