use-user-selection.ts 796 B

1234567891011121314151617181920212223242526272829
  1. import { useCallback, useState } from 'react'
  2. import { User } from '../../../../../types/group-management/user'
  3. export default function useUserSelection(initialUsers: User[]) {
  4. const [users, setUsers] = useState<User[]>(initialUsers)
  5. const [selectedUsers, setSelectedUsers] = useState<User[]>([])
  6. const selectAllUsers = () => setSelectedUsers(users)
  7. const unselectAllUsers = () => setSelectedUsers([])
  8. const selectUser = useCallback((user: User) => {
  9. setSelectedUsers(users => [...users, user])
  10. }, [])
  11. const unselectUser = useCallback((user: User) => {
  12. setSelectedUsers(users => users.filter(u => u.email !== user.email))
  13. }, [])
  14. return {
  15. users,
  16. setUsers,
  17. selectedUsers,
  18. selectUser,
  19. unselectUser,
  20. selectAllUsers,
  21. unselectAllUsers,
  22. }
  23. }