import { Avatar, Divider, Group, Menu, Text, TextInput, UnstyledButton, rem, } from '@mantine/core' import { showNotification } from '@mantine/notifications' import { IconCheck, IconLockOpen, IconLogout, IconSearch, IconUserCog, IconX, } from '@tabler/icons-react' import { useMutation } from '@tanstack/react-query' import _ from 'lodash' import Router from 'next/router' import { env } from '~/config/env' import { useAuthSession } from '~/core/hooks/useAuthSession/useAuthSession' import { getInitialName } from '~/core/utils/formatter' import useVerifySession from '~/data/query/useVerifySession' import AuthRepository from '~/data/repository/AuthRepository' import classes from './Header.module.css' export default function Header() { const queryAuth = useAuthSession() const { data } = queryAuth const { remove } = useVerifySession() const postLogout = useMutation(() => AuthRepository.logout({ user_id: String(queryAuth?.data?.id) }) ) async function handleLogout() { try { const response = await postLogout.mutateAsync() const message = _.get(response, 'data.message', '') // remove session localStorage.removeItem(env.LOCAL_STORAGE_SESSION) remove() // remove cache react query // show notif showNotification({ title: `See you again!`, message, color: 'green', withCloseButton: false, icon: , }) // direct success login Router.push('/') } catch (error) { const errMessage = _.get(error, 'response.data.message', '') showNotification({ title: 'Error', message: errMessage, icon: , color: 'red', }) } } return (
} placeholder="Search" radius="md" /> {`Halo, ${data?.fullname}`} {getInitialName(String(data?.fullname))} } > Profile } > Change Password } onClick={() => handleLogout()} > Logout
) }