import React, { useEffect, useState } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import { RootState } from '../../store/reducers/root'; import { fetchWorkgroups } from '../../store/actions/workgroups'; import { Workgroup } from '../../types/workgroup'; import { User } from '../../types/user'; import { Link } from 'react-router-dom'; export function WorkgroupsPanel() { const dispatch = useDispatch(); const workgroups = useSelector(state => state.workgroups.workgroupsById); const currentUserId = useSelector(state => state.auth.currentUser.id); const filterTabs = [ { label: "Mes groupes", filter: workgroups => Object.values(workgroups).filter((wg: Workgroup) => { return wg.members.some((u: User) => u.id === currentUserId); }) }, { label: "Ouverts", filter: workgroups => Object.values(workgroups).filter((wg: Workgroup) => !wg.closedAt) }, { label: "Clôs", filter: workgroups => Object.values(workgroups).filter((wg: Workgroup) => !!wg.closedAt) } ]; const [ state, setState ] = useState({ selectedTab: 0 }); const selectTab = (tabIndex: number) => { setState(state => ({ ...state, selectedTab: tabIndex })); } useEffect(() => { dispatch(fetchWorkgroups()); }, []); const workgroupsItems = filterTabs[state.selectedTab].filter(workgroups).map((wg: Workgroup) => { return ( {wg.name} ); }) return ( ) }