avatar update and manage user table
This commit is contained in:
@@ -1,37 +1,60 @@
|
||||
"use client";
|
||||
import Image from "next/image";
|
||||
import Link from "next/link";
|
||||
import React, { useState } from "react";
|
||||
import React, { useEffect, useState } from "react";
|
||||
import { Dropdown } from "../ui/dropdown/Dropdown";
|
||||
import { DropdownItem } from "../ui/dropdown/DropdownItem";
|
||||
import { fullDataUser } from "@/interface/admin";
|
||||
import { UserMetaCardProps } from "@/interface/user";
|
||||
import { apiGetCurrentUser } from "@/service/auth";
|
||||
|
||||
export default function UserDropdown() {
|
||||
const [isOpen, setIsOpen] = useState(false);
|
||||
|
||||
function toggleDropdown(e: React.MouseEvent<HTMLButtonElement, MouseEvent>) {
|
||||
e.stopPropagation();
|
||||
setIsOpen((prev) => !prev);
|
||||
}
|
||||
const [user, setUser] = useState<UserMetaCardProps | null>(null);
|
||||
const [loading, setLoading] = useState<boolean>(true);
|
||||
function toggleDropdown(e: React.MouseEvent<HTMLButtonElement, MouseEvent>) {
|
||||
e.stopPropagation();
|
||||
setIsOpen((prev) => !prev);
|
||||
}
|
||||
|
||||
function closeDropdown() {
|
||||
setIsOpen(false);
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
const fetchUser = async () => {
|
||||
try {
|
||||
const userData = await apiGetCurrentUser();
|
||||
console.log("User data in dropdown:", userData);
|
||||
setUser(userData);
|
||||
} catch (err) {
|
||||
console.error("Lỗi:", err);
|
||||
} finally {
|
||||
setLoading(false);
|
||||
}
|
||||
};
|
||||
fetchUser();
|
||||
}, []);
|
||||
|
||||
|
||||
return (
|
||||
<div className="relative">
|
||||
<button
|
||||
onClick={toggleDropdown}
|
||||
onClick={toggleDropdown}
|
||||
className="flex items-center text-gray-700 dark:text-gray-400 dropdown-toggle"
|
||||
>
|
||||
<span className="mr-3 overflow-hidden rounded-full h-11 w-11">
|
||||
<Image
|
||||
width={44}
|
||||
height={44}
|
||||
src="/images/user/owner.jpg"
|
||||
src={user?.data?.profile?.avatar_url || "/images/no-images.jpg"}
|
||||
alt="User"
|
||||
/>
|
||||
</span>
|
||||
|
||||
<span className="block mr-1 font-medium text-theme-sm">Musharof</span>
|
||||
<span className="block mr-1 font-medium text-theme-sm">
|
||||
{user?.data?.profile?.display_name || "User"}
|
||||
</span>
|
||||
|
||||
<svg
|
||||
className={`stroke-gray-500 dark:stroke-gray-400 transition-transform duration-200 ${
|
||||
@@ -60,10 +83,10 @@ function toggleDropdown(e: React.MouseEvent<HTMLButtonElement, MouseEvent>) {
|
||||
>
|
||||
<div>
|
||||
<span className="block font-medium text-gray-700 text-theme-sm dark:text-gray-400">
|
||||
Musharof Chowdhury
|
||||
{user?.data?.profile?.display_name || "User"}
|
||||
</span>
|
||||
<span className="mt-0.5 block text-theme-xs text-gray-500 dark:text-gray-400">
|
||||
randomuser@pimjo.com
|
||||
{user?.data?.email || "email"}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@@ -93,7 +116,7 @@ function toggleDropdown(e: React.MouseEvent<HTMLButtonElement, MouseEvent>) {
|
||||
Edit profile
|
||||
</DropdownItem>
|
||||
</li>
|
||||
<li>
|
||||
{/* <li>
|
||||
<DropdownItem
|
||||
onItemClick={closeDropdown}
|
||||
tag="a"
|
||||
@@ -117,7 +140,7 @@ function toggleDropdown(e: React.MouseEvent<HTMLButtonElement, MouseEvent>) {
|
||||
</svg>
|
||||
Account settings
|
||||
</DropdownItem>
|
||||
</li>
|
||||
</li> */}
|
||||
<li>
|
||||
<DropdownItem
|
||||
onItemClick={closeDropdown}
|
||||
|
||||
Reference in New Issue
Block a user