From 72be60d425eb3c45e3129294bc0ef320a474ce29 Mon Sep 17 00:00:00 2001 From: David Graham Date: Mon, 24 Jun 2024 16:51:23 -0400 Subject: [PATCH] add logout mutation to front end --- client/src/components/Layout/TopNav/TopNav.tsx | 4 +++- client/src/store/index.ts | 1 + client/src/store/userSlice/user.slice.ts | 7 +++++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/client/src/components/Layout/TopNav/TopNav.tsx b/client/src/components/Layout/TopNav/TopNav.tsx index 4dc7cf30b..18817b0e0 100644 --- a/client/src/components/Layout/TopNav/TopNav.tsx +++ b/client/src/components/Layout/TopNav/TopNav.tsx @@ -6,19 +6,21 @@ import React, { useContext } from 'react'; import { Button, Dropdown } from 'react-bootstrap'; import { useDispatch, useSelector } from 'react-redux'; import { Link, useNavigate } from 'react-router-dom'; -import { removeCredentials, selectAuthenticated } from 'store'; +import { removeCredentials, selectAuthenticated, useLogoutMutation } from 'store'; export function TopNav() { const { showSidebar, setShowSidebar } = useContext(NavContext); const isAuthenticated = useSelector(selectAuthenticated); const dispatch = useDispatch(); const navigation = useNavigate(); + const [logout] = useLogoutMutation(); if (!isAuthenticated) return null; const handleLogout = () => { dispatch(removeCredentials()); navigation('/login'); + logout(undefined); }; const toggleSidebar = () => { diff --git a/client/src/store/index.ts b/client/src/store/index.ts index eb765683a..f2cf06620 100644 --- a/client/src/store/index.ts +++ b/client/src/store/index.ts @@ -29,6 +29,7 @@ export const { export const { useLoginMutation, + useLogoutMutation, useGetUserQuery, useGetProfileQuery, useGetRcrainfoProfileQuery, diff --git a/client/src/store/userSlice/user.slice.ts b/client/src/store/userSlice/user.slice.ts index c2dc02e42..08ea6b198 100644 --- a/client/src/store/userSlice/user.slice.ts +++ b/client/src/store/userSlice/user.slice.ts @@ -95,6 +95,13 @@ export const userApi = haztrakApi.injectEndpoints({ }), invalidatesTags: ['auth'], }), + logout: build.mutation({ + query: () => ({ + url: 'user/logout', + method: 'POST', + }), + invalidatesTags: ['auth'], + }), getUser: build.query({ query: () => ({ url: 'user',