import React, { useState, useContext } from 'react'; import Modal from 'shared/components/Modal'; import TaskDetails from 'shared/components/TaskDetails'; import PopupMenu, { Popup, usePopup } from 'shared/components/PopupMenu'; import MemberManager from 'shared/components/MemberManager'; import { useRouteMatch, useHistory } from 'react-router'; import { useFindTaskQuery, useUpdateTaskDueDateMutation, useAssignTaskMutation, useUnassignTaskMutation, } from 'shared/generated/graphql'; import UserIDContext from 'App/context'; import MiniProfile from 'shared/components/MiniProfile'; import DueDateManager from 'shared/components/DueDateManager'; type DetailsProps = { taskID: string; projectURL: string; onTaskNameChange: (task: Task, newName: string) => void; onTaskDescriptionChange: (task: Task, newDescription: string) => void; onDeleteTask: (task: Task) => void; onOpenAddLabelPopup: (task: Task, $targetRef: React.RefObject) => void; availableMembers: Array; refreshCache: () => void; }; const initialMemberPopupState = { taskID: '', isOpen: false, top: 0, left: 0 }; const Details: React.FC = ({ projectURL, taskID, onTaskNameChange, onTaskDescriptionChange, onDeleteTask, onOpenAddLabelPopup, availableMembers, refreshCache, }) => { const { userID } = useContext(UserIDContext); const { showPopup, hidePopup } = usePopup(); const history = useHistory(); const match = useRouteMatch(); const [currentMemberTask, setCurrentMemberTask] = useState(''); const [memberPopupData, setMemberPopupData] = useState(initialMemberPopupState); const { loading, data, refetch } = useFindTaskQuery({ variables: { taskID } }); const [updateTaskDueDate] = useUpdateTaskDueDateMutation({ onCompleted: () => { refetch(); refreshCache(); }, }); const [assignTask] = useAssignTaskMutation({ onCompleted: () => { refetch(); refreshCache(); }, }); const [unassignTask] = useUnassignTaskMutation({ onCompleted: () => { refetch(); refreshCache(); }, }); if (loading) { return
loading
; } if (!data) { return
loading
; } console.log(data.findTask); return ( <> { history.push(projectURL); }} renderContent={() => { return ( history.push(projectURL)} onMemberProfile={($targetRef, memberID) => { const member = data.findTask.assigned.find(m => m.id === memberID); const profileIcon = member ? member.profileIcon : null; showPopup( $targetRef, {}} tab={0}> { unassignTask({ variables: { taskID: data.findTask.id, userID: userID ?? '' } }); }} /> , ); }} onOpenAddMemberPopup={(task, $targetRef) => { showPopup( $targetRef, {}}> { if (isActive) { assignTask({ variables: { taskID: data.findTask.id, userID: userID ?? '' } }); } else { unassignTask({ variables: { taskID: data.findTask.id, userID: userID ?? '' } }); } }} /> , ); }} onOpenAddLabelPopup={onOpenAddLabelPopup} onOpenDueDatePopop={(task, $targetRef) => { showPopup( $targetRef, { hidePopup(); }} > { console.log(`${newDueDate}`); updateTaskDueDate({ variables: { taskID: t.id, dueDate: newDueDate } }); hidePopup(); }} onCancel={() => {}} /> , ); }} /> ); }} /> ); }; export default Details;