From b1c1f1c024bd0f647ef5c30b6708a2737565a9fc Mon Sep 17 00:00:00 2001 From: Ahtisham Shahid Date: Mon, 19 Dec 2022 11:35:14 +0500 Subject: [PATCH] fix: removed sidebar in case there are no posts (#367) * fix: removed sidebar in case there are no posts --- src/discussions/data/hooks.js | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/discussions/data/hooks.js b/src/discussions/data/hooks.js index 0c6ad576..57261d99 100644 --- a/src/discussions/data/hooks.js +++ b/src/discussions/data/hooks.js @@ -10,12 +10,13 @@ import { getAuthenticatedUser } from '@edx/frontend-platform/auth'; import { AppContext } from '@edx/frontend-platform/react'; import { breakpoints, useWindowSize } from '@edx/paragon'; -import { Routes } from '../../data/constants'; +import { RequestStatus, Routes } from '../../data/constants'; import { selectTopicsUnderCategory } from '../../data/selectors'; import { fetchCourseBlocks } from '../../data/thunks'; import { DiscussionContext } from '../common/context'; import { clearRedirect } from '../posts/data'; -import { selectTopics } from '../topics/data/selectors'; +import { threadsLoadingStatus } from '../posts/data/selectors'; +import { selectTopics, topicsLoadingStatus } from '../topics/data/selectors'; import { fetchCourseTopics } from '../topics/data/thunks'; import { discussionsPath, inBlackoutDateRange } from '../utils'; import { @@ -48,14 +49,27 @@ export function useTotalTopicThreadCount() { export const useSidebarVisible = () => { const isFiltered = useSelector(selectAreThreadsFiltered); const totalThreads = useSelector(selectPostThreadCount); - const isViewingTopics = useRouteMatch(Routes.TOPICS.PATH); + const threadsCallStatus = useSelector(threadsLoadingStatus); + const isViewingSpecificTopic = useRouteMatch(Routes.TOPICS.TOPIC); + const isViewingTopics = useRouteMatch(Routes.TOPICS.ALL); const isViewingLearners = useRouteMatch(Routes.LEARNERS.PATH); + const topicsLoading = useSelector(topicsLoadingStatus); + + if ( + isViewingSpecificTopic + && isViewingSpecificTopic.isExact + && totalThreads > 0 + && topicsLoading === RequestStatus.SUCCESSFUL + && threadsCallStatus === RequestStatus.SUCCESSFUL + ) { + return false; + } if (isFiltered) { return true; } - if (isViewingTopics || isViewingLearners) { + if ((isViewingTopics && isViewingTopics.isExact) || isViewingLearners) { return true; }