import React, { useState, ChangeEvent, useEffect } from 'react'; import { Workgroup } from '../../types/workgroup'; import { useIsAuthorized } from '../../gql/queries/authorization'; export interface InfoFormProps { workgroup: Workgroup onChange?: (workgroup: Workgroup) => void } export function InfoForm({ workgroup, onChange }: InfoFormProps) { const [ state, setState ] = useState({ changed: false, workgroup: { id: workgroup && workgroup.id ? workgroup.id : '', name: workgroup && workgroup.name ? workgroup.name : '', createdAt: workgroup && workgroup.createdAt ? workgroup.createdAt : null, closedAt: workgroup && workgroup.closedAt ? workgroup.closedAt : null, } }); const { isAuthorized } = useIsAuthorized({ variables: { action: 'update', object: { workgroupId: state.workgroup.id, } } }, state.workgroup.id === '' ? true : false); useEffect(() => { setState({ changed: false, workgroup: { id: workgroup && workgroup.id ? workgroup.id : '', name: workgroup && workgroup.name ? workgroup.name : '', createdAt: workgroup && workgroup.createdAt ? workgroup.createdAt : null, closedAt: workgroup && workgroup.closedAt ? workgroup.closedAt : null, } }); }, [workgroup]); const onSaveClick = () => { if (!state.changed) return; if (typeof onChange !== 'function') return; onChange(state.workgroup as Workgroup); setState(state => { return { ...state, changed: false, }; }) }; const onWorkgroupAttrChange = function(attrName: string, evt: ChangeEvent) { const value = evt.currentTarget.value; setState(state => { return { ...state, changed: true, workgroup: { ...state.workgroup, [attrName]: value, } }; }); }; return (
{ state.workgroup.createdAt ?

{state.workgroup.createdAt}

: null } { state.workgroup.closedAt ?

{state.workgroup.closedAt}

: null }
); }