import { Avatar, AvatarFallback, AvatarImage } from "./ui/avatar"; import { Button } from "./ui/button"; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "./ui/card"; import { Input } from "./ui/input"; import { Label } from "./ui/label"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue,} from "./ui/select"; import { Separator } from "./ui/separator"; import { Textarea } from "./ui/textarea"; import React, { useState, useEffect } from 'react'; import UpdateAvatar from './UpdateAvatar'; interface SessionData { [key: string]: any; } interface UserData { success: boolean; session_data: SessionData; user_avatar: string; } export default function ProfilePage() { const [userData, setUserData] = useState(null); const [invoiceList, setInvoiceList] = useState([]); const [error, setError] = useState(null); useEffect(() => { const fetchSessionData = async () => { try { const response = await fetch( 'http://localhost:2058/host-api/v1/users/get-profile-data/', { credentials: 'include', // Crucial for cookies headers: { 'Accept': 'application/json' } } ); const data = await response.json(); if (!response.ok || !data.success) { throw new Error(data.error || 'Session fetch failed'); } setUserData(data); return data.session_data; } catch (error) { console.error('Fetch error:', error); throw error; } }; const getInvoiceListData = async () => { try { const response = await fetch('http://localhost:2058/host-api/v1/invoice/invoice-info/', { method: 'GET', credentials: 'include', // Crucial for cookies headers: { 'Accept': 'application/json' } }); if (!response.ok) { throw new Error(`HTTP error! Status: ${response.status}`); } const data = await response.json(); if (!data.success) { throw new Error(data.message || 'Session fetch failed'); } setInvoiceList(data.data); // Fix: Use `data.data` instead of `data` return data.data; // Fix: `session_data` does not exist in response } catch (error) { console.error('Fetch error:', error); throw error; } }; fetchSessionData(); getInvoiceListData(); }, []); if (error) { return
Error: {error}
; } if (!userData) { return
Loading profile data...
; } return (
Personal Information Update your personal information and avatar.
JP
Billing Information View your billing history. { invoiceList.map((invoice) => ( )) }
Invoice ID Date Description Amount Action
{invoice.invoice_id} {invoice.date} {invoice.description} {invoice.amount} Print
Security Update your password and security settings.
Danger Zone These actions are irreversible. Proceed with caution.
); }