diff --git a/src/app/admin/components/UsersTable.tsx b/src/app/admin/components/UsersTable.tsx index 23d1c2a6..5ad38e0f 100644 --- a/src/app/admin/components/UsersTable.tsx +++ b/src/app/admin/components/UsersTable.tsx @@ -19,11 +19,21 @@ export default function UsersTable({ users }: { users: User[] }) { const deleteUser = async (id: Schema["User"]["deleteType"]) => client.models.User.delete(id); const updateUser = async (updatedData: Schema["User"]["updateType"]) => { + if (updatedData.role) { + const roleUpdateResult = await client.mutations.AddUserToGroup({ + userId: updatedData.id, + groupName: updatedData.role, + }); + + if (roleUpdateResult.errors) { + throw new Error("Failed to update user role in Cognito"); + } + } + return client.models.User.update({ id: updatedData.id, firstName: updatedData.firstName, lastName: updatedData.lastName, - role: updatedData.role, teamId: updatedData.teamId, }); }; diff --git a/src/app/admin/users/UserTablePage.tsx b/src/app/admin/users/UserTablePage.tsx index 428dd1d4..d18b6f3e 100644 --- a/src/app/admin/users/UserTablePage.tsx +++ b/src/app/admin/users/UserTablePage.tsx @@ -14,9 +14,28 @@ const selectionSet = [ export type User = Pick; export default async function UserTablePage() { - const { data: users } = await client.models.User.list({ - selectionSet, - }); - if (!users || !Array.isArray(users)) return "No participants were found"; - return ; + //paginate incoming data + let allUsers: User[] = []; + let nextToken: string | null | undefined = undefined; + + do { + const { + data: users, + nextToken: token, + }: { data?: User[]; nextToken?: string | null } = + await client.models.User.list({ + selectionSet, + nextToken, + limit: 1000, + }); + + if (users && Array.isArray(users)) { + allUsers = [...allUsers, ...users]; + } + + nextToken = token; + } while (nextToken); + + if (!allUsers || allUsers.length === 0) return "No participants were found"; + return ; }