import React, { useEffect, useState, Fragment } from 'react'; import { Page } from '../Page'; import { useParams } from 'react-router'; import { useWorkgroups } from '../../gql/queries/workgroups'; import { useUserProfile } 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'; import { TimelinePanel } from './TimelinePanel'; import { DecisionSupportFilePanel } from './DecisionSupportFilePanel'; export function WorkgroupPage() { const { id } = useParams(); const { workgroups } = useWorkgroups({ variables:{ filter: { ids: [id], } } }); const { user } = useUserProfile(); const [ joinWorkgroup ] = useJoinWorkgroupMutation(); const [ leaveWorkgroup ] = useLeaveWorkgroupMutation(); const [ closeWorkgroup ] = useCloseWorkgroupMutation(); const [ state, setState ] = useState({ userProfileId: '', workgroup: { id: '', name: '', closedAt: null, createdAt: null, members: [], } }); useEffect(() => { setState(state => ({...state, workgroup:{ ...state.workgroup, ...workgroups[0]}})); }, [workgroups]); useEffect(() => { setState(state => ({...state, userProfileId: user.id })); }, [user]); const onJoinWorkgroupClick = () => { joinWorkgroup({ variables: { workgroupId: state.workgroup.id, } }); } const onLeaveWorkgroupClick = () => { leaveWorkgroup({ update: (cache, result) => { cache.modify({ id: cache.identify(result.data.leaveWorkgroup), fields: { members(existingMembers, { readField }) { return existingMembers.filter( user => state.userProfileId !== readField('id', user) ); }, }, }); }, 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 ? : } }
); }