import { useState, useEffect } from 'react' import { useAuth } from '../context/AuthContext' const API_URL = '/api' function ProfilePage({ onBack }) { const { user, logout } = useAuth() const [profile, setProfile] = useState(null) const [measurements, setMeasurements] = useState(null) const [strength, setStrength] = useState(null) const [editing, setEditing] = useState(false) const [loading, setLoading] = useState(true) const [saving, setSaving] = useState(false) // Edit form state const [form, setForm] = useState({}) useEffect(() => { fetchData() }, []) const fetchData = async () => { try { const [profileRes, measurementsRes, strengthRes] = await Promise.all([ fetch(`${API_URL}/user/profile/${user?.id || 1}`), fetch(`${API_URL}/user/measurements/${user?.id || 1}`), fetch(`${API_URL}/user/strength/${user?.id || 1}`) ]) const profileData = await profileRes.json() const measurementsData = await measurementsRes.json() const strengthData = await strengthRes.json() setProfile(profileData) setMeasurements(measurementsData) setStrength(strengthData) setForm(profileData) setLoading(false) } catch (err) { console.error('Failed to fetch profile:', err) setLoading(false) } } const handleSave = async () => { setSaving(true) try { const res = await fetch(`${API_URL}/user/profile/${user?.id || 1}`, { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(form) }) const updated = await res.json() setProfile(updated) setEditing(false) } catch (err) { console.error('Failed to save profile:', err) } setSaving(false) } const handleChange = (field, value) => { setForm(prev => ({ ...prev, [field]: value })) } if (loading) { return (

Laddar profil...

) } const latestMeasurement = measurements?.[0] const latestStrength = strength?.[0] return (

Min profil

{/* Profile Info */}

Personuppgifter

{!editing && ( )}
{editing ? (
handleChange('name', e.target.value)} />
handleChange('age', parseInt(e.target.value))} />
handleChange('height_cm', parseFloat(e.target.value))} />
handleChange('workouts_per_week', parseInt(e.target.value))} />
) : (
Namn {profile?.name || '-'}
Ålder {profile?.age || '-'} år
Längd {profile?.height_cm || '-'} cm
Kön {profile?.gender === 'male' ? 'Man' : 'Kvinna'}
Mål {getGoalLabel(profile?.goal)}
Nivå {getLevelLabel(profile?.experience_level)}
Pass/vecka {profile?.workouts_per_week || '-'}
)}
{/* Current Measurements */}

Aktuella mätningar

{latestMeasurement ? (
⚖️ {latestMeasurement.weight} kg Vikt
{latestMeasurement.body_fat_pct && (
📊 {latestMeasurement.body_fat_pct}% Kroppsfett
)} {latestMeasurement.waist_cm && (
📏 {latestMeasurement.waist_cm} cm Midja
)} {latestMeasurement.neck_cm && (
📏 {latestMeasurement.neck_cm} cm Nacke
)}
) : (

Inga mätningar registrerade

)}
{/* Strength Records */}

Styrkerekord (1RM)

{latestStrength ? (
Bänkpress {latestStrength.bench_1rm || '-'} kg
Knäböj {latestStrength.squat_1rm || '-'} kg
Marklyft {latestStrength.deadlift_1rm || '-'} kg
) : (

Inga styrkerekord registrerade

)}
) } function getGoalLabel(goal) { const labels = { muscle: 'Bygga muskler', strength: 'Öka styrka', fat_loss: 'Fettförbränning', general: 'Allmän fitness' } return labels[goal] || goal || '-' } function getLevelLabel(level) { const labels = { beginner: 'Nybörjare', intermediate: 'Medel', advanced: 'Avancerad' } return labels[level] || level || '-' } export default ProfilePage