1
1
import { Spacer } from "@nextui-org/react" ;
2
- import { Suspense } from "react" ;
2
+ import React , { Suspense } from "react" ;
3
3
4
4
import { getInvitations } from "@/actions/invitations/invitation" ;
5
+ import { getRoles } from "@/actions/roles" ;
5
6
import { FilterControls } from "@/components/filters" ;
6
7
import { filterInvitations } from "@/components/filters/data-filters" ;
7
8
import { SendInvitationButton } from "@/components/invitations" ;
@@ -11,7 +12,7 @@ import {
11
12
} from "@/components/invitations/table" ;
12
13
import { Header } from "@/components/ui" ;
13
14
import { DataTable , DataTableFilterCustom } from "@/components/ui/table" ;
14
- import { SearchParamsProps } from "@/types" ;
15
+ import { InvitationProps , Role , SearchParamsProps } from "@/types" ;
15
16
16
17
export default async function Invitations ( {
17
18
searchParams,
@@ -54,12 +55,45 @@ const SSRDataTable = async ({
54
55
// Extract query from filters
55
56
const query = ( filters [ "filter[search]" ] as string ) || "" ;
56
57
58
+ // Fetch invitations and roles
57
59
const invitationsData = await getInvitations ( { query, page, sort, filters } ) ;
60
+ const rolesData = await getRoles ( { } ) ;
61
+
62
+ // Create a dictionary for roles by invitation ID
63
+ const roleDict = rolesData ?. data ?. reduce (
64
+ ( acc : Record < string , Role > , role : Role ) => {
65
+ role . relationships . invitations . data . forEach ( ( invitation : any ) => {
66
+ acc [ invitation . id ] = role ;
67
+ } ) ;
68
+ return acc ;
69
+ } ,
70
+ { } ,
71
+ ) ;
72
+
73
+ // Expand invitations with role information
74
+ const expandedInvitations = invitationsData ?. data ?. map (
75
+ ( invitation : InvitationProps ) => {
76
+ const role = roleDict [ invitation . id ] ;
77
+ return {
78
+ ...invitation ,
79
+ relationships : {
80
+ ...invitation . relationships ,
81
+ role,
82
+ } ,
83
+ } ;
84
+ } ,
85
+ ) ;
86
+
87
+ // Create the expanded response
88
+ const expandedResponse = {
89
+ ...invitationsData ,
90
+ data : expandedInvitations ,
91
+ } ;
58
92
59
93
return (
60
94
< DataTable
61
95
columns = { ColumnsInvitation }
62
- data = { invitationsData ?. data || [ ] }
96
+ data = { expandedResponse ?. data || [ ] }
63
97
metadata = { invitationsData ?. meta }
64
98
/>
65
99
) ;
0 commit comments