import { useEffect, useState } from "react"; import http, { getAccessToken, logout } from "../http"; import { useNavigate } from "react-router-dom"; import { UserProfile } from "../models/user-profile"; import { Button, Card, Divider, Input, Modal, ModalBody, ModalContent, ModalFooter, ModalHeader, useDisclosure, } from "@heroui/react"; import Markdown from "react-markdown"; import remarkGfm from "remark-gfm"; import { IconDownload, IconEdit, IconUpload } from "@tabler/icons-react"; import { toast } from "react-toastify"; import ChangePasswordView from "../components/ChangePasswordView"; import Manage2FAView from "../components/Manage2FAView"; export default function MemberPage() { const accessToken = getAccessToken(); const navigate = useNavigate(); const { isOpen: changePasswordModalIsOpen, onOpen: changePasswordModalOnOpen, onOpenChange: changePasswordModalOnOpenChange, } = useDisclosure(); const { isOpen: twoFactorAuthModalIsOpen, onOpen: twoFactorAuthModalOnOpen, onOpenChange: twoFactorAuthModalOnOpenChange, } = useDisclosure(); const [userProfile, setUserProfile] = useState(null); const getProfile = () => { http.get("/User/profile").then((response) => { if (response.status !== 200) { navigate("/error"); } setUserProfile(response.data); }); }; useEffect(() => { if (!accessToken) { window.location.reload(); } getProfile(); }, []); const handleUploadResume = () => { const fileInput = document.createElement("input"); fileInput.type = "file"; fileInput.accept = ".pdf,.doc,.docx"; fileInput.onchange = async () => { const file = fileInput.files?.[0]; if (file) { const formData = new FormData(); formData.append("file", file); try { const response = await http.post("/User/upload-resume", formData, { headers: { "Content-Type": "multipart/form-data", }, }); if (response.status === 200) { getProfile(); } else { toast.error("Upload failed: " + response); } } catch (error) { toast.error("Error uploading file: " + error); } } }; fileInput.click(); }; const handleDownloadResume = async () => { try { const response = await http.get("/User/resume", { responseType: "blob", // Ensure response is treated as a file }); if (response.status === 200) { if (!userProfile) return; let fileName = userProfile.resumeName; const url = window.URL.createObjectURL(new Blob([response.data])); const link = document.createElement("a"); link.href = url; link.setAttribute("download", fileName); document.body.appendChild(link); link.click(); document.body.removeChild(link); } else { console.error("Failed to download resume", response); } } catch (error) { console.error("Error downloading resume", error); } }; return (
{userProfile && (

{userProfile.firstName} {userProfile.lastName}

Ace Job Agency Member (Tier 3)

Resume

Who am I

{userProfile.whoAmI.length > 0 ? ( {userProfile.whoAmI} ) : (

You have not wrote anything about yourself.

)}
)} {(onClose) => ( <> )} {(on2FAClose) => ( <> {userProfile && ( )} )}
); } function InfoCell({ label, value }: { label: string; value: string }) { return (

{label}

); }