@@ -3,19 +3,18 @@ import { useState, useEffect } from 'react';
33import SwitcherOne from './SwitcherOne' ;
44import Loader from '../common/Loader' ;
55import DropdownEditDelete from './DropdownEditDelete' ;
6-
7- type StatusOptions = 'past_due' | 'canceled' | 'active' | 'deleted' ;
6+ import { type SubscriptionStatusOptions } from '../../../shared/types' ;
87
98const UsersTable = ( ) => {
109 const [ skip , setskip ] = useState ( 0 ) ;
1110 const [ page , setPage ] = useState ( 1 ) ;
1211 const [ email , setEmail ] = useState < string | undefined > ( undefined ) ;
13- const [ statusOptions , setStatusOptions ] = useState < StatusOptions [ ] > ( [ ] ) ;
14- const [ hasPaidFilter , setHasPaidFilter ] = useState < boolean | undefined > ( undefined ) ;
12+ const [ isAdminFilter , setIsAdminFilter ] = useState < boolean | undefined > ( undefined ) ;
13+ const [ statusOptions , setStatusOptions ] = useState < SubscriptionStatusOptions [ ] > ( [ ] ) ;
1514 const { data, isLoading, error } = useQuery ( getPaginatedUsers , {
1615 skip,
17- hasPaidFilter : hasPaidFilter ,
1816 emailContains : email ,
17+ isAdmin : isAdminFilter ,
1918 subscriptionStatus : statusOptions ?. length > 0 ? statusOptions : undefined ,
2019 } ) ;
2120
@@ -57,7 +56,7 @@ const UsersTable = () => {
5756 key = { opt }
5857 className = 'z-30 flex items-center my-1 mx-2 py-1 px-2 outline-none transition focus:border-primary active:border-primary disabled:cursor-default disabled:bg-whiter dark:border-form-strokedark dark:bg-form-input dark:focus:border-primary'
5958 >
60- { opt }
59+ { opt ? opt : 'has not subscribed' }
6160 < span
6261 onClick = { ( e ) => {
6362 e . stopPropagation ( ) ;
@@ -92,11 +91,12 @@ const UsersTable = () => {
9291 </ div >
9392 < select
9493 onChange = { ( e ) => {
94+ const targetValue = e . target . value === '' ? null : e . target . value ;
9595 setStatusOptions ( ( prevValue ) => {
96- if ( prevValue ?. includes ( e . target . value as StatusOptions ) ) {
97- return prevValue ?. filter ( ( val ) => val !== e . target . value ) ;
96+ if ( prevValue ?. includes ( targetValue as SubscriptionStatusOptions ) ) {
97+ return prevValue ?. filter ( ( val ) => val !== targetValue ) ;
9898 } else if ( ! ! prevValue ) {
99- return [ ...prevValue , e . target . value as StatusOptions ] ;
99+ return [ ...prevValue , targetValue as SubscriptionStatusOptions ] ;
100100 } else {
101101 return prevValue ;
102102 }
@@ -107,9 +107,9 @@ const UsersTable = () => {
107107 className = 'absolute top-0 left-0 z-20 h-full w-full bg-white opacity-0'
108108 >
109109 < option value = '' > Select filters</ option >
110- { [ 'past_due' , 'canceled' , 'active' ] . map ( ( status ) => {
111- if ( ! statusOptions . includes ( status as StatusOptions ) ) {
112- return < option value = { status } > { status } </ option > ;
110+ { [ 'past_due' , 'canceled' , 'active' , 'deleted' , null ] . map ( ( status ) => {
111+ if ( ! statusOptions . includes ( status as SubscriptionStatusOptions ) ) {
112+ return < option value = { status || '' } > { status ? status : 'has not subscribed' } </ option > ;
113113 }
114114 } ) }
115115 </ select >
@@ -127,16 +127,16 @@ const UsersTable = () => {
127127 </ span >
128128 </ div >
129129 < div className = 'flex items-center gap-2' >
130- < label htmlFor = 'hasPaid -filter' className = 'block text-sm ml-2 text-gray-700 dark:text-white' >
131- hasPaid :
130+ < label htmlFor = 'isAdmin -filter' className = 'block text-sm ml-2 text-gray-700 dark:text-white' >
131+ isAdmin :
132132 </ label >
133133 < select
134- name = 'hasPaid -filter'
134+ name = 'isAdmin -filter'
135135 onChange = { ( e ) => {
136136 if ( e . target . value === 'both' ) {
137- setHasPaidFilter ( undefined ) ;
137+ setIsAdminFilter ( undefined ) ;
138138 } else {
139- setHasPaidFilter ( e . target . value === 'true' ) ;
139+ setIsAdminFilter ( e . target . value === 'true' ) ;
140140 }
141141 } }
142142 className = 'relative z-20 w-full appearance-none rounded border border-stroke bg-white p-2 pl-4 pr-8 outline-none transition focus:border-primary active:border-primary dark:border-form-strokedark dark:bg-form-input'
@@ -180,7 +180,7 @@ const UsersTable = () => {
180180 < p className = 'font-medium' > Stripe ID</ p >
181181 </ div >
182182 < div className = 'col-span-1 flex items-center' >
183- < p className = 'font-medium' > Has Paid </ p >
183+ < p className = 'font-medium' > Is Admin </ p >
184184 </ div >
185185 < div className = 'col-span-1 flex items-center' >
186186 < p className = 'font-medium' > </ p >
0 commit comments