1
1
import { useCallback , useEffect , useRef } from 'react' ;
2
+ import { removeDoubleSlashes } from '../routing/useCreatePath' ;
3
+ import { useLocation , useNavigate , Path } from 'react-router-dom' ;
2
4
3
5
import useAuthProvider , { defaultAuthParams } from './useAuthProvider' ;
4
6
import { useResetStore } from '../store' ;
5
7
import { useBasename } from '../routing' ;
6
- import { removeDoubleSlashes } from '../routing/useCreatePath' ;
7
- import { useLocation , useNavigate , Path } from 'react-router-dom' ;
8
+ import { useResetResourceDefinitions } from '../core/useResetResourceDefinitions' ;
8
9
9
10
/**
10
11
* Get a callback for calling the authProvider.logout() method,
@@ -27,6 +28,7 @@ import { useLocation, useNavigate, Path } from 'react-router-dom';
27
28
const useLogout = ( ) : Logout => {
28
29
const authProvider = useAuthProvider ( ) ;
29
30
const resetStore = useResetStore ( ) ;
31
+ const resetResources = useResetResourceDefinitions ( ) ;
30
32
const navigate = useNavigate ( ) ;
31
33
// useNavigate forces rerenders on every navigation, even if we don't use the result
32
34
// see https://github.com/remix-run/react-router/issues/7634
@@ -64,6 +66,7 @@ const useLogout = (): Logout => {
64
66
authProvider . logout ( params ) . then ( redirectToFromProvider => {
65
67
if ( redirectToFromProvider === false ) {
66
68
resetStore ( ) ;
69
+ resetResources ( ) ;
67
70
// do not redirect
68
71
return ;
69
72
}
@@ -94,10 +97,11 @@ const useLogout = (): Logout => {
94
97
}
95
98
navigateRef . current ( newLocation , newLocationOptions ) ;
96
99
resetStore ( ) ;
100
+ resetResources ( ) ;
97
101
98
102
return redirectToFromProvider ;
99
103
} ) ,
100
- [ authProvider , resetStore , loginUrl ]
104
+ [ authProvider , resetStore , resetResources , loginUrl ]
101
105
) ;
102
106
103
107
const logoutWithoutProvider = useCallback (
0 commit comments