feat: implement logout action

This commit is contained in:
Ardeman
2025-02-27 23:50:46 +08:00
parent 5acf3970a3
commit 7db38d3b67
8 changed files with 70 additions and 19 deletions
+24 -8
View File
@@ -1,4 +1,4 @@
import { Link, useRouteLoaderData } from 'react-router'
import { Link, useFetcher, useRouteLoaderData } from 'react-router'
import { Button } from '~/components/ui/button'
import { APP } from '~/configs/meta'
@@ -8,6 +8,7 @@ import type { loader } from '~/routes/_layout.news'
export const HeaderTop = () => {
const { setIsLoginOpen } = useNewsContext()
const loaderData = useRouteLoaderData<typeof loader>('routes/_layout.news')
const fetcher = useFetcher()
return (
<>
@@ -29,13 +30,28 @@ export const HeaderTop = () => {
<Button className="h-8 w-auto rounded-none px-3 text-xs sm:h-[50px] sm:w-[150px] sm:text-lg">
About Us
</Button>
<Button
variant="newsSecondary"
className="hidden sm:block"
onClick={() => setIsLoginOpen(true)}
>
{loaderData?.userToken ? 'Logout' : 'Masuk'}
</Button>
{loaderData?.userToken ? (
<fetcher.Form
method="POST"
action="/actions/news/logout"
>
<Button
variant="newsSecondary"
className="hidden sm:block"
type="submit"
>
Logout
</Button>
</fetcher.Form>
) : (
<Button
variant="newsSecondary"
className="hidden sm:block"
onClick={() => setIsLoginOpen(true)}
>
Masuk
</Button>
)}
</div>
</div>
</>