import { useRegisterMutation, useDeregisterMutation, User, TrainingDocument } from '../../gql' import { FunctionComponent, useContext } from 'react' import { UserContext } from '../../user/hooks' import { TTraining } from '../types' import theme from '../../styles/theme' type TRegisterButton = FunctionComponent<{ training: TTraining }> const RegistrationButton: TRegisterButton = ({ training: { id, registrations } }) => { const [register, registerData] = useRegisterMutation({ variables: { training: id }, refetchQueries: [{ query: TrainingDocument }], }) const [deregister, deregisterData] = useDeregisterMutation({ variables: { training: id }, refetchQueries: [{ query: TrainingDocument }], }) const { user } = useContext(UserContext) const isRegistered = !!registrations && !!user?.data?.currentUser.id && !!registrations.find((registeredUser) => registeredUser.id === user.data?.currentUser.id) const onChange = isRegistered ? () => deregister() : () => register() const label = isRegistered ? 'Cancel 😱' : 'Register now 😀' const className = isRegistered ? 'registered' : 'not-registered' return ( {registerData.error && registerData.error.message} {deregisterData.error && deregisterData.error.message} ) } export default RegistrationButton