Client Form to Do
Client Form to Do
// import 'react-phone-number-input/style.css';
// import CustomFormField, { FormFieldType } from '../CustomFormField';
// import SubmitButton from '../SubmitButton';
// import { toast, Toaster } from 'sonner';
// import {
// createUser,
// registerUserDocument,
// } from '../../lib/actions/client.actions';
// import { UserContext } from '@/context/UserContext';
// useEffect(() => {
// if (isLoggedIn) {
// toast.warning('Hmm Looks like you are already logged in 🤔');
// }
// }, [isLoggedIn]);
// try {
// const user = {
// name: values.name,
// email: values.email,
// phone: values.phone,
// password: values.password,
// };
// // Create user and handle response
// const newUser = await createUser(user);
// const newUserDoc = {
// userId: id,
// name: values.name,
// email: values.email,
// phone: values.phone,
// password: values.password,
// };
// console.log('newUserDoc', newUserDoc);
// // registers user document in database and handles response
// await registerUserDocument(newUserDoc);
// toast.success('Login Successful! 🎉');
// router.push(`/clients/${id}/new-appointment`);
// console.log('im here 123 newUserDoc', newUserDoc);
// setIsLoggedIn(true);
// } else {
// toast.error('User data fetch failed.');
// }
// };
// } else {
// console.log('Error during user registration blabla:', data);
// toast.error(`Login Failed: ${data?.error}.`);
// }
// } catch (error) {
// console.error('Error during user registration or login:', error);
// toast.error('An error occurred. Please try again.');
// } finally {
// setIsLoading(false);
// }
// };
// return (
// <Form {...form}>
// <form onSubmit={form.handleSubmit(onSubmit)} className='flex-1 space-y-6'>
// <section className='mb-12 space-y-4'>
// <h1 className='header'>Hi there 👋</h1>
// <p className='text-dark-700'>Get started with appointments.</p>
// </section>
// <CustomFormField
// fieldType={FormFieldType.INPUT}
// control={form.control}
// name='name'
// label='Full name'
// placeholder='Enter your Name'
// iconSrc='/assets/icons/user.svg'
// iconAlt='user'
// />
// <CustomFormField
// fieldType={FormFieldType.INPUT}
// control={form.control}
// name='email'
// label='Email'
// placeholder='Enter your Email'
// iconSrc='/assets/icons/email.svg'
// iconAlt='email'
// />
// <CustomFormField
// fieldType={FormFieldType.INPUT}
// control={form.control}
// name='password'
// label='Password'
// placeholder='Enter your Password'
// iconSrc='/assets/icons/password.svg'
// iconAlt='password'
// />
// <CustomFormField
// fieldType={FormFieldType.PHONE_INPUT}
// control={form.control}
// name='phone'
// label='Phone number'
// placeholder='Enter your Phone number'
// />
'use client';
import 'react-phone-number-input/style.css';
import CustomFormField, { FormFieldType } from '../CustomFormField';
import SubmitButton from '../SubmitButton';
import { toast, Toaster } from 'sonner';
import {
createUser,
registerUserDocument,
} from '../../lib/actions/client.actions';
import { UserContext } from '@/context/UserContext';
if (!userContext) {
throw new Error('ClientForm must be used within a UserContextProvider');
}
useEffect(() => {
if (isLoggedIn) {
toast.warning('Hmm Looks like you are already logged in 🤔');
router.push('/'); // Redirect the user if already logged in
}
}, [isLoggedIn, router]);
try {
// Create the user
await createUser({
name: values.name,
email: values.email,
phone: values.phone,
password: values.password,
});
const newUserDoc = {
userId: id,
name: values.name,
email: values.email,
phone: values.phone,
password: values.password,
};
await registerUserDocument(newUserDoc);
toast.success('Login Successful! 🎉');
setIsLoggedIn(true);
router.push(`/clients/${id}/new-appointment`);
} else {
toast.error('User data fetch failed.');
}
} else {
toast.error(`Login Failed: ${data?.error}.`);
}
} catch (error) {
console.error('Error during user registration or login:', error);
toast.error('An error occurred. Please try again.');
} finally {
setIsLoading(false);
}
};
return (
<Form {...form}>
<form onSubmit={form.handleSubmit(onSubmit)} className='flex-1 space-y-6'>
<section className='mb-12 space-y-4'>
<h1 className='header'>Hi there 👋</h1>
<p className='text-dark-700'>Get started with appointments.</p>
</section>
<CustomFormField
fieldType={FormFieldType.INPUT}
control={form.control}
name='name'
label='Full name'
placeholder='Enter your Name'
iconSrc='/assets/icons/user.svg'
iconAlt='user'
/>
<CustomFormField
fieldType={FormFieldType.INPUT}
control={form.control}
name='email'
label='Email'
placeholder='Enter your Email'
iconSrc='/assets/icons/email.svg'
iconAlt='email'
/>
<CustomFormField
fieldType={FormFieldType.INPUT}
control={form.control}
name='password'
label='Password'
placeholder='Enter your Password'
iconSrc='/assets/icons/password.svg'
iconAlt='password'
/>
<CustomFormField
fieldType={FormFieldType.PHONE_INPUT}
control={form.control}
name='phone'
label='Phone number'
placeholder='Enter your Phone number'
/>