14
14
// You should have received a copy of the GNU Affero General Public License
15
15
// along with this program. If not, see <http://www.gnu.org/licenses/>.
16
16
17
- import React from "react" ;
17
+ import React , { useEffect } from "react" ;
18
18
import { useNavigate } from "react-router-dom" ;
19
19
import { useAppDispatch } from "../../store" ;
20
20
import { ErrorResponseHandler } from "../../common/types" ;
@@ -27,27 +27,29 @@ import LoadingComponent from "../../common/LoadingComponent";
27
27
const LogoutPage = ( ) => {
28
28
const dispatch = useAppDispatch ( ) ;
29
29
const navigate = useNavigate ( ) ;
30
- const logout = ( ) => {
31
- const deleteSession = ( ) => {
32
- clearSession ( ) ;
33
- dispatch ( userLogged ( false ) ) ;
34
- localStorage . setItem ( "userLoggedIn" , "" ) ;
35
- localStorage . setItem ( "redirect-path" , "" ) ;
36
- dispatch ( resetSession ( ) ) ;
37
- navigate ( `/login` ) ;
30
+ useEffect ( ( ) => {
31
+ const logout = ( ) => {
32
+ const deleteSession = ( ) => {
33
+ clearSession ( ) ;
34
+ dispatch ( userLogged ( false ) ) ;
35
+ localStorage . setItem ( "userLoggedIn" , "" ) ;
36
+ localStorage . setItem ( "redirect-path" , "" ) ;
37
+ dispatch ( resetSession ( ) ) ;
38
+ navigate ( `/login` ) ;
39
+ } ;
40
+ const state = localStorage . getItem ( "auth-state" ) ;
41
+ api
42
+ . invoke ( "POST" , `/api/v1/logout` , { state } )
43
+ . then ( ( ) => {
44
+ deleteSession ( ) ;
45
+ } )
46
+ . catch ( ( err : ErrorResponseHandler ) => {
47
+ console . log ( err ) ;
48
+ deleteSession ( ) ;
49
+ } ) ;
38
50
} ;
39
- const state = localStorage . getItem ( "auth-state" ) ;
40
- api
41
- . invoke ( "POST" , `/api/v1/logout` , { state } )
42
- . then ( ( ) => {
43
- deleteSession ( ) ;
44
- } )
45
- . catch ( ( err : ErrorResponseHandler ) => {
46
- console . log ( err ) ;
47
- deleteSession ( ) ;
48
- } ) ;
49
- } ;
50
- logout ( ) ;
51
+ logout ( ) ;
52
+ } , [ dispatch , navigate ] ) ;
51
53
return < LoadingComponent /> ;
52
54
} ;
53
55
0 commit comments