@@ -11,28 +11,40 @@ import { type Team } from "@/data/schema";
1111import { fetchTeams } from "@/api/fetchTeams" ;
1212import { useState } from "react" ;
1313import { TeamModal } from "@/components/table/team-modal" ;
14+ import { useDebounce } from "use-debounce" ;
1415
1516export default function Teams ( ) {
1617 const [ cursorHistory , setCursorHistory ] = useState < string [ ] > ( [ ] ) ;
17- const [ currentCursor , setCurrentCursor ] = useState < string | undefined > ( undefined ) ;
18+ const [ currentCursor , setCurrentCursor ] = useState < string | undefined > (
19+ undefined ,
20+ ) ;
21+ const [ pageLimit , setPageLimit ] = useState < number > ( 10 ) ;
22+ const [ theName , setTheName ] = useState < string > ( "" ) ;
23+ // const queryClient = useQueryClient();
1824 const [ selectedTeam , setSelectedTeam ] = useState < Team | null > ( null ) ;
25+ const [ nameDebounce ] = useDebounce ( theName , 1000 ) ;
1926 const [ open , setOpen ] = useState ( false ) ;
2027
2128 const queryClient = useQueryClient ( ) ;
2229
2330 const {
24- data : teamList ,
25- isLoading,
26- isError,
31+ data : teamList ,
32+ isLoading,
33+ isError,
2734 } = useQuery ( {
28- queryKey : [ "users" , currentCursor ] ,
29- queryFn : ( ) => fetchTeams ( { limit : 1 , cursorId : currentCursor } ) ,
30- // placeholderData: (previousData) => previousData,
35+ queryKey : [ "teams" , currentCursor , nameDebounce ] ,
36+ queryFn : ( ) =>
37+ fetchTeams ( {
38+ limit : pageLimit ,
39+ cursorId : currentCursor ,
40+ name : nameDebounce ,
41+ } ) ,
42+ // placeholderData: (previousData) => previousData,
3143 } ) ;
3244
3345 const handleNextPage = ( ) => {
3446 if ( teamList ?. nextCursor ) {
35- console . log ( "yes cursor available" )
47+ console . log ( "yes cursor available" ) ;
3648 setCursorHistory ( ( prev ) => [ ...prev , currentCursor ?? "" ] ) ; // Store current cursor
3749 setCurrentCursor ( teamList . nextCursor ) ; // Move to the next page
3850 }
@@ -51,33 +63,43 @@ export default function Teams() {
5163 // queryClient.invalidateQueries({queryKey: ["teams"]});
5264 // }
5365
54- if ( isLoading ) {
55- < > loading...</ > ;
56- }
57- if ( isError ) {
58- < > skill issue</ > ;
59- }
6066 const handleRowClick = ( team : Team ) => {
6167 setSelectedTeam ( team ) ;
6268 setOpen ( true ) ;
6369 } ;
6470
65-
6671 const handleModalClose = ( ) => {
6772 setOpen ( false ) ;
6873 } ;
6974 return (
7075 < >
7176 < div className = "p-4" >
7277 < div className = "mb-4" > </ div >
78+ < div className = "mb-4 flex flex-col items-center" >
79+ < input
80+ className = "bg-gray w-[50%] rounded-md border p-2 text-white"
81+ placeholder = "Enter Name..."
82+ value = { theName }
83+ onChange = { ( e ) => setTheName ( e . target . value ) }
84+ type = "text"
85+ />
86+ </ div >
7387 { /* <DataTableUsers users={oosers} columns={userCol} /> */ }
74- { selectedTeam && < TeamModal open = { open } onClose = { handleModalClose } team = { selectedTeam } /> }
88+ { selectedTeam && (
89+ < TeamModal
90+ open = { open }
91+ onClose = { handleModalClose }
92+ team = { selectedTeam }
93+ />
94+ ) }
7595 < DataTable < Team , string >
76- columns = { teamCol }
77- data = { teamList ?. teams ?? [ ] }
78- handleNextPage = { handleNextPage }
79- handlePrevPage = { handlePrevPage }
80- onRowClick = { handleRowClick }
96+ setPageLimit = { setPageLimit }
97+ pageLimit = { pageLimit }
98+ columns = { teamCol }
99+ data = { teamList ?. teams ?? [ ] }
100+ handleNextPage = { handleNextPage }
101+ handlePrevPage = { handlePrevPage }
102+ onRowClick = { handleRowClick }
81103 />
82104 </ div >
83105 </ >
0 commit comments