diff --git a/shared/models/auth/logout.ts b/shared/models/auth/logout.ts new file mode 100644 index 0000000..4e01ddb --- /dev/null +++ b/shared/models/auth/logout.ts @@ -0,0 +1,23 @@ +"use server"; + +import { backendFetch } from "@/shared/helpers/backendFetch"; +import { cookies } from "next/headers"; + +export const logout = async () => { + const res = await backendFetch("auth/logout", { + method: "POST", + }); + + if (res.success) { + (await cookies()).delete("auth_token"); + return { + success: true, + message: "Logged out successfully", + }; + } else { + return { + success: false, + message: "Logout failed", + }; + } +}; diff --git a/shared/widgets/navbar/components/LogoutAlert.tsx b/shared/widgets/navbar/components/LogoutAlert.tsx index 1e5b254..b15bd34 100644 --- a/shared/widgets/navbar/components/LogoutAlert.tsx +++ b/shared/widgets/navbar/components/LogoutAlert.tsx @@ -6,12 +6,11 @@ import { AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, - AlertDialogMedia, AlertDialogTitle, } from "@/shared/libs/shadcn/ui/alert-dialog"; import { Spinner } from "@/shared/libs/shadcn/ui/spinner"; +import { logout } from "@/shared/models/auth/logout"; import { Button } from "@base-ui/react"; -import { LogOut } from "lucide-react"; import React from "react"; const LogoutAlert = ({ @@ -22,6 +21,12 @@ const LogoutAlert = ({ setOpenState: React.Dispatch>; }) => { const [isLoading, setIsLoading] = React.useState(false); + const continueLogout = async () => { + setIsLoading(true); + await logout().then((res) => + res.success ? window.location.reload() : setIsLoading(false), + ); + }; return ( @@ -46,7 +51,7 @@ const LogoutAlert = ({