import { useEffect, useRef, useState } from "react"; import { Camera, FolderOpen, Save, UserRound } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from "@/components/ui/dialog"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Textarea } from "@/components/ui/textarea"; import { roleLabel, statusLabel, updateProfile, type StoredUser } from "@/lib/auth-service"; import { formatStamp, listProjects, type StoredProject } from "@/lib/studio-storage"; type Props = { open: boolean; onOpenChange: (v: boolean) => void; user: StoredUser; onUserChange: (u: StoredUser) => void; onOpenProject: (p: StoredProject) => void; }; export default function ProfileDialog({ open, onOpenChange, user, onUserChange, onOpenProject }: Props) { const fileRef = useRef(null); const [displayName, setDisplayName] = useState(user.displayName ?? user.username); const [about, setAbout] = useState(user.about ?? ""); const [avatar, setAvatar] = useState(user.avatar ?? ""); const [items, setItems] = useState([]); const [savedAt, setSavedAt] = useState(0); useEffect(() => { if (!open) return; setDisplayName(user.displayName ?? user.username); setAbout(user.about ?? ""); setAvatar(user.avatar ?? ""); setItems(listProjects(user.id)); }, [open, user]); const pickAvatar = (file: File) => { const reader = new FileReader(); reader.onload = () => setAvatar(String(reader.result ?? "")); reader.readAsDataURL(file); }; const save = () => { const next = updateProfile(user.id, { displayName: displayName.trim(), about: about.trim(), avatar }); if (next) onUserChange(next); setSavedAt(Date.now()); }; return ( Профиль Данные аккаунта, аватар и сохранённые работы. { const f = e.target.files?.[0]; if (f) pickAvatar(f); e.target.value = ""; }} />
{avatar ? ( Аватар пользователя ) : ( )}
setDisplayName(e.target.value)} />