From 9ba9b646c3547172dea112c3d7d8e1dde7376330 Mon Sep 17 00:00:00 2001 From: Devin Binnie <52460000+devinbinnie@users.noreply.github.com> Date: Wed, 29 Jan 2025 14:29:59 -0500 Subject: [PATCH] [MM-62107] Remove the need to have the currently selected thread in the Unreads pane (#29876) * [MM-62107] Remove the need to have the currently selected thread in the Unreads pane * Remove selected thread from Followed Threads as well if it's not followed --------- Co-authored-by: Caleb Roseland --- .../threading/global_threads/global_threads.tsx | 12 ++++-------- .../src/selectors/entities/threads.ts | 16 +--------------- 2 files changed, 5 insertions(+), 23 deletions(-) diff --git a/webapp/channels/src/components/threading/global_threads/global_threads.tsx b/webapp/channels/src/components/threading/global_threads/global_threads.tsx index adb62348ef..0ae5b9d0a3 100644 --- a/webapp/channels/src/components/threading/global_threads/global_threads.tsx +++ b/webapp/channels/src/components/threading/global_threads/global_threads.tsx @@ -57,8 +57,8 @@ const GlobalThreads = () => { const selectedThread = useSelector((state: GlobalState) => getThread(state, threadIdentifier)); const selectedThreadId = useSelector(getSelectedThreadIdInCurrentTeam); const selectedPost = useSelector((state: GlobalState) => getPost(state, threadIdentifier!)); - const threadIds = useSelector((state: GlobalState) => getThreadOrderInCurrentTeam(state, selectedThread?.id), shallowEqual); - const unreadThreadIds = useSelector((state: GlobalState) => getUnreadThreadOrderInCurrentTeam(state, selectedThread?.id), shallowEqual); + const threadIds = useSelector((state: GlobalState) => getThreadOrderInCurrentTeam(state), shallowEqual); + const unreadThreadIds = useSelector((state: GlobalState) => getUnreadThreadOrderInCurrentTeam(state), shallowEqual); const numUnread = counts?.total_unread_threads || 0; useEffect(() => { @@ -94,12 +94,8 @@ const GlobalThreads = () => { const [isLoading, setLoading] = useState(isEmptyList); - const isOnlySelectedThreadInList = (list: string[]) => { - return selectedThreadId && list.length === 1 && list[0] === selectedThreadId; - }; - - const shouldLoadThreads = isEmpty(threadIds) || isOnlySelectedThreadInList(threadIds); - const shouldLoadUnreadThreads = isEmpty(unreadThreadIds) || isOnlySelectedThreadInList(unreadThreadIds); + const shouldLoadThreads = isEmpty(threadIds); + const shouldLoadUnreadThreads = isEmpty(unreadThreadIds); useEffect(() => { const promises = []; diff --git a/webapp/channels/src/packages/mattermost-redux/src/selectors/entities/threads.ts b/webapp/channels/src/packages/mattermost-redux/src/selectors/entities/threads.ts index 518c49c7b6..30657f2b04 100644 --- a/webapp/channels/src/packages/mattermost-redux/src/selectors/entities/threads.ts +++ b/webapp/channels/src/packages/mattermost-redux/src/selectors/entities/threads.ts @@ -104,22 +104,15 @@ export function makeGetThreadOrSynthetic(): (state: GlobalState, rootPost: Post) ); } -export const getThreadOrderInCurrentTeam: (state: GlobalState, selectedThreadIdInTeam?: UserThread['id']) => Array = createSelector( +export const getThreadOrderInCurrentTeam: (state: GlobalState) => Array = createSelector( 'getThreadOrderInCurrentTeam', getThreadsInCurrentTeam, getThreads, - (state: GlobalState, selectedThreadIdInTeam?: UserThread['id']) => selectedThreadIdInTeam, ( threadsInTeam, threads, - selectedThreadIdInTeam, ) => { const ids = [...threadsInTeam.filter((id) => threads[id].is_following)]; - - if (selectedThreadIdInTeam && !ids.includes(selectedThreadIdInTeam)) { - ids.push(selectedThreadIdInTeam); - } - return sortByLastReply(ids, threads); }, ); @@ -145,26 +138,19 @@ export const getNewestThreadInTeam: (state: GlobalState, teamID: string,) => (Us export const getUnreadThreadOrderInCurrentTeam: ( state: GlobalState, - selectedThreadIdInTeam?: UserThread['id'], ) => Array = createSelector( 'getUnreadThreadOrderInCurrentTeam', getUnreadThreadsInCurrentTeam, getThreads, - (state: GlobalState, selectedThreadIdInTeam?: UserThread['id']) => selectedThreadIdInTeam, ( threadsInTeam, threads, - selectedThreadIdInTeam, ) => { const ids = threadsInTeam.filter((id) => { const thread = threads[id]; return thread.is_following && (thread.unread_replies || thread.unread_mentions); }); - if (selectedThreadIdInTeam && !ids.includes(selectedThreadIdInTeam)) { - ids.push(selectedThreadIdInTeam); - } - return sortByLastReply(ids, threads); }, );