diff --git a/webapp/channels/src/actions/websocket_actions.jsx b/webapp/channels/src/actions/websocket_actions.jsx index 03ce908cab..79388b0a49 100644 --- a/webapp/channels/src/actions/websocket_actions.jsx +++ b/webapp/channels/src/actions/websocket_actions.jsx @@ -82,7 +82,7 @@ import { getCurrentChannelId, getRedirectChannelNameForTeam, } from 'mattermost-redux/selectors/entities/channels'; -import {getPost, getMostRecentPostIdInChannel} from 'mattermost-redux/selectors/entities/posts'; +import {getPost, getMostRecentPostIdInChannel, getTeamIdFromPost} from 'mattermost-redux/selectors/entities/posts'; import {haveISystemPermission, haveITeamPermission} from 'mattermost-redux/selectors/entities/roles'; import {appsFeatureFlagEnabled} from 'mattermost-redux/selectors/entities/apps'; import {getStandardAnalytics} from 'mattermost-redux/actions/admin'; @@ -774,8 +774,10 @@ async function handlePostDeleteEvent(msg) { const thread = getThread(state, post.root_id); if (thread) { const userId = getCurrentUserId(state); - const teamId = getCurrentTeamId(state); - dispatch(fetchThread(userId, teamId, post.root_id, true)); + const teamId = getTeamIdFromPost(state, post); + if (teamId) { + dispatch(fetchThread(userId, teamId, post.root_id, true)); + } } else { const res = await dispatch(getPostThread(post.root_id)); const {order, posts} = res.data; @@ -1679,7 +1681,7 @@ function handleThreadFollowChanged(msg) { const state = doGetState(); const thread = getThread(state, msg.data.thread_id); if (!thread && msg.data.state && msg.data.reply_count) { - await doDispatch(fetchThread(getCurrentUserId(state), getCurrentTeamId(state), msg.data.thread_id, true)); + await doDispatch(fetchThread(getCurrentUserId(state), msg.broadcast.team_id, msg.data.thread_id, true)); } handleFollowChanged(doDispatch, msg.data.thread_id, msg.broadcast.team_id, msg.data.state); }; diff --git a/webapp/channels/src/packages/mattermost-redux/src/selectors/entities/posts.ts b/webapp/channels/src/packages/mattermost-redux/src/selectors/entities/posts.ts index ce50bba0eb..b898cc9019 100644 --- a/webapp/channels/src/packages/mattermost-redux/src/selectors/entities/posts.ts +++ b/webapp/channels/src/packages/mattermost-redux/src/selectors/entities/posts.ts @@ -1,13 +1,15 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import {Posts, Preferences} from 'mattermost-redux/constants'; +import {General, Posts, Preferences} from 'mattermost-redux/constants'; import {createSelector} from 'mattermost-redux/selectors/create_selector'; import {getCurrentUser} from 'mattermost-redux/selectors/entities/common'; import {getMyPreferences} from 'mattermost-redux/selectors/entities/preferences'; import {getUsers, getCurrentUserId, getUserStatuses} from 'mattermost-redux/selectors/entities/users'; import {getConfig, getFeatureFlagValue} from 'mattermost-redux/selectors/entities/general'; +import {getChannel} from 'mattermost-redux/selectors/entities/channels'; +import {getCurrentTeamId} from 'mattermost-redux/selectors/entities/teams'; import {createIdsSelector} from 'mattermost-redux/utils/helpers'; @@ -36,6 +38,7 @@ import { import {Reaction} from '@mattermost/types/reactions'; import {GlobalState} from '@mattermost/types/store'; import {UserProfile} from '@mattermost/types/users'; +import type {Team} from '@mattermost/types/teams'; import { IDMappedObjects, RelationOneToOne, @@ -830,3 +833,17 @@ export function makeGetPostAcknowledgementsWithProfiles(): (state: GlobalState, }, ); } + +export function getTeamIdFromPost(state: GlobalState, post: Post): Team['id'] | undefined { + const channel = getChannel(state, post.channel_id); + + if (!channel) { + return undefined; + } + + if (channel.type === General.DM_CHANNEL || channel.type === General.GM_CHANNEL) { + return getCurrentTeamId(state); + } + + return channel.team_id; +}