| 1234567891011121314151617181920212223242526272829303132333435363738 |
- import { useCallback, useState } from 'react'
- import { User } from '../../../../../types/group-management/user'
- export default function useUserSelection(initialUsers: User[]) {
- const [users, setUsers] = useState<User[]>(initialUsers)
- const [selectedUsers, setSelectedUsers] = useState<User[]>([])
- const selectAllUsers = () => setSelectedUsers(users)
- const unselectAllUsers = () => setSelectedUsers([])
- const selectAllNonManagedUsers = useCallback(() => {
- // Pending: user.enrollment will be `undefined`
- // Not managed: user.enrollment will be an empty object
- const nonManagedUsers = users.filter(user => !user.enrollment?.managedBy)
- setSelectedUsers(nonManagedUsers)
- }, [users])
- const selectUser = useCallback((user: User) => {
- setSelectedUsers(users => [...users, user])
- }, [])
- const unselectUser = useCallback((user: User) => {
- setSelectedUsers(users => users.filter(u => u.email !== user.email))
- }, [])
- return {
- users,
- setUsers,
- selectedUsers,
- setSelectedUsers,
- selectUser,
- unselectUser,
- selectAllUsers,
- unselectAllUsers,
- selectAllNonManagedUsers,
- }
- }
|