Files
buzz-sheet/components/auth/sign-out-button.tsx
T
gunshiz dd6977b3b4
CI / Build immutable images and deploy (push) Canceled after 0s
CI / Verify (push) Canceled after 8s
chore(auth) : show sign-out icon without text
2026-10-06 18:05:38 +07:00

27 lines
964 B
TypeScript

"use client";
import { useRouter } from "next/navigation";
import { LogOutIcon } from "lucide-react";
import { Button } from "@/components/ui/button";
import { authClient } from "@/lib/auth/client";
import { markSudlohSignInAttempt } from "@/lib/auth/sudloh-redirect";
import { unsubscribeCommissionPush } from "@/components/commission/push-client";
export function SignOutButton({ admin = false }: { admin?: boolean }) {
const router = useRouter();
const { data } = authClient.useSession();
if (!admin && !data?.user) return null;
async function signOut() {
await unsubscribeCommissionPush().catch(() => undefined);
await authClient.signOut();
markSudlohSignInAttempt();
router.push(admin ? "/auth/login?next=%2Fadmin" : "/commission");
router.refresh();
}
return <Button type="button" variant="ghost" size="icon-sm" aria-label="ออกจากระบบ" onClick={() => void signOut()}>
<LogOutIcon />
</Button>;
}