mediahub-fe/components/partials/header/profile-info.tsx

158 lines
4.6 KiB
TypeScript
Raw Normal View History

2024-12-12 18:38:15 +00:00
"use client";
2024-11-26 03:09:48 +00:00
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuGroup,
DropdownMenuItem,
DropdownMenuLabel,
DropdownMenuPortal,
DropdownMenuSeparator,
DropdownMenuSub,
DropdownMenuSubContent,
DropdownMenuSubTrigger,
DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu";
2024-12-10 07:24:50 +00:00
import { Icon } from "@/components/ui/icon";
2024-11-26 03:09:48 +00:00
import Image from "next/image";
2024-12-10 07:24:50 +00:00
import { Link } from "@/i18n/routing";
2024-11-26 03:09:48 +00:00
import { Button } from "@/components/ui/button";
2024-12-12 18:38:15 +00:00
import Cookies from "js-cookie";
2024-12-29 09:09:10 +00:00
import { useEffect, useState } from "react";
import { useRouter } from "@/components/navigation";
import { getInfoProfile } from "@/service/auth";
type Detail = {
id: number;
userId: any;
firstName: string;
username: string;
fullname: string;
memberIdentity: any;
email: string;
address: string;
phoneNumber: any;
message: string;
};
2024-11-26 03:09:48 +00:00
const ProfileInfo = () => {
2024-12-12 18:38:15 +00:00
const username = Cookies.get("state");
const picture = Cookies.get("profile_picture");
2024-12-29 09:09:10 +00:00
const router = useRouter();
const [detail, setDetail] = useState<Detail>();
const onLogout = () => {
Object.keys(Cookies.get()).forEach((cookieName) => {
Cookies.remove(cookieName);
});
router.push("/");
};
2024-12-12 18:38:15 +00:00
useEffect(() => {
console.log("us", username);
}, [username]);
2024-11-26 03:09:48 +00:00
2024-12-29 09:09:10 +00:00
useEffect(() => {
async function initState() {
const response = await getInfoProfile();
2025-01-05 00:44:55 +00:00
const details = response?.data?.data;
2024-12-29 09:09:10 +00:00
setDetail(details);
console.log("data", details);
}
initState();
}, []);
2024-11-26 03:09:48 +00:00
return (
<div className="md:block hidden">
<DropdownMenu>
<DropdownMenuTrigger asChild className=" cursor-pointer">
2024-12-29 09:09:10 +00:00
{detail !== undefined ? (
<div className="flex items-center gap-3 text-default-800">
<Image
src={"/assets/avatar-profile.png"}
2024-12-29 09:09:10 +00:00
alt={"Image"}
width={36}
height={36}
className="rounded-full"
/>
<div>
<div className="text-sm font-medium capitalize lg:block hidden">
{detail?.fullname}
</div>
2025-03-03 02:46:53 +00:00
<p className="text-xs">({detail?.username})</p>
2024-12-26 11:29:22 +00:00
</div>
2024-12-29 09:09:10 +00:00
<span className="text-base me-2.5 lg:inline-block hidden">
<Icon icon="heroicons-outline:chevron-down"></Icon>
</span>
2024-11-26 03:09:48 +00:00
</div>
2024-12-29 09:09:10 +00:00
) : (
""
)}
2024-11-26 03:09:48 +00:00
</DropdownMenuTrigger>
<DropdownMenuContent className="w-56 p-0" align="end">
2024-12-26 11:29:22 +00:00
{/* <DropdownMenuLabel className="flex gap-2 items-center mb-1 p-3">
2024-11-26 03:09:48 +00:00
<Image
2024-12-12 18:38:15 +00:00
src={"/images/avatar/icon-avatar-1.png"}
alt={username as string}
2024-11-26 03:09:48 +00:00
width={36}
height={36}
className="rounded-full"
/>
<div>
<div className="text-sm font-medium text-default-800 capitalize ">
2024-12-12 18:38:15 +00:00
{username}
2024-11-26 03:09:48 +00:00
</div>
<Link
href="/dashboard"
className="text-xs text-default-600 hover:text-primary"
>
2024-12-12 18:38:15 +00:00
{username}
2024-11-26 03:09:48 +00:00
</Link>
</div>
2024-12-26 11:29:22 +00:00
</DropdownMenuLabel> */}
2024-11-26 03:09:48 +00:00
<DropdownMenuGroup>
{[
{
2024-12-26 11:29:22 +00:00
name: "profile & Settings",
2024-11-26 03:09:48 +00:00
icon: "heroicons:user",
2024-12-26 11:29:22 +00:00
href: "/profile",
2024-11-26 03:09:48 +00:00
},
].map((item, index) => (
<Link
href={item.href}
key={`info-menu-${index}`}
className="cursor-pointer"
>
<DropdownMenuItem className="flex items-center gap-2 text-sm font-medium text-default-600 capitalize px-3 py-1.5 cursor-pointer">
<Icon icon={item.icon} className="w-4 h-4" />
{item.name}
</DropdownMenuItem>
</Link>
))}
</DropdownMenuGroup>
<DropdownMenuSeparator />
<DropdownMenuGroup></DropdownMenuGroup>
2024-12-10 07:24:50 +00:00
<DropdownMenuItem className="flex items-center gap-2 text-sm font-medium text-default-600 capitalize my-1 px-3 cursor-pointer">
2024-11-26 03:09:48 +00:00
<div>
2024-12-26 11:29:22 +00:00
<Link href={"/auth"}>
2024-12-10 07:24:50 +00:00
<button
type="submit"
className=" w-full flex items-center gap-2"
2024-12-29 09:09:10 +00:00
onClick={onLogout}
2024-12-10 07:24:50 +00:00
>
2024-11-26 03:09:48 +00:00
<Icon icon="heroicons:power" className="w-4 h-4" />
Log out
</button>
2024-12-26 11:29:22 +00:00
</Link>
2024-11-26 03:09:48 +00:00
</div>
</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
</div>
);
};
export default ProfileInfo;