import { useState, useEffect } from 'react' import { supabase } from './supabaseClient' import Avatar from './Avatar' export default function Account({ user }) { const [loading, setLoading] = useState(true) const [username, setUsername] = useState(null) const [website, setWebsite] = useState(null) const [avatar_url, setAvatarUrl] = useState(null) useEffect(() => { let ignore = false async function getProfile() { setLoading(true) const { data, error } = await supabase .from('profiles') .select(`username, website, avatar_url`) .eq('id', user.id) .single() if (!ignore) { if (error) { console.warn(error) } else if (data) { setUsername(data.username) setWebsite(data.website) setAvatarUrl(data.avatar_url) } } setLoading(false) } getProfile() return () => { ignore = true } }, [user]) async function updateProfile(event, avatarUrl) { event.preventDefault() setLoading(true) const updates = { id: user.id, username, website, avatar_url: avatarUrl, updated_at: new Date(), } const { error } = await supabase.from('profiles').upsert(updates) if (error) { alert(error.message) } else { setAvatarUrl(avatarUrl) } setLoading(false) } return (
{ updateProfile(event, url) }} />
setUsername(e.target.value)} />
setWebsite(e.target.value)} />
) }