Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
sweepstake
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Arjun Jhukal
sweepstake
Commits
26f803b2
Commit
26f803b2
authored
Apr 03, 2026
by
Arjun Jhukal
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
simplified user creations for the admin
parent
f4303093
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
67 additions
and
64 deletions
+67
-64
DashboardProvider.tsx
...pp/(dashboard)/(user)/(outsideAuth)/DashboardProvider.tsx
+1
-1
index.tsx
src/components/organism/Header/index.tsx
+1
-1
index.tsx
src/components/organism/Sidebar/index.tsx
+2
-2
AddPlayerForm.tsx
...rd/adminDashboard/players/addPlayerForm/AddPlayerForm.tsx
+55
-52
index.tsx
.../dashboard/adminDashboard/players/addPlayerForm/index.tsx
+8
-8
No files found.
src/app/(dashboard)/(user)/(outsideAuth)/DashboardProvider.tsx
View file @
26f803b2
...
...
@@ -6,7 +6,7 @@ import AdminDashboardRoot from '../../(admin)/AdminDashboard';
export
default
function
DashboardProvider
({
children
}:
{
children
:
React
.
ReactNode
})
{
const
user
=
useAppSelector
(
state
=>
state
?.
auth
.
user
);
if
(
user
?.
role
&&
user
.
role
.
toUpperCase
()
===
"USER"
)
{
if
(
user
?.
role
&&
user
.
role
.
toUpperCase
()
===
"USER"
||
!
user
)
{
return
(
<
div
>
{
children
}
</
div
>
)
...
...
src/components/organism/Header/index.tsx
View file @
26f803b2
...
...
@@ -106,7 +106,7 @@ export default function Header({ open, handleDrawerOpen, handleMobileMenuToggle
<
HambergerMenu
className=
'!text-para-light'
/>
</
IconButton
>
}
{
user
?.
role
&&
user
.
role
.
toUpperCase
()
===
'USER'
?
(
user
?.
role
&&
user
.
role
.
toUpperCase
()
===
'USER'
||
!
user
?
(
<
UserHeader
/>
)
:
(
<
AdminHeader
/>
...
...
src/components/organism/Sidebar/index.tsx
View file @
26f803b2
...
...
@@ -125,7 +125,7 @@ export default function Sidebar({ open, handleMobileMenuToggle, mobileMenuOpen }
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"}`
}
>
<
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 "
>
{
data
?.
data
?.
logo
&&
<
Link
href=
"/"
>
<
Image
src=
{
data
?.
data
?.
logo
}
alt=
"Logo"
width=
{
102
}
height=
{
56
}
/>
...
...
@@ -168,7 +168,7 @@ export default function Sidebar({ open, handleMobileMenuToggle, mobileMenuOpen }
<
Box
className=
{
`mt-8 menu__wrapper`
}
>
{
user
?.
role
&&
user
.
role
.
toUpperCase
()
===
'USER'
?
(
user
?.
role
&&
user
.
role
.
toUpperCase
()
===
'USER'
||
!
user
?
(
<
UserMenu
open=
{
open
}
/>
)
:
(
<
AdminMenu
open=
{
open
}
/>
...
...
src/components/pages/dashboard/adminDashboard/players/addPlayerForm/AddPlayerForm.tsx
View file @
26f803b2
...
...
@@ -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
);
return
(
<
form
onSubmit=
{
formik
.
handleSubmit
}
>
...
...
@@ -120,7 +120,7 @@ export default function AddPlayerForm({ formik, id, data, loading, buttonLabel }
</
span
>
</
div
>
<
div
className=
"input__field"
>
{
isAdmin
?
""
:
<
div
className=
"input__field"
>
<
InputLabel
htmlFor=
"wallet_address"
>
Wallet Address
</
InputLabel
>
<
OutlinedInput
fullWidth
...
...
@@ -134,55 +134,57 @@ export default function AddPlayerForm({ formik, id, data, loading, buttonLabel }
<
span
className=
"error"
>
{
formik
.
touched
.
wallet_address
&&
formik
.
errors
.
wallet_address
?
formik
.
errors
.
wallet_address
:
""
}
</
span
>
</
div
>
</
div
>
}
<
div
className=
"input__field col-span-1"
>
<
InputLabel
htmlFor=
"address"
>
Address Line 1
<
span
className=
"text-red-500"
>
*
</
span
></
InputLabel
>
<
OutlinedInput
fullWidth
id=
"address"
name=
"address"
placeholder=
"Enter address"
value=
{
formik
.
values
.
address
}
onChange=
{
formik
.
handleChange
}
onBlur=
{
formik
.
handleBlur
}
/>
<
span
className=
"error"
>
{
formik
.
touched
.
address
&&
formik
.
errors
.
address
?
formik
.
errors
.
address
:
""
}
</
span
>
</
div
>
{
isAdmin
?
""
:<>
<
div
className=
"input__field col-span-1"
>
<
InputLabel
htmlFor=
"address"
>
Address Line 1
<
span
className=
"text-red-500"
>
*
</
span
></
InputLabel
>
<
OutlinedInput
fullWidth
id=
"address"
name=
"address"
placeholder=
"Enter address"
value=
{
formik
.
values
.
address
}
onChange=
{
formik
.
handleChange
}
onBlur=
{
formik
.
handleBlur
}
/>
<
span
className=
"error"
>
{
formik
.
touched
.
address
&&
formik
.
errors
.
address
?
formik
.
errors
.
address
:
""
}
</
span
>
</
div
>
<
div
className=
"input__field col-span-1"
>
<
InputLabel
htmlFor=
"address_line_two"
>
Address Line 2
</
InputLabel
>
<
OutlinedInput
fullWidth
id=
"address_line_two"
name=
"address_line_two"
placeholder=
"Enter address line 2"
value=
{
formik
.
values
.
address_line_two
}
onChange=
{
formik
.
handleChange
}
onBlur=
{
formik
.
handleBlur
}
/>
<
span
className=
"error"
>
{
formik
.
touched
.
address_line_two
&&
formik
.
errors
.
address_line_two
?
formik
.
errors
.
address_line_two
:
""
}
</
span
>
</
div
>
<
div
className=
"input__field col-span-1"
>
<
InputLabel
htmlFor=
"address_line_two"
>
Address Line 2
</
InputLabel
>
<
OutlinedInput
fullWidth
id=
"address_line_two"
name=
"address_line_two"
placeholder=
"Enter address line 2"
value=
{
formik
.
values
.
address_line_two
}
onChange=
{
formik
.
handleChange
}
onBlur=
{
formik
.
handleBlur
}
/>
<
span
className=
"error"
>
{
formik
.
touched
.
address_line_two
&&
formik
.
errors
.
address_line_two
?
formik
.
errors
.
address_line_two
:
""
}
</
span
>
</
div
>
<
div
className=
"input__field"
>
<
InputLabel
htmlFor=
"city"
>
City
<
span
className=
"text-red-500"
>
*
</
span
></
InputLabel
>
<
OutlinedInput
fullWidth
id=
"city"
name=
"city"
placeholder=
"Enter city"
value=
{
formik
.
values
.
city
}
onChange=
{
formik
.
handleChange
}
onBlur=
{
formik
.
handleBlur
}
/>
<
span
className=
"error"
>
{
formik
.
touched
.
city
&&
formik
.
errors
.
city
?
formik
.
errors
.
city
:
""
}
</
span
>
</
div
>
<
div
className=
"input__field"
>
<
InputLabel
htmlFor=
"city"
>
City
<
span
className=
"text-red-500"
>
*
</
span
></
InputLabel
>
<
OutlinedInput
fullWidth
id=
"city"
name=
"city"
placeholder=
"Enter city"
value=
{
formik
.
values
.
city
}
onChange=
{
formik
.
handleChange
}
onBlur=
{
formik
.
handleBlur
}
/>
<
span
className=
"error"
>
{
formik
.
touched
.
city
&&
formik
.
errors
.
city
?
formik
.
errors
.
city
:
""
}
</
span
>
</
div
>
</>
}
<
div
className=
"lg:col-span-2"
>
<
InputLabel
htmlFor=
"phone"
>
Phone
<
span
className=
"text-red-500"
>
*
</
span
></
InputLabel
>
...
...
@@ -243,7 +245,8 @@ export default function AddPlayerForm({ formik, id, data, loading, buttonLabel }
<
span
className=
"error"
>
{
formik
.
touched
.
state
&&
formik
.
errors
.
state
}
</
span
>
</
div
>
<
div
className=
"input__field"
>
{
isAdmin
?
""
:
<
div
className=
"input__field"
>
<
InputLabel
htmlFor=
"ssn"
>
SSN
<
span
className=
"text-red-500"
>
(last 4 Digit) *
</
span
></
InputLabel
>
<
OutlinedInput
fullWidth
...
...
@@ -257,7 +260,7 @@ export default function AddPlayerForm({ formik, id, data, loading, buttonLabel }
<
span
className=
"error"
>
{
formik
.
touched
.
ssn
&&
formik
.
errors
.
ssn
?
formik
.
errors
.
ssn
:
""
}
</
span
>
</
div
>
</
div
>
}
<
div
className=
"input__field"
>
<
InputLabel
htmlFor=
"gender"
>
Gender
<
span
className=
"text-red-500"
>
*
</
span
></
InputLabel
>
<
Select
...
...
@@ -289,7 +292,7 @@ export default function AddPlayerForm({ formik, id, data, loading, buttonLabel }
<
span
className=
"error"
>
{
formik
.
touched
.
gender
&&
formik
.
errors
.
gender
}
</
span
>
</
div
>
<
div
className=
"input__field"
>
{
isAdmin
?
<
div
className=
"input__field"
>
<
InputLabel
htmlFor=
"postal_code"
>
Zip Code
<
span
className=
"text-red-500"
>
*
</
span
></
InputLabel
>
<
OutlinedInput
fullWidth
...
...
@@ -303,7 +306,7 @@ export default function AddPlayerForm({ formik, id, data, loading, buttonLabel }
<
span
className=
"error"
>
{
formik
.
touched
.
postal_code
&&
formik
.
errors
.
postal_code
?
formik
.
errors
.
postal_code
:
""
}
</
span
>
</
div
>
</
div
>
:
""
}
{
/* DOB */
}
<
div
className=
"input__field"
>
...
...
src/components/pages/dashboard/adminDashboard/players/addPlayerForm/index.tsx
View file @
26f803b2
...
...
@@ -17,12 +17,12 @@ export const PlayerValidationSchema = (isEdit: boolean) => Yup.object().shape({
.
required
(
"Email is required"
),
first_name
:
Yup
.
string
().
required
(
"First name is required"
),
last_name
:
Yup
.
string
().
required
(
"Last name is required"
),
wallet_address
:
Yup
.
string
().
nullable
(),
address
:
Yup
.
string
().
required
(
"Address is required"
),
city
:
Yup
.
string
().
required
(
"City is required"
),
//
wallet_address: Yup.string().nullable(),
//
address: Yup.string().required("Address is required"),
//
city: Yup.string().required("City is required"),
postal_code
:
Yup
.
string
().
required
(
"Zip code 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"
),
phone
:
Yup
.
string
()
.
matches
(
/^
\+?\d{7,15}
$/
,
"Invalid phone number"
)
...
...
@@ -30,7 +30,7 @@ export const PlayerValidationSchema = (isEdit: boolean) => Yup.object().shape({
password
:
isEdit
?
Yup
.
string
().
nullable
()
:
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
,
then
:
(
schema
)
=>
schema
.
oneOf
([
Yup
.
ref
(
"password"
)],
"Passwords must match"
).
required
(
"Password confirmation is required"
),
otherwise
:
(
schema
)
=>
schema
.
nullable
(),
...
...
@@ -111,10 +111,10 @@ export default function AddPlayerPage({ id }: { id?: string }) {
if
(
id
)
{
try
{
const
response
=
await
updatePlayer
({
id
:
id
,
body
:
formData
});
const
response
=
await
updatePlayer
({
id
:
id
,
body
:
formData
})
.
unwrap
()
;
dispatch
(
showToast
({
message
:
response
?.
data
?.
message
||
"User Updated Successfully"
,
message
:
response
?.
message
||
"User Updated Successfully"
,
variant
:
ToastVariant
.
SUCCESS
})
);
...
...
@@ -158,7 +158,7 @@ export default function AddPlayerPage({ id }: { id?: string }) {
<
h2
className=
"text-[20px] leading-[140%] font-bold"
>
Player Details
</
h2
>
</
div
>
<
AddPlayerForm
formik=
{
formik
}
id=
{
id
}
data=
{
data
}
loading=
{
isLoading
||
updating
}
/>
<
AddPlayerForm
formik=
{
formik
}
id=
{
id
}
data=
{
data
}
loading=
{
isLoading
||
updating
}
isAdmin=
{
true
}
/>
</
div
>
)
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment