@@ -6,36 +6,49 @@ import useOrderedStyles from "../../hooks/useOrderedStyles.js";
66import Nav from "../navigation/Nav.jsx" ;
77import { Outlet } from "react-router-dom" ;
88import useAuth from "../../hooks/useAuth.js" ;
9- import { useEffect , useState } from "react" ;
9+ import { useContext , useEffect , useState } from "react" ;
1010import useReload from "../../hooks/useReload.js" ;
1111import routes from "../../routes/routes.js" ;
1212import useAPI from "../../hooks/useAPI.js" ;
1313import { Link } from "react-router" ;
14+ import MainContext from "../../contexts/MainContext.js" ;
1415
1516
1617export default function Base ( ) {
1718
1819 const { reload, setReload} = useState ( false )
1920 const { setReloadPage} = useReload ( )
21+ const [ message , setMessage_ ] = useState ( null )
22+ const [ styleHides , setStyleHides ] = useState ( false )
23+ const [ styleAppears , setStyleAppears ] = useState ( true )
2024 const { addStyle, addExternalStyle} = useOrderedStyles ( ) ;
2125 addStyle ( `/main.css` , 'main' )
2226 addExternalStyle ( `${ import . meta. env . VITE_API_ADDRESS } dstyles/marble/css/` )
2327 const { context, login, user} = useAuth ( )
2428 const reloadCallback = ( ) => setReload ( ! reload )
29+ const hideDuration = 6000
2530
26-
31+ const setMessage = ( message , duration = hideDuration ) => {
32+ setMessage_ ( ( < div > { message } </ div > ) )
33+ setTimeout ( ( ) => { setMessage_ ( null ) ; setStyleHides ( false ) ; setStyleAppears ( true ) } , duration )
34+ }
2735
2836 useEffect ( ( ) => {
2937 ( async ( ) => {
30- await login ( )
38+ await login ( null , null , setMessage )
3139 } ) ( ) ;
3240 setReloadPage ( "home" , reloadCallback )
3341 } , [ ] ) ;
3442
43+ useEffect ( ( ) => {
44+ message && setTimeout ( ( ) => { setStyleHides ( true ) } , hideDuration - 2000 )
45+ message && setTimeout ( ( ) => { setStyleAppears ( false ) } , 2 )
46+ } , [ message ] )
47+
3548
3649
3750 return (
38- < >
51+ < MainContext . Provider value = { { setMessage } } >
3952 { /*<ExternalStyle url={`${import.meta.env.VITE_API_ADDRESS}dstyles/marble/css/`}/>*/ }
4053 { /*!--{# here you can add planet image container if you'd like#}--*/ }
4154 < div id = "container" >
@@ -181,15 +194,16 @@ export default function Base(){
181194 </ div >
182195
183196 < div id = "component" className = "no-component-background" >
184- < div className = "message-container" >
197+ { message && ( < div className = { "message-container" + ( styleHides ? " hides" : "" ) + ( styleAppears ? " appears" : "" ) } >
198+ { message }
185199 { /*<!--{% block message_content %}
186200 {% for message in messages %}
187201 <div>
188202 {{message}}
189203 </div>
190204 {% endfor %}
191205 {% endblock %}-->*/ }
192- </ div >
206+ </ div > ) }
193207
194208 < div className = { `component-wrapper` } >
195209 < Outlet />
@@ -232,6 +246,6 @@ export default function Base(){
232246
233247 { /*<!--</tag|class=div|containerplanetimage>-->*/ }
234248
235- </ >
249+ </ MainContext . Provider >
236250 ) ;
237251}
0 commit comments