import React, { useState, useEffect } from 'react'; import styled from 'styled-components/macro'; import GlobalTopNavbar from 'App/TopNavbar'; import updateApolloCache from 'shared/utils/cache'; import { Route, Switch, useRouteMatch, Redirect, useParams, useHistory } from 'react-router'; import { useGetTeamQuery, useDeleteTeamMutation, GetProjectsDocument, GetProjectsQuery, } from 'shared/generated/graphql'; import { usePopup, Popup } from 'shared/components/PopupMenu'; import { History } from 'history'; import produce from 'immer'; import { TeamSettings, DeleteConfirm, DELETE_INFO } from 'shared/components/ProjectSettings'; import { useCurrentUser } from 'App/context'; import NOOP from 'shared/utils/noop'; import Members from './Members'; import Projects from './Projects'; const OuterWrapper = styled.div` display: flex; justify-content: center; `; const Wrapper = styled.div` display: flex; flex-direction: row; align-items: flex-start; justify-content: center; max-width: 1400px; width: 100%; `; type TeamPopupProps = { history: History; name: string; teamID: string; }; export const TeamPopup: React.FC = ({ history, name, teamID }) => { const { hidePopup, setTab } = usePopup(); const [deleteTeam] = useDeleteTeamMutation({ update: (client, deleteData) => { updateApolloCache(client, GetProjectsDocument, cache => produce(cache, draftCache => { draftCache.teams = cache.teams.filter((team: any) => team.id !== deleteData.data?.deleteTeam.team.id); draftCache.projects = cache.projects.filter( (project: any) => project.team.id !== deleteData.data?.deleteTeam.team.id, ); }), ); }, }); return ( <> { setTab(1, { width: 340 }); }} /> hidePopup()}> { if (teamID) { deleteTeam({ variables: { teamID } }); hidePopup(); history.push('/projects'); } }} /> ); }; type TeamsRouteProps = { teamID: string; }; const Teams = () => { const { teamID } = useParams(); const history = useHistory(); const { loading, data } = useGetTeamQuery({ variables: { teamID }, onCompleted: resp => { document.title = `${resp.findTeam.name} | Taskcafé`; }, }); const { user } = useCurrentUser(); const [currentTab, setCurrentTab] = useState(0); const match = useRouteMatch(); if (data && user) { /* TODO: re-add permission check if (!user.isVisible(PermissionLevel.TEAM, PermissionObjectType.TEAM, teamID)) { return ; } */ return ( <> { setCurrentTab(tab); }} popupContent={} onSaveProjectName={NOOP} projectID={null} name={data.findTeam.name} /> ); } return ( { setCurrentTab(tab); }} onSaveProjectName={NOOP} projectID={null} name={null} /> ); }; export default Teams;