File tree Expand file tree Collapse file tree 5 files changed +84
-1
lines changed Expand file tree Collapse file tree 5 files changed +84
-1
lines changed Original file line number Diff line number Diff line change @@ -19,6 +19,7 @@ import useToken from './pages/Login/useToken';
19
19
import Box from "@material-ui/core/Box" ;
20
20
import { RFM } from "./pages/RFM/RFM" ;
21
21
import UserManagement from './pages/UserManagement/UserManagement' ;
22
+ import AlertBanner from './components/AlertBanner' ;
22
23
23
24
let jwt = require ( 'jsonwebtoken' ) ;
24
25
@@ -94,6 +95,9 @@ function AuthenticatedApp() {
94
95
return (
95
96
< Router >
96
97
98
+ < Box >
99
+ < AlertBanner />
100
+ </ Box >
97
101
< Box pb = { 4 } >
98
102
{ ! jwtExpired ? < Header headerType = { headerType } /> : < Header headerType = { 'Login' } /> }
99
103
</ Box >
Original file line number Diff line number Diff line change
1
+ import React from "react" ;
2
+
3
+ import { Alert } from "@material-ui/lab" ;
4
+ import useAlert from "../hooks/useAlert" ;
5
+
6
+ const AlertBanner = ( ) => {
7
+ const { text, type, setAlert } = useAlert ( ) ;
8
+
9
+ if ( text && type ) {
10
+ return (
11
+ < Alert
12
+ onClose = { ( ) => setAlert ( null ) }
13
+ severity = { type }
14
+ sx = { {
15
+ position : "absolute" ,
16
+ zIndex : 10 ,
17
+ } }
18
+ >
19
+ { text }
20
+ </ Alert >
21
+ ) ;
22
+ } else {
23
+ return < > </ > ;
24
+ }
25
+ } ;
26
+
27
+ export default AlertBanner ;
Original file line number Diff line number Diff line change
1
+ import React from 'react' ;
2
+
3
+ const ALERT_TIME = 5000 ;
4
+ const initialState = {
5
+ text : "" ,
6
+ type : "" ,
7
+ } ;
8
+
9
+ const AlertContext = React . createContext ( {
10
+ ...initialState ,
11
+ setAlert : ( ) => { } ,
12
+ } ) ;
13
+
14
+ export const AlertProvider = ( { children } ) => {
15
+ const [ text , setText ] = React . useState ( "" ) ;
16
+ const [ type , setType ] = React . useState ( "" ) ;
17
+
18
+ const setAlert = ( text , type ) => {
19
+ setText ( text ) ;
20
+ setType ( type ) ;
21
+
22
+ if ( type !== "error" ) {
23
+ setTimeout ( ( ) => {
24
+ setText ( "" ) ;
25
+ setType ( "" ) ;
26
+ } , ALERT_TIME ) ;
27
+ }
28
+ } ;
29
+
30
+ return (
31
+ < AlertContext . Provider
32
+ value = { {
33
+ text,
34
+ type,
35
+ setAlert,
36
+ } }
37
+ >
38
+ { children }
39
+ </ AlertContext . Provider >
40
+ ) ;
41
+ } ;
42
+
43
+ export default AlertContext ;
Original file line number Diff line number Diff line change
1
+ import { useContext } from "react" ;
2
+ import AlertContext from "../contexts/AlertContext" ;
3
+
4
+ const useAlert = ( ) => useContext ( AlertContext ) ;
5
+
6
+ export default useAlert ;
Original file line number Diff line number Diff line change @@ -5,12 +5,15 @@ import { ThemeProvider } from '@material-ui/core/styles';
5
5
import * as serviceWorker from './serviceWorker' ;
6
6
import "./assets/font/font.css" ;
7
7
import defaultTheme from './theme/defaultTheme' ;
8
+ import { AlertProvider } from './contexts/AlertContext' ;
8
9
9
10
10
11
ReactDOM . render (
11
12
< React . StrictMode >
12
13
< ThemeProvider theme = { defaultTheme } >
13
- < App />
14
+ < AlertProvider >
15
+ < App />
16
+ </ AlertProvider >
14
17
</ ThemeProvider >
15
18
</ React . StrictMode > ,
16
19
document . getElementById ( 'root' )
You can’t perform that action at this time.
0 commit comments