@@ -6,6 +6,9 @@ import { DataTableColumnHeader } from "@/components/table/data-table-column-head
66import { Badge } from "@/components/ui/badge" ;
77import { DataTableRowActions } from "@/components/table/data-table-row-actions" ;
88import { type User } from "@/data/schema" ;
9+ import { banUnban } from "@/api/ban" ;
10+ import toast from "react-hot-toast" ;
11+ import { Button } from "../ui/button" ;
912
1013const columns : ColumnDef < User > [ ] = [
1114 // {
@@ -52,7 +55,9 @@ const columns: ColumnDef<User>[] = [
5255 // },
5356 {
5457 accessorKey : "Email" ,
55- header : ( { column } ) => < DataTableColumnHeader column = { column } title = "Email" /> ,
58+ header : ( { column } ) => (
59+ < DataTableColumnHeader column = { column } title = "Email" />
60+ ) ,
5661 cell : ( { row } ) => < span > { row . getValue ( "Email" ) } </ span > ,
5762 } ,
5863 // {
@@ -62,17 +67,23 @@ const columns: ColumnDef<User>[] = [
6267 // },
6368 {
6469 accessorKey : "Gender" ,
65- header : ( { column } ) => < DataTableColumnHeader column = { column } title = "Gender" /> ,
70+ header : ( { column } ) => (
71+ < DataTableColumnHeader column = { column } title = "Gender" />
72+ ) ,
6673 cell : ( { row } ) => < span > { row . getValue ( "Gender" ) } </ span > ,
6774 } ,
6875 {
6976 accessorKey : "RegNo" ,
70- header : ( { column } ) => < DataTableColumnHeader column = { column } title = "Reg No." /> ,
77+ header : ( { column } ) => (
78+ < DataTableColumnHeader column = { column } title = "Reg No." />
79+ ) ,
7180 cell : ( { row } ) => < span > { row . getValue ( "RegNo" ) } </ span > ,
7281 } ,
7382 {
7483 accessorKey : "PhoneNo" ,
75- header : ( { column } ) => < DataTableColumnHeader column = { column } title = "Phone No." /> ,
84+ header : ( { column } ) => (
85+ < DataTableColumnHeader column = { column } title = "Phone No." />
86+ ) ,
7687 cell : ( { row } ) => < span > { row . getValue ( "PhoneNo" ) } </ span > ,
7788 } ,
7889 // {
@@ -100,11 +111,30 @@ const columns: ColumnDef<User>[] = [
100111 // },
101112 {
102113 accessorKey : "IsBanned" ,
103- header : ( { column } ) => < DataTableColumnHeader column = { column } title = "Banned" /> ,
114+ header : ( { column } ) => (
115+ < DataTableColumnHeader column = { column } title = "Banned" />
116+ ) ,
104117 cell : ( { row } ) => (
105- < Badge variant = { row . getValue ( "IsBanned" ) ? "destructive" : "outline" } >
118+ < Button
119+ onClick = { ( ) =>
120+ toast . promise ( async ( ) => {
121+ await banUnban ( {
122+ ban : ! row . getValue ( "IsBanned" ) ,
123+ email : row . getValue ( "Email" ) ,
124+ } )
125+ await queryClient . invalidateQueries ( { queryKey : [ "users" ] } )
126+ }
127+
128+ , {
129+ loading : "Updating..." ,
130+ success : "User updated" ,
131+ error : "Failed to update user" ,
132+ } )
133+ }
134+ variant = { row . getValue ( "IsBanned" ) ? "destructive" : "outline" }
135+ >
106136 { row . getValue ( "IsBanned" ) ? "Yes" : "No" }
107- </ Badge >
137+ </ Button >
108138 ) ,
109139 } ,
110140 // {
@@ -132,7 +162,9 @@ const columns: ColumnDef<User>[] = [
132162 // },
133163 {
134164 accessorKey : "HostelBlock" ,
135- header : ( { column } ) => < DataTableColumnHeader column = { column } title = "Hostel Block" /> ,
165+ header : ( { column } ) => (
166+ < DataTableColumnHeader column = { column } title = "Hostel Block" />
167+ ) ,
136168 cell : ( { row } ) => < span > { row . getValue ( "HostelBlock" ) } </ span > ,
137169 } ,
138170 // {
0 commit comments