@@ -11,7 +11,6 @@ import Text from '../../components/Text';
11
11
import { useAlert } from '../../hooks/useAlert' ;
12
12
import { useAuth } from '../../hooks/useAuth' ;
13
13
import useForm from '../../hooks/useForm' ;
14
- import { useLoader } from '../../hooks/useLoader' ;
15
14
import catchError from '../../utils/catchError' ;
16
15
import { ErrorType } from '../../utils/fetcher' ;
17
16
@@ -28,23 +27,24 @@ const LoginView = () => {
28
27
const navigate = useNavigate ( ) ;
29
28
const auth = useAuth ( ) ;
30
29
const Alert = useAlert ( ) ;
31
- const Loader = useLoader ( ) ;
32
30
const { t } = useTranslation ( 'login' ) ;
33
31
34
- const { register, handleSubmit, formState : { isSubmitting } , control, setValue, setFocus } = useForm < FormData > ( 'user' ) ;
32
+ const [ loading , setLoading ] = useState ( false ) ;
33
+ const [ resetLoading , setResetLoading ] = useState ( false ) ;
34
+ const { register, handleSubmit, control, setValue, setFocus } = useForm < FormData > ( 'user' ) ;
35
35
const login = useWatch ( { name : 'login' , control } ) ;
36
36
37
37
/**
38
38
* Login handler
39
39
*/
40
40
const onSubmit = ( formData : FormData ) => {
41
- Loader . open ( ) ;
41
+ setLoading ( true ) ;
42
42
auth . signin ( formData . login , formData . password ) . then ( ( ) => {
43
- Loader . close ( ) ;
43
+ setLoading ( false ) ;
44
44
navigate ( '/app/home' , { replace : true } ) ;
45
45
} ) . catch ( ( response : string ) => {
46
46
catchError ( Alert ) ( response ) ;
47
- Loader . close ( ) ;
47
+ setLoading ( false ) ;
48
48
} ) ;
49
49
} ;
50
50
@@ -53,40 +53,39 @@ const LoginView = () => {
53
53
const user = localStorage . getItem ( 'user' ) ;
54
54
const token = localStorage . getItem ( 'token' ) || '' ;
55
55
if ( ! auth . authed && user ) {
56
- Loader . open ( ) ;
56
+ setLoading ( true ) ;
57
57
auth . signin ( user , token ) . catch ( ( error : ErrorType ) => {
58
58
localStorage . removeItem ( 'user' ) ;
59
59
localStorage . removeItem ( 'token' ) ;
60
60
navigate ( '/login' , { replace : true } ) ;
61
61
catchError ( Alert ) ( error ) ;
62
62
} ) . finally ( ( ) => {
63
- Loader . close ( ) ;
63
+ setLoading ( false ) ;
64
64
} ) ;
65
65
}
66
66
if ( auth . authed ) {
67
67
navigate ( '/app/home' , { replace : true } ) ;
68
68
}
69
- } , [ Alert , Loader , auth , navigate , t ] ) ;
69
+ } , [ Alert , auth , navigate , t ] ) ;
70
70
71
71
// Password reset
72
72
const resetPassword = useCallback ( async ( ) => {
73
73
if ( ! login ) {
74
74
Alert . open ( 'error' , t ( 'pleaseEnterLogin' ) ) ;
75
75
return ;
76
76
}
77
- Loader . open ( ) ;
77
+ setLoading ( true ) ;
78
78
await UserRoutes . sendPasswordResetMail ( login ) . then ( ( ) => {
79
79
Alert . open ( 'success' , t ( 'passwordResetMailSent' ) ) ;
80
80
} ) . catch ( catchError ( Alert ) ) ;
81
- Loader . close ( ) ;
82
- } , [ Alert , Loader , login , t ] ) ;
81
+ setLoading ( false ) ;
82
+ } , [ Alert , login , t ] ) ;
83
83
84
84
// Password reset form
85
85
const [ resetDialogOpen , setResetDialogOpen ] = useState ( false ) ;
86
86
const {
87
87
register : resetRegister ,
88
88
handleSubmit : resetHandleSubmit ,
89
- formState : { isSubmitting : resetIsSubmitting } ,
90
89
control : resetControl ,
91
90
reset : resetForm ,
92
91
} = useForm < ResetFormData > ( 'user' ) ;
@@ -104,9 +103,11 @@ const LoginView = () => {
104
103
const url = new URL ( window . location . href ) ;
105
104
const code = url . searchParams . get ( 'reset' ) ;
106
105
106
+ setResetLoading ( true ) ;
107
107
UserRoutes . resetPassword ( login , code || '' , formData . password ) . then ( ( ) => {
108
108
Alert . open ( 'success' , t ( 'passwordResetSuccess' ) ) ;
109
109
} ) . catch ( catchError ( Alert ) ) . finally ( ( ) => {
110
+ setResetLoading ( false ) ;
110
111
setResetDialogOpen ( false ) ;
111
112
resetForm ( ) ;
112
113
} ) ;
@@ -175,7 +176,7 @@ const LoginView = () => {
175
176
< Box my = { 2 } >
176
177
< LoadingButton
177
178
color = "primary"
178
- loading = { isSubmitting }
179
+ loading = { loading }
179
180
fullWidth
180
181
size = "large"
181
182
type = "submit"
@@ -210,7 +211,7 @@ const LoginView = () => {
210
211
< Button onClick = { closeResetDialog } > { t ( 'common:cancel' ) } </ Button >
211
212
< LoadingButton
212
213
color = "primary"
213
- loading = { resetIsSubmitting }
214
+ loading = { resetLoading }
214
215
type = "submit"
215
216
variant = "contained"
216
217
>
0 commit comments