import React, { useEffect, useState, Fragment } from 'react'; import { Page } from '../Page'; import { WithLoader } from '../WithLoader'; import { useParams } from 'react-router'; import { useWorkgroupsQuery } from '../../gql/queries/workgroups'; import { useUserProfileQuery } from '../../gql/queries/profile'; import { MembersPanel } from './MembersPanel'; import { User } from '../../types/user'; import { InfoPanel } from './InfoPanel'; import { Workgroup } from '../../types/workgroup'; import { useJoinWorkgroupMutation, useLeaveWorkgroupMutation, useCloseWorkgroupMutation } from '../../gql/mutations/workgroups'; export function WorkgroupPage() { const { id } = useParams(); const workgroupsQuery = useWorkgroupsQuery({ variables:{ filter: { ids: [id], } } }); const userProfileQuery = useUserProfileQuery(); const [ joinWorkgroup, joinWorkgroupMutation ] = useJoinWorkgroupMutation(); const [ leaveWorkgroup, leaveWorkgroupMutation ] = useLeaveWorkgroupMutation(); const [ closeWorkgroup, closeWorkgroupMutation ] = useCloseWorkgroupMutation(); const [ state, setState ] = useState({ userProfileId: '', workgroup: { id: '', name: '', closedAt: null, createdAt: null, members: [], } }); useEffect(() => { if (!workgroupsQuery.data) return; setState(state => ({...state, workgroup:{ ...state.workgroup, ...workgroupsQuery.data.workgroups[0]}})); }, [workgroupsQuery.data]); useEffect(() => { if (!userProfileQuery.data) return; setState(state => ({...state, userProfileId: userProfileQuery.data.userProfile.id })); }, [userProfileQuery.data]); const onJoinWorkgroupClick = () => { joinWorkgroup({ variables: { workgroupId: state.workgroup.id, } }); } const onLeaveWorkgroupClick = () => { leaveWorkgroup({ variables: { workgroupId: state.workgroup.id, } }); } const onCloseWorkgroupClick = () => { closeWorkgroup({ variables: { workgroupId: state.workgroup.id, } }); } const isNew = state.workgroup.id === ''; const isWorkgroupMember = state.workgroup.members.some(u => u.id === state.userProfileId); const isClosed = state.workgroup.closedAt !== null; return (
{ isNew ?

Nouveau

Groupe de travail

:

{state.workgroup.name}

Groupe de travail { isClosed ? '(clos)' : null }

}
{ isNew || isClosed ? null : { isWorkgroupMember ? : } }
); }