import { Button, Dialog, DialogActions, DialogContent, DialogTitle, FormControl, InputLabel, MenuItem, Select, } from '@material-ui/core'; import { Role } from 'features/user/userSlice'; import React, { useState } from 'react'; import { AllUsers, UpdateUser } from '.'; import { availableRoles } from 'api/configuration'; interface EditUsersModal { usersToEdit: AllUsers; setUsersToEdit: (users: AllUsers) => void; updateUser: UpdateUser; } export default function EditUsersModal({ usersToEdit, setUsersToEdit, updateUser, }: EditUsersModal) { const [role, setRole] = useState(''); const handleAddRemove = (action: 'add' | 'remove') => { if (role === '') return setUsersToEdit([]); const updatedUsers = usersToEdit .filter( ({ preferences }) => (preferences.roles.includes(role) && action === 'remove') || (!preferences.roles.includes(role) && action === 'add'), ) .map(({ preferences, ...user }) => { return { ...user, preferences: { ...preferences, roles: action === 'remove' ? preferences.roles.filter(rl => rl !== role) : [...preferences.roles, role], }, }; }); updateUser(updatedUsers); setUsersToEdit([]); }; const handleClose = () => setUsersToEdit([]); return ( 0} aria-labelledby="edit-users" > Add/Remove Groups Role ); }