@@ -6,10 +6,11 @@ import AddCard from './Cards/AddCard'
66import Context from './context'
77import Loader from './Content/Loader'
88import ModalCardEdit from './Modal/ModalCardEdit'
9+ import ModalLogin from './Modal/ModalLogin'
910import Modal from './Modal/Modal'
1011import DataService from './DataService'
1112
12- const { loadData, postData, login } = DataService ( )
13+ const { loadData, postData, setLogin } = DataService ( )
1314
1415const testText = "My little cards-app c:"
1516
@@ -59,18 +60,35 @@ function App() {
5960 const [ editCardId , setEditCardId ] = React . useState ( null )
6061 const [ loading , setLoading ] = React . useState ( true )
6162 const [ logged , setLogged ] = React . useState ( false )
62- React . useEffect ( tryLogin , [ ] ) // eslint-disable-line react-hooks/exhaustive-deps
63+ const [ userName , setUserName ] = React . useState ( null )
64+ React . useEffect ( clearIfUnlogged , [ logged ] ) // eslint-disable-line react-hooks/exhaustive-deps
6365 React . useEffect ( loadDataFromServer , [ logged ] ) // eslint-disable-line react-hooks/exhaustive-deps
6466 React . useEffect ( loadDataToServer , [ cardsArr ] ) // eslint-disable-line react-hooks/exhaustive-deps
6567
66-
6768 ///////////
68- function tryLogin ( ) {
69- try {
70- login ( ) . then ( setLogged , alert )
71- } catch ( e ) {
72- console . error ( e )
73- }
69+ function tryLogin ( login ) {
70+ return new Promise ( ( res , rej ) => {
71+ try {
72+ setLogin ( login )
73+ . then ( ( r => {
74+ setLogged ( Boolean ( r ) )
75+ setUserName ( login )
76+ } ) , console . log )
77+ . then ( res , rej )
78+ } catch ( e ) {
79+ rej ( e )
80+ console . error ( e )
81+ }
82+ } )
83+ }
84+
85+ function dislogin ( ) {
86+ if ( logged ) console . log ( "Dislogin" )
87+ setLogged ( null )
88+ }
89+
90+ function clearIfUnlogged ( ) {
91+ if ( logged === null && cardsArr ) deleteAll ( )
7492 }
7593 ///////////
7694
@@ -157,25 +175,25 @@ function App() {
157175 }
158176 ///////////
159177
160-
161178 return (
162179 < Context . Provider value = { { removeCard, changeCardState, setEditCard, unsetEditCard, editCardContent, editCardId } } >
163180 < div className = "App" >
164181 < header className = "p-1 h2 text-center" >
165182 < img src = { logo } className = "App-logo" alt = "logo" />
166183 < h1 className = "d-inline-block h2" > { testText } </ h1 >
167- < p className = "show_login" onClick = { ( e ) => { e . target . style . opacity = e . target . style . opacity ! == '0' ? '0' : '1' } } >
168- { logged && `Login: ${ logged } ` }
184+ < p className = "show_login btn btn-light py-0 " onClick = { ( e ) => { setLogged ( logged = == false ? 0 : false ) } } >
185+ { logged ? `Login: ${ userName } ` : "LOG IN" }
169186 </ p >
170187 </ header >
171188
172189 < main className = "p-1" >
173190 < AddCard onCreate = { addCard } onDeleteAll = { deleteAll } />
191+ < Modal component = { ModalLogin } componentProps = { { logged : logged , login : tryLogin , dislogin : dislogin , userName : userName } } />
174192 < Modal component = { ModalCardEdit } componentProps = { { card : getCardByIndex ( editCardId ) , index : editCardId } } />
175193 { loading && < Loader /> }
176194 { cardsArr . length ? (
177195 < CardList cards = { cardsArr } />
178- ) : loading ? null : (
196+ ) : loading && ! logged ? null : (
179197 < div className = "container text-center" >
180198 < p className = "m-3 p-3 h5 text-muted" > No cards. You can add a new one!</ p >
181199 </ div >
0 commit comments