diff --git a/packages/mattermost-plugin/components/CreateTaskModal/CreateTaskModal.tsx b/packages/mattermost-plugin/components/CreateTaskModal/CreateTaskModal.tsx index c872fa393a4..348aeb54f2e 100644 --- a/packages/mattermost-plugin/components/CreateTaskModal/CreateTaskModal.tsx +++ b/packages/mattermost-plugin/components/CreateTaskModal/CreateTaskModal.tsx @@ -4,7 +4,7 @@ import {useEffect, useMemo, useState} from 'react' import {useDispatch, useSelector} from 'react-redux' import {useLazyLoadQuery, useMutation} from 'react-relay' -import {closeCreateTaskModal, openLinkTeamModal} from '../../reducers' +import {closeCreateTaskModal} from '../../reducers' import {useCurrentChannel} from '../../hooks/useCurrentChannel' import {useCurrentUser} from '../../hooks/useCurrentUser' @@ -22,6 +22,7 @@ import {useTipTapTaskEditor} from '../../hooks/useTipTapTaskEditor' import {getPluginServerRoute} from '../../selectors' import LoadingSpinner from '../LoadingSpinner' import Modal from '../Modal' +import NoLinkedTeamsModal from '../NoLinkedTeamsModal' const TaskStatus: TaskStatusEnum[] = ['active', 'done', 'future', 'stuck'] @@ -56,7 +57,7 @@ const CreateTaskModal = () => { const {viewer, linkedTeamIds} = data const {id: userId, teams} = viewer const linkedTeams = useMemo( - () => teams.filter(({id}) => linkedTeamIds && linkedTeamIds.includes(id)), + () => teams.filter(({id}) => linkedTeamIds?.includes(id)), [teams, linkedTeamIds] ) @@ -133,21 +134,8 @@ const CreateTaskModal = () => { return null } - if (linkedTeams.length === 0) { - const handleLink = () => { - dispatch(openLinkTeamModal()) - handleClose() - } - return ( - -

There are no Parabol teams linked to this channel yet.

-
- ) + if (!linkedTeams || linkedTeams.length === 0) { + return } return ( diff --git a/packages/mattermost-plugin/components/InviteToMeetingModal/InviteToMeetingModal.tsx b/packages/mattermost-plugin/components/InviteToMeetingModal/InviteToMeetingModal.tsx index 433c934986b..2e52e9965b5 100644 --- a/packages/mattermost-plugin/components/InviteToMeetingModal/InviteToMeetingModal.tsx +++ b/packages/mattermost-plugin/components/InviteToMeetingModal/InviteToMeetingModal.tsx @@ -12,6 +12,7 @@ import {useCurrentChannel} from '../../hooks/useCurrentChannel' import {useInviteToMeeting} from '../../hooks/useInviteToMeeting' import LoadingSpinner from '../LoadingSpinner' import Modal from '../Modal' +import NoLinkedTeamsModal from '../NoLinkedTeamsModal' const InviteToMeetingModal = () => { const channel = useCurrentChannel() @@ -70,6 +71,10 @@ const InviteToMeetingModal = () => { handleClose() } + if (!linkedTeams || linkedTeams.length === 0) { + return + } + return ( { + const channel = useCurrentChannel() const data = useLazyLoadQuery( graphql` - query InviteToTeamModalQuery { + query InviteToTeamModalQuery($channel: ID!) { + linkedTeamIds(channel: $channel) viewer { teams { ...useInviteToTeam_team @@ -26,20 +28,21 @@ const InviteToTeamModal = () => { } } `, - {} + { + channel: channel?.id ?? '' + } ) - const {viewer} = data - const {teams} = viewer + const {viewer, linkedTeamIds} = data + const linkedTeams = viewer.teams.filter((team) => linkedTeamIds?.includes(team.id)) - const [selectedTeam, setSelectedTeam] = useState[number]>() - const channel = useCurrentChannel() + const [selectedTeam, setSelectedTeam] = useState[number]>() useEffect(() => { - if (!selectedTeam && teams && teams.length > 0) { - setSelectedTeam(teams[0]) + if (!selectedTeam && linkedTeams && linkedTeams.length > 0) { + setSelectedTeam(linkedTeams[0]) } - }, [teams, selectedTeam]) + }, [linkedTeams, selectedTeam]) const invite = useInviteToTeam(selectedTeam) @@ -63,11 +66,11 @@ const InviteToTeamModal = () => { handleCommit={handleStart} handleClose={handleClose} > - {teams ? ( + {linkedTeams ? ( diff --git a/packages/mattermost-plugin/hooks/useStartMeeting.tsx b/packages/mattermost-plugin/hooks/useStartMeeting.tsx index 82397c99d0d..d2efc0364e4 100644 --- a/packages/mattermost-plugin/hooks/useStartMeeting.tsx +++ b/packages/mattermost-plugin/hooks/useStartMeeting.tsx @@ -8,6 +8,50 @@ import {useStartMeetingSprintPokerMutation} from '../__generated__/useStartMeeti import {useStartMeetingTeamPromptMutation} from '../__generated__/useStartMeetingTeamPromptMutation.graphql' //import addNodeToArray from '../../client/utils/relay/addNodeToArray' +graphql` + fragment useStartMeeting_retrospective on StartRetrospectiveSuccess { + meeting { + id + } + team { + ...ActiveMeetings_team + } + } +` + +graphql` + fragment useStartMeeting_checkIn on StartCheckInSuccess { + meeting { + id + } + team { + ...ActiveMeetings_team + } + } +` + +graphql` + fragment useStartMeeting_sprintPoker on StartSprintPokerSuccess { + meeting { + id + } + team { + ...ActiveMeetings_team + } + } +` + +graphql` + fragment useStartMeeting_teamPrompt on StartTeamPromptSuccess { + meeting { + id + } + team { + ...ActiveMeetings_team + } + } +` + const useStartMeeting = () => { const [error, setError] = useState(null) const [startRetrospective, startRetrospectiveLoading] = @@ -19,6 +63,7 @@ const useStartMeeting = () => { } } startRetrospective(teamId: $teamId) { + ...useStartMeeting_retrospective @relay(mask: false) ... on ErrorPayload { error { message @@ -31,6 +76,7 @@ const useStartMeeting = () => { const [startCheckIn, startCheckInLoading] = useMutation(graphql` mutation useStartMeetingCheckInMutation($teamId: ID!) { startCheckIn(teamId: $teamId) { + ...useStartMeeting_checkIn @relay(mask: false) ... on ErrorPayload { error { message @@ -54,16 +100,12 @@ const useStartMeeting = () => { } } startSprintPoker(teamId: $teamId) { + ...useStartMeeting_sprintPoker @relay(mask: false) ... on ErrorPayload { error { message } } - ... on StartSprintPokerSuccess { - meeting { - id - } - } } } `) @@ -72,16 +114,12 @@ const useStartMeeting = () => { graphql` mutation useStartMeetingTeamPromptMutation($teamId: ID!) { startTeamPrompt(teamId: $teamId) { + ...useStartMeeting_teamPrompt @relay(mask: false) ... on ErrorPayload { error { message } } - ... on StartTeamPromptSuccess { - meeting { - id - } - } } } ` diff --git a/packages/mattermost-plugin/resolvers.ts b/packages/mattermost-plugin/resolvers.ts index e845f7f3ea2..4ceb1bf1bf3 100644 --- a/packages/mattermost-plugin/resolvers.ts +++ b/packages/mattermost-plugin/resolvers.ts @@ -78,7 +78,7 @@ export function linkedTeamIds( return { read: () => { - return current?.teamIds ?? null + return current?.teamIds ?? suspenseSentinel() }, subscribe: (callback: () => void) => { return store.subscribe(() => {