[ABANDONED] React/Redux front end for the Flexor social network.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

36 lines
1.0 KiB

5 years ago
5 years ago
5 years ago
5 years ago
  1. import React, { FC, useEffect } from 'react'
  2. import { useSelector, useDispatch } from 'react-redux'
  3. import { useHistory } from 'react-router-dom'
  4. import { handleApiError } from '../api/errors'
  5. import { fetchGroupMembers } from '../actions/groups'
  6. import { getGroupMembers } from '../selectors/groups'
  7. import { AppState, User, AppThunkDispatch } from '../types'
  8. import MemberListItem from './member-list-item'
  9. export interface Props {
  10. group: string
  11. }
  12. const MemberList: FC<Props> = ({ group }) => {
  13. const members = useSelector<AppState, User[]>(state => getGroupMembers(state, group))
  14. const dispatch = useDispatch<AppThunkDispatch>()
  15. const history = useHistory()
  16. useEffect(() => {
  17. try {
  18. dispatch(fetchGroupMembers(group))
  19. } catch (err) {
  20. handleApiError(err, dispatch, history)
  21. }
  22. }, [group])
  23. return (
  24. <div style={{ display: 'flex' }}>
  25. {members.map(member => <MemberListItem key={member.id} member={member} />)}
  26. </div>
  27. )
  28. }
  29. export default MemberList