@@ -12,16 +12,27 @@ import {
1212} from '../../../../../app/routes/constants/routes' ;
1313import { useAuth } from '../../../../hooks/use-auth' ;
1414
15-
1615const logoutStyle = {
1716 marginTop : 'auto' ,
1817 marginBottom : 0 ,
1918} ;
2019
2120const useSidebar = ( ) => {
2221 const [ showExpandedView , setShowExpandedView ] = useState ( false ) ;
22+ const [ showLogoutModal , setShowLogoutModal ] = useState ( false ) ;
23+
2324 const { logout } = useAuth ( ) ;
2425
26+ // open modal
27+ const handleLogoutClick = useCallback ( ( ) => {
28+ setShowLogoutModal ( true ) ;
29+ } , [ ] ) ;
30+
31+ // confirm logout
32+ const confirmLogout = useCallback ( ( ) => {
33+ setShowLogoutModal ( false ) ;
34+ logout ( ) ;
35+ } , [ logout ] ) ;
2536
2637 const handleMouseHoverIn = useCallback ( ( ) => {
2738 setShowExpandedView ( true ) ;
@@ -31,7 +42,6 @@ const useSidebar = () => {
3142 setShowExpandedView ( false ) ;
3243 } , [ ] ) ;
3344
34-
3545 const sidebarItems = useMemo ( ( ) => {
3646 const items : SideBarItemsType [ ] = [
3747 {
@@ -68,27 +78,33 @@ const useSidebar = () => {
6878 screenName : ROUTES_PAGE_V1 . SETTINGS ,
6979 } ,
7080 ] ;
71-
81+
7282 const secondaryItems : SideBarItemsType [ ] = [
7383 {
7484 icon : PowerSettingsNewIcon ,
75- onClick : logout ,
85+ onClick : handleLogoutClick ,
7686 title : 'Logout' ,
7787 style : logoutStyle ,
7888 } ,
7989 ] ;
90+
8091 return {
8192 items : items . filter ( ( { disable } ) => ! disable ) ,
8293 secondaryItems : secondaryItems . filter ( ( { disable } ) => ! disable ) ,
8394 } ;
84- } , [ logout ] ) ;
85-
95+ } , [ handleLogoutClick ] ) ;
8696
8797 return {
8898 showExpandedView,
8999 handleMouseHoverIn,
90100 handleMouseHoverOut,
91101 sidebarItems,
102+
103+ // modal controls
104+ showLogoutModal,
105+ setShowLogoutModal,
106+ confirmLogout,
92107 } ;
93108} ;
109+
94110export default useSidebar ;
0 commit comments