From cdce2c5512f1bcf43cff8a97b2c08ba9f0ef01c3 Mon Sep 17 00:00:00 2001 From: Sergey Yarkov Date: Sat, 29 Jan 2022 17:57:34 +0300 Subject: [PATCH] feat: online status --- src/hooks/queries/auth/useLogout.ts | 22 +++++++++++++++++++--- src/pages/main/main.tsx | 2 +- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/hooks/queries/auth/useLogout.ts b/src/hooks/queries/auth/useLogout.ts index 1d8f93f..3d763d4 100644 --- a/src/hooks/queries/auth/useLogout.ts +++ b/src/hooks/queries/auth/useLogout.ts @@ -13,7 +13,10 @@ import { SocketContext } from '@educt/contexts'; type LogoutResultDataType = Record; const useLogout = () => { - const { authStore } = useRootStore(); + const { + authStore, + userStore: { me }, + } = useRootStore(); const { socket } = useContext(SocketContext); const history = useHistory(); const toast = useToast(); @@ -21,11 +24,24 @@ const useLogout = () => { const logout = async () => { try { + const sessionId = window.localStorage.getItem('sessionId'); const result = await authStore.logout(); + history.push('/auth'); toast({ title: 'You are logged out.', isClosable: true, status: 'info' }); - // window.localStorage.removeItem('sessionId'); - socket?.disconnect(); + + /** + * Destroy session + */ + if (sessionId) { + if (socket) { + socket.auth = { sessionId: undefined }; + // socket.emit('user:logout', { sessionId }); + socket.disconnect(); + } + window.localStorage.removeItem('sessionId'); + } + return result.data; } catch (error) { handleError(error); diff --git a/src/pages/main/main.tsx b/src/pages/main/main.tsx index 7dd5df8..bedec1c 100644 --- a/src/pages/main/main.tsx +++ b/src/pages/main/main.tsx @@ -47,7 +47,7 @@ const MainPage: React.FC = () => { if (stat) { setOnline(stat.online); } - }, [stat?.online]); + }, [stat]); if (me === null || courses === null || stat === null) return ;