@@ -8,6 +8,7 @@ const { default: Icon } = require('@stremio/stremio-icons/react');
88const { useRouteFocused } = require ( 'stremio-router' ) ;
99const { useServices } = require ( 'stremio/services' ) ;
1010const { Button, Checkbox, MainNavBars, Multiselect, ColorInput, TextInput, ModalDialog, useProfile, useStreamingServer, useBinaryState, withCoreSuspender, useToast } = require ( 'stremio/common' ) ;
11+ const historySync = require ( 'stremio-history-sync' ) ;
1112const useProfileSettingsInputs = require ( './useProfileSettingsInputs' ) ;
1213const useStreamingServerSettingsInputs = require ( './useStreamingServerSettingsInputs' ) ;
1314const useDataExport = require ( './useDataExport' ) ;
@@ -100,6 +101,38 @@ const Settings = () => {
100101 }
101102 } ) ;
102103 }
104+ } , [ isTraktAuthenticated , profile ] ) ;
105+ const traktImportOnClick = React . useCallback ( ( ) => {
106+ if ( ( localStorage . getItem ( 'lastTraktImport' ) || 0 ) > Date . now ( ) - ( 24 * 60 * 60 * 1000 ) ) {
107+ toast . show ( {
108+ type : 'error' ,
109+ title : 'You already used this action recently, try again later' ,
110+ timeout : 25000
111+ } ) ;
112+ return
113+ }
114+ localStorage . setItem ( 'lastTraktImport' , Date . now ( ) )
115+ toast . show ( {
116+ type : 'success' ,
117+ title : 'Importing Trakt watched list...' ,
118+ timeout : 25000
119+ } ) ;
120+ historySync . traktSync ( profile . auth . key )
121+ . then ( ( res ) =>
122+ toast . show ( {
123+ type : 'success' ,
124+ title : `Success: ${ res . length } items imported from trakt watched list. (${ res . movies } movies & ${ res . series } series)` ,
125+ timeout : 25000
126+ } ) )
127+ . catch ( e => {
128+ console . error ( e )
129+ localStorage . setItem ( 'lastTraktImport' , 0 )
130+ toast . show ( {
131+ type : 'error' ,
132+ title : 'Trakt Import failed, please try again later' ,
133+ timeout : 25000
134+ } ) ;
135+ } ) ;
103136 } , [ isTraktAuthenticated , profile . auth ] ) ;
104137 const subscribeCalendarOnClick = React . useCallback ( ( ) => {
105138 const url = `webcal://www.strem.io/calendar/${ profile . auth . user . _id } .ics` ;
@@ -324,7 +357,16 @@ const Settings = () => {
324357 < div className = { styles [ 'label' ] } >
325358 { profile . auth !== null && profile . auth . user !== null && profile . auth . user . trakt !== null ? t ( 'LOG_OUT' ) : t ( 'SETTINGS_TRAKT_AUTHENTICATE' ) }
326359 </ div >
327- </ Button >
360+ </ Button >
361+ {
362+ isTraktAuthenticated ?
363+ < Button className = { classnames ( styles [ 'option-input-container' ] , styles [ 'button-container' ] ) } title = { 'Trakt Library Import' } disabled = { profile . auth === null } tabIndex = { - 1 } onClick = { traktImportOnClick } >
364+ < div className = { styles [ 'label' ] } >
365+ { t ( 'TRAKT_IMPORT_WATCHED' ) }
366+ </ div >
367+ </ Button >
368+ : null
369+ }
328370 </ div >
329371 </ div >
330372 < div className = { styles [ 'section-container' ] } >
0 commit comments