Commit 26f803b2 by Arjun Jhukal

simplified user creations for the admin

parent f4303093
...@@ -6,7 +6,7 @@ import AdminDashboardRoot from '../../(admin)/AdminDashboard'; ...@@ -6,7 +6,7 @@ import AdminDashboardRoot from '../../(admin)/AdminDashboard';
export default function DashboardProvider({ children }: { children: React.ReactNode }) { export default function DashboardProvider({ children }: { children: React.ReactNode }) {
const user = useAppSelector(state => state?.auth.user); const user = useAppSelector(state => state?.auth.user);
if (user?.role && user.role.toUpperCase() === "USER") { if (user?.role && user.role.toUpperCase() === "USER" || !user) {
return ( return (
<div>{children}</div> <div>{children}</div>
) )
......
...@@ -106,7 +106,7 @@ export default function Header({ open, handleDrawerOpen, handleMobileMenuToggle ...@@ -106,7 +106,7 @@ export default function Header({ open, handleDrawerOpen, handleMobileMenuToggle
<HambergerMenu className='!text-para-light' /> <HambergerMenu className='!text-para-light' />
</IconButton>} </IconButton>}
{ {
user?.role && user.role.toUpperCase() === 'USER' ? ( user?.role && user.role.toUpperCase() === 'USER' || !user ? (
<UserHeader /> <UserHeader />
) : ( ) : (
<AdminHeader /> <AdminHeader />
......
...@@ -125,7 +125,7 @@ export default function Sidebar({ open, handleMobileMenuToggle, mobileMenuOpen } ...@@ -125,7 +125,7 @@ export default function Sidebar({ open, handleMobileMenuToggle, mobileMenuOpen }
if (downLG) { if (downLG) {
return <div className={`mobile__menu__wrapper fixed left-0 top-0 bottom-0 max-h-screen backdrop-blur-2xl bg-[#290139CF] w-full z-[9999] transition-all duration-300 ${mobileMenuOpen ? "opacity-100 visible" : "opacity-0 invisible"}`} > return <div className={`mobile__menu__wrapper fixed left-0 top-0 bottom-0 max-h-screen backdrop-blur-2xl bg-[#290139CF] w-full z-[9999] transition-all duration-300 ${mobileMenuOpen ? "opacity-100 visible" : "opacity-0 invisible"}`} >
<div className={`mobile__primary__menu max-w-[600px] w-full h-screen transition-all duration-300 ${mobileMenuOpen ? "opacity-100 visible translate-x-0" : "opacity-0 invisible translate-x-[-100%]"} ${user?.role && user.role.toUpperCase() === 'USER' ? "bg-[#11011E]" : "bg-white"}`} ref={ref}> <div className={`mobile__primary__menu max-w-[600px] w-full h-screen transition-all duration-300 ${mobileMenuOpen ? "opacity-100 visible translate-x-0" : "opacity-0 invisible translate-x-[-100%]"} ${user?.role && user.role.toUpperCase() === 'USER'|| !user ? "bg-[#11011E]" : "bg-white"}`} ref={ref}>
<div className="flex justify-between items-center p-4 "> <div className="flex justify-between items-center p-4 ">
{data?.data?.logo && <Link href="/"> {data?.data?.logo && <Link href="/">
<Image src={data?.data?.logo} alt="Logo" width={102} height={56} /> <Image src={data?.data?.logo} alt="Logo" width={102} height={56} />
...@@ -168,7 +168,7 @@ export default function Sidebar({ open, handleMobileMenuToggle, mobileMenuOpen } ...@@ -168,7 +168,7 @@ export default function Sidebar({ open, handleMobileMenuToggle, mobileMenuOpen }
<Box className={`mt-8 menu__wrapper`} > <Box className={`mt-8 menu__wrapper`} >
{ {
user?.role && user.role.toUpperCase() === 'USER' ? ( user?.role && user.role.toUpperCase() === 'USER'|| !user ? (
<UserMenu open={open} /> <UserMenu open={open} />
) : ( ) : (
<AdminMenu open={open} /> <AdminMenu open={open} />
......
...@@ -50,7 +50,7 @@ const formFieldSx = { ...@@ -50,7 +50,7 @@ const formFieldSx = {
} }
}; };
export default function AddPlayerForm({ formik, id, data, loading, buttonLabel }: { formik: FormikProps<PlayerProps>, id?: string, data?: SinlgePlayerResponseProps, loading?: boolean, buttonLabel?: string }) { export default function AddPlayerForm({ formik, id, data, loading, buttonLabel, isAdmin = false }: { formik: FormikProps<PlayerProps>, id?: string, data?: SinlgePlayerResponseProps, loading?: boolean, buttonLabel?: string; isAdmin?: boolean }) {
const user = useAppSelector(state => state.auth.user); const user = useAppSelector(state => state.auth.user);
return ( return (
<form onSubmit={formik.handleSubmit}> <form onSubmit={formik.handleSubmit}>
...@@ -120,7 +120,7 @@ export default function AddPlayerForm({ formik, id, data, loading, buttonLabel } ...@@ -120,7 +120,7 @@ export default function AddPlayerForm({ formik, id, data, loading, buttonLabel }
</span> </span>
</div> </div>
<div className="input__field"> {isAdmin ? "" : <div className="input__field">
<InputLabel htmlFor="wallet_address">Wallet Address</InputLabel> <InputLabel htmlFor="wallet_address">Wallet Address</InputLabel>
<OutlinedInput <OutlinedInput
fullWidth fullWidth
...@@ -134,8 +134,9 @@ export default function AddPlayerForm({ formik, id, data, loading, buttonLabel } ...@@ -134,8 +134,9 @@ export default function AddPlayerForm({ formik, id, data, loading, buttonLabel }
<span className="error"> <span className="error">
{formik.touched.wallet_address && formik.errors.wallet_address ? formik.errors.wallet_address : ""} {formik.touched.wallet_address && formik.errors.wallet_address ? formik.errors.wallet_address : ""}
</span> </span>
</div> </div>}
{isAdmin? "":<>
<div className="input__field col-span-1"> <div className="input__field col-span-1">
<InputLabel htmlFor="address">Address Line 1<span className="text-red-500">*</span></InputLabel> <InputLabel htmlFor="address">Address Line 1<span className="text-red-500">*</span></InputLabel>
<OutlinedInput <OutlinedInput
...@@ -183,6 +184,7 @@ export default function AddPlayerForm({ formik, id, data, loading, buttonLabel } ...@@ -183,6 +184,7 @@ export default function AddPlayerForm({ formik, id, data, loading, buttonLabel }
{formik.touched.city && formik.errors.city ? formik.errors.city : ""} {formik.touched.city && formik.errors.city ? formik.errors.city : ""}
</span> </span>
</div> </div>
</>}
<div className="lg:col-span-2"> <div className="lg:col-span-2">
<InputLabel htmlFor="phone">Phone <span className="text-red-500">*</span></InputLabel> <InputLabel htmlFor="phone">Phone <span className="text-red-500">*</span></InputLabel>
...@@ -243,7 +245,8 @@ export default function AddPlayerForm({ formik, id, data, loading, buttonLabel } ...@@ -243,7 +245,8 @@ export default function AddPlayerForm({ formik, id, data, loading, buttonLabel }
<span className="error">{formik.touched.state && formik.errors.state}</span> <span className="error">{formik.touched.state && formik.errors.state}</span>
</div> </div>
<div className="input__field">
{isAdmin ? "" : <div className="input__field">
<InputLabel htmlFor="ssn">SSN<span className="text-red-500"> (last 4 Digit) *</span></InputLabel> <InputLabel htmlFor="ssn">SSN<span className="text-red-500"> (last 4 Digit) *</span></InputLabel>
<OutlinedInput <OutlinedInput
fullWidth fullWidth
...@@ -257,7 +260,7 @@ export default function AddPlayerForm({ formik, id, data, loading, buttonLabel } ...@@ -257,7 +260,7 @@ export default function AddPlayerForm({ formik, id, data, loading, buttonLabel }
<span className="error"> <span className="error">
{formik.touched.ssn && formik.errors.ssn ? formik.errors.ssn : ""} {formik.touched.ssn && formik.errors.ssn ? formik.errors.ssn : ""}
</span> </span>
</div> </div>}
<div className="input__field"> <div className="input__field">
<InputLabel htmlFor="gender">Gender <span className="text-red-500">*</span></InputLabel> <InputLabel htmlFor="gender">Gender <span className="text-red-500">*</span></InputLabel>
<Select <Select
...@@ -289,7 +292,7 @@ export default function AddPlayerForm({ formik, id, data, loading, buttonLabel } ...@@ -289,7 +292,7 @@ export default function AddPlayerForm({ formik, id, data, loading, buttonLabel }
<span className="error">{formik.touched.gender && formik.errors.gender}</span> <span className="error">{formik.touched.gender && formik.errors.gender}</span>
</div> </div>
<div className="input__field"> {isAdmin ? <div className="input__field">
<InputLabel htmlFor="postal_code">Zip Code <span className="text-red-500">*</span></InputLabel> <InputLabel htmlFor="postal_code">Zip Code <span className="text-red-500">*</span></InputLabel>
<OutlinedInput <OutlinedInput
fullWidth fullWidth
...@@ -303,7 +306,7 @@ export default function AddPlayerForm({ formik, id, data, loading, buttonLabel } ...@@ -303,7 +306,7 @@ export default function AddPlayerForm({ formik, id, data, loading, buttonLabel }
<span className="error"> <span className="error">
{formik.touched.postal_code && formik.errors.postal_code ? formik.errors.postal_code : ""} {formik.touched.postal_code && formik.errors.postal_code ? formik.errors.postal_code : ""}
</span> </span>
</div> </div> : ""}
{/* DOB */} {/* DOB */}
<div className="input__field"> <div className="input__field">
......
...@@ -17,12 +17,12 @@ export const PlayerValidationSchema = (isEdit: boolean) => Yup.object().shape({ ...@@ -17,12 +17,12 @@ export const PlayerValidationSchema = (isEdit: boolean) => Yup.object().shape({
.required("Email is required"), .required("Email is required"),
first_name: Yup.string().required("First name is required"), first_name: Yup.string().required("First name is required"),
last_name: Yup.string().required("Last name is required"), last_name: Yup.string().required("Last name is required"),
wallet_address: Yup.string().nullable(), // wallet_address: Yup.string().nullable(),
address: Yup.string().required("Address is required"), // address: Yup.string().required("Address is required"),
city: Yup.string().required("City is required"), // city: Yup.string().required("City is required"),
postal_code: Yup.string().required("Zip code is required"), postal_code: Yup.string().required("Zip code is required"),
state: Yup.string().required("State is required"), state: Yup.string().required("State is required"),
ssn: Yup.string().required("SSN is required"), // ssn: Yup.string().required("SSN is required"),
gender: Yup.string().required("Gender is required"), gender: Yup.string().required("Gender is required"),
phone: Yup.string() phone: Yup.string()
.matches(/^\+?\d{7,15}$/, "Invalid phone number") .matches(/^\+?\d{7,15}$/, "Invalid phone number")
...@@ -30,7 +30,7 @@ export const PlayerValidationSchema = (isEdit: boolean) => Yup.object().shape({ ...@@ -30,7 +30,7 @@ export const PlayerValidationSchema = (isEdit: boolean) => Yup.object().shape({
password: isEdit password: isEdit
? Yup.string().nullable() ? Yup.string().nullable()
: Yup.string().min(6, "Password must be at least 6 characters").required("Password is required"), : Yup.string().min(6, "Password must be at least 6 characters").required("Password is required"),
password_confirmation: isEdit ? Yup.string().nullable() : Yup.string().when("password", { password_confirmation: Yup.string().when("password", {
is: (val: string) => !!val, is: (val: string) => !!val,
then: (schema) => schema.oneOf([Yup.ref("password")], "Passwords must match").required("Password confirmation is required"), then: (schema) => schema.oneOf([Yup.ref("password")], "Passwords must match").required("Password confirmation is required"),
otherwise: (schema) => schema.nullable(), otherwise: (schema) => schema.nullable(),
...@@ -111,10 +111,10 @@ export default function AddPlayerPage({ id }: { id?: string }) { ...@@ -111,10 +111,10 @@ export default function AddPlayerPage({ id }: { id?: string }) {
if (id) { if (id) {
try { try {
const response = await updatePlayer({ id: id, body: formData }); const response = await updatePlayer({ id: id, body: formData }).unwrap();
dispatch( dispatch(
showToast({ showToast({
message: response?.data?.message || "User Updated Successfully", message: response?.message || "User Updated Successfully",
variant: ToastVariant.SUCCESS variant: ToastVariant.SUCCESS
}) })
); );
...@@ -158,7 +158,7 @@ export default function AddPlayerPage({ id }: { id?: string }) { ...@@ -158,7 +158,7 @@ export default function AddPlayerPage({ id }: { id?: string }) {
<h2 className="text-[20px] leading-[140%] font-bold">Player Details</h2> <h2 className="text-[20px] leading-[140%] font-bold">Player Details</h2>
</div> </div>
<AddPlayerForm formik={formik} id={id} data={data} loading={isLoading || updating} /> <AddPlayerForm formik={formik} id={id} data={data} loading={isLoading || updating} isAdmin={true} />
</div> </div>
) )
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment