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"
/>
)
}