@@ -5,7 +5,8 @@ const PropTypes = require('prop-types');
5
5
const classnames = require ( 'classnames' ) ;
6
6
const NotFound = require ( 'stremio/routes/NotFound' ) ;
7
7
const { useProfile, useNotifications, routesRegexp, useOnScrollToBottom, withCoreSuspender } = require ( 'stremio/common' ) ;
8
- const { Button, DelayedRenderer, Chips, Image, MainNavBars, Multiselect, LibItem } = require ( 'stremio/components' ) ;
8
+ const { DelayedRenderer, Chips, Image, MainNavBars, Multiselect, LibItem } = require ( 'stremio/components' ) ;
9
+ const { default : Placeholder } = require ( './Placeholder' ) ;
9
10
const useLibrary = require ( './useLibrary' ) ;
10
11
const useSelectableInputs = require ( './useSelectableInputs' ) ;
11
12
const styles = require ( './styles' ) ;
@@ -58,65 +59,58 @@ const Library = ({ model, urlParams, queryParams }) => {
58
59
} , [ hasNextPage , loadNextPage ] ) ;
59
60
const onScroll = useOnScrollToBottom ( onScrollToBottom , SCROLL_TO_BOTTOM_TRESHOLD ) ;
60
61
React . useLayoutEffect ( ( ) => {
61
- if ( profile . auth !== null && library . selected && library . selected . request . page === 1 && library . catalog . length !== 0 ) {
62
+ if ( profile . auth !== null && library . selected && library . selected . request . page === 1 && library . catalog . length !== 0 ) {
62
63
scrollContainerRef . current . scrollTop = 0 ;
63
64
}
64
65
} , [ profile . auth , library . selected ] ) ;
65
66
return (
66
67
< MainNavBars className = { styles [ 'library-container' ] } route = { model } >
67
- < div className = { styles [ 'library-content' ] } >
68
- {
69
- model === 'continue_watching' || profile . auth !== null ?
70
- < div className = { styles [ 'selectable-inputs-container' ] } >
71
- < Multiselect { ...typeSelect } className = { styles [ 'select-input-container' ] } />
72
- < Chips { ...sortChips } className = { styles [ 'select-input-container' ] } />
73
- </ div >
74
- :
75
- null
76
- }
77
- {
78
- model === 'library' && profile . auth === null ?
79
- < div className = { classnames ( styles [ 'message-container' ] , styles [ 'no-user-message-container' ] ) } >
80
- < Image
81
- className = { styles [ 'image' ] }
82
- src = { require ( '/images/anonymous.png' ) }
83
- alt = { ' ' }
84
- />
85
- < div className = { styles [ 'message-label' ] } > Library is only available for logged in users!</ div >
86
- < Button className = { styles [ 'login-button-container' ] } href = { '#/intro' } >
87
- < div className = { styles [ 'label' ] } > LOG IN</ div >
88
- </ Button >
89
- </ div >
90
- :
91
- library . selected === null ?
92
- < DelayedRenderer delay = { 500 } >
93
- < div className = { styles [ 'message-container' ] } >
94
- < Image
95
- className = { styles [ 'image' ] }
96
- src = { require ( '/images/empty.png' ) }
97
- alt = { ' ' }
98
- />
99
- < div className = { styles [ 'message-label' ] } > { model === 'library' ? 'Library' : 'Continue Watching' } not loaded!</ div >
100
- </ div >
101
- </ DelayedRenderer >
102
- :
103
- library . catalog . length === 0 ?
104
- < div className = { styles [ 'message-container' ] } >
105
- < Image
106
- className = { styles [ 'image' ] }
107
- src = { require ( '/images/empty.png' ) }
108
- alt = { ' ' }
109
- />
110
- < div className = { styles [ 'message-label' ] } > Empty { model === 'library' ? 'Library' : 'Continue Watching' } </ div >
68
+ {
69
+ profile . auth === null ?
70
+ < Placeholder />
71
+ : < div className = { styles [ 'library-content' ] } >
72
+ {
73
+ model === 'continue_watching' ?
74
+ < div className = { styles [ 'selectable-inputs-container' ] } >
75
+ < Multiselect { ...typeSelect } className = { styles [ 'select-input-container' ] } />
76
+ < Chips { ...sortChips } className = { styles [ 'select-input-container' ] } />
111
77
</ div >
112
78
:
113
- < div ref = { scrollContainerRef } className = { classnames ( styles [ 'meta-items-container' ] , 'animation-fade-in' ) } onScroll = { onScroll } >
114
- { library . catalog . map ( ( libItem , index ) => (
115
- < LibItem { ...libItem } notifications = { notifications } removable = { model === 'library' } key = { index } />
116
- ) ) }
117
- </ div >
118
- }
119
- </ div >
79
+ null
80
+ }
81
+ {
82
+ model === 'library' ?
83
+ library . selected === null ?
84
+ < DelayedRenderer delay = { 500 } >
85
+ < div className = { styles [ 'message-container' ] } >
86
+ < Image
87
+ className = { styles [ 'image' ] }
88
+ src = { require ( '/images/empty.png' ) }
89
+ alt = { ' ' }
90
+ />
91
+ < div className = { styles [ 'message-label' ] } > { model === 'library' ? 'Library' : 'Continue Watching' } not loaded!</ div >
92
+ </ div >
93
+ </ DelayedRenderer >
94
+ :
95
+ library . catalog . length === 0 ?
96
+ < div className = { styles [ 'message-container' ] } >
97
+ < Image
98
+ className = { styles [ 'image' ] }
99
+ src = { require ( '/images/empty.png' ) }
100
+ alt = { ' ' }
101
+ />
102
+ < div className = { styles [ 'message-label' ] } > Empty { model === 'library' ? 'Library' : 'Continue Watching' } </ div >
103
+ </ div >
104
+ :
105
+ < div ref = { scrollContainerRef } className = { classnames ( styles [ 'meta-items-container' ] , 'animation-fade-in' ) } onScroll = { onScroll } >
106
+ { library . catalog . map ( ( libItem , index ) => (
107
+ < LibItem { ...libItem } notifications = { notifications } removable = { model === 'library' } key = { index } />
108
+ ) ) }
109
+ </ div >
110
+ : null
111
+ }
112
+ </ div >
113
+ }
120
114
</ MainNavBars >
121
115
) ;
122
116
} ;
0 commit comments