import { router } from '@inertiajs/core'; import { Link, useForm } from '@inertiajs/react'; import classNames from 'classnames'; import React, { useRef, useState } from 'react'; import useRoute from '@/Hooks/useRoute'; import ActionMessage from '@/Components/ActionMessage'; import FormSection from '@/Components/FormSection'; import InputError from '@/Components/InputError'; import InputLabel from '@/Components/InputLabel'; import PrimaryButton from '@/Components/PrimaryButton'; import TextInput from '@/Components/TextInput'; import SecondaryButton from '@/Components/SecondaryButton'; import { User } from '@/types'; import useTypedPage from '@/Hooks/useTypedPage'; interface Props { user: User; } export default function UpdateProfileInformationForm({ user }: Props) { const form = useForm({ _method: 'PUT', name: user.name, email: user.email, photo: null as File | null, }); const route = useRoute(); const [photoPreview, setPhotoPreview] = useState(null); const photoRef = useRef(null); const page = useTypedPage(); const [verificationLinkSent, setVerificationLinkSent] = useState(false); function updateProfileInformation() { form.post(route('user-profile-information.update'), { errorBag: 'updateProfileInformation', preserveScroll: true, onSuccess: () => clearPhotoFileInput(), }); } function selectNewPhoto() { photoRef.current?.click(); } function updatePhotoPreview() { const photo = photoRef.current?.files?.[0]; if (!photo) { return; } form.setData('photo', photo); const reader = new FileReader(); reader.onload = e => { setPhotoPreview(e.target?.result as string); }; reader.readAsDataURL(photo); } function deletePhoto() { router.delete(route('current-user-photo.destroy'), { preserveScroll: true, onSuccess: () => { setPhotoPreview(null); clearPhotoFileInput(); }, }); } function clearPhotoFileInput() { if (photoRef.current?.value) { photoRef.current.value = ''; form.setData('photo', null); } } return ( ( <> Saved. Save )} > {/* */} {page.props.jetstream.managesProfilePhotos ? (
{/* */} {photoPreview ? ( //
) : ( //
{user.name}
)} Select A New Photo {user.profile_photo_path ? ( Remove Photo ) : null}
) : null} {/* */}
form.setData('name', e.currentTarget.value)} autoComplete="name" />
{/* */}
form.setData('email', e.currentTarget.value)} /> {page.props.jetstream.hasEmailVerification && user.email_verified_at === null ? (

Your email address is unverified. { e.preventDefault(); setVerificationLinkSent(true); }} > Click here to re-send the verification email.

{verificationLinkSent && (
A new verification link has been sent to your email address.
)}
) : null}
); }