import { Divider } from "antd"; import { useRouter } from "next/router"; import { useEffect, useState } from "react"; import { useAuth } from "../../contexts/authContext"; import { User } from "../../models/user"; import UserService from "../../services/userService"; import Image from "next/image"; export default function Profile() { const { currUser, logOut } = useAuth() const [user, setUser] = useState(null) const router = useRouter() const userService: UserService = new UserService() useEffect(() => { (async function() { try { // if not authenticated, take user to the login if (!currUser) { console.log('not authenticated...routing from dashboard to teams home') // router.push('/teams/login') } // get user const returnedUser: User|null = await userService.getUser(currUser.uid) // if the user is null, then go ahead and create the user even though it's not there yet if (!returnedUser) { userService.createUser(currUser.uid, currUser.email, currUser.photoURL) } console.log('got user from the backend') setUser(returnedUser) setNickname(returnedUser.nickName ?? '') setFirstName(returnedUser.firstName ?? currUser.displayName.split(" ")[0]) setLastName(returnedUser.lastName ?? '') } catch(error) { console.log(error) router.push('/teams/login') } })(); }, []) async function handleSubmit(e) { e.preventDefault(); if (!firstName) { setError('Must input first name') return } else if (!lastName) { setError('Must input last name') return } else if (!nickname) { setError('Must input nickname') return } else if (nickname.length > 22) { setError('nickname must be less than 22 characters') return } // create the user in the backend or just merge results let newUser = new User() newUser.id = currUser.uid newUser.firstName = firstName newUser.lastName = lastName newUser.nickName = nickname newUser.avatarUrl = currUser.photoURL try { await userService.updateUser(newUser) router.push('/teams') } catch(error) { setError('Something went wrong in saving your information. Please try again.') } } const [firstName, setFirstName] = useState(currUser.displayName.split(" ")[0]); const [lastName, setLastName] = useState(''); const [nickname, setNickname] = useState('') const [error, setError] = useState('') return (
{/* header */}
Profile
{ error && {error} } Avatar Please change your google image to change this. asdf Email This is set from your Google account and cannot be changed. First Name setFirstName(e.target.value)} /> Last Name setLastName(e.target.value)} /> Nickname What does your team call you? setNickname(e.target.value)} /> {/* if they already had a nickname, they are probably revisiting this page */} {/* can't cancel if they are a new user */} { user && user.nickName ? <> : <> {/* if they already had a nickname, they are probably revisiting this page */} } ) }