{courseConfigLoadingStatus === RequestStatus.SUCCESSFUL && !learnersTabEnabled && (
)}
- {courseConfigLoadingStatus === RequestStatus.SUCCESSFUL && learnersTabEnabled && learners.map((learner) => (
-
- ))}
+ {courseConfigLoadingStatus === RequestStatus.SUCCESSFUL
+ && learnersTabEnabled
+ && learners.map((learner, index) => (
+ // eslint-disable-next-line react/no-array-index-key
+
+ ))}
{loadingStatus === RequestStatus.IN_PROGRESS ? (
@@ -79,6 +86,7 @@ function LearnersView({ intl }) {
)
)}
+ { usernameSearch !== '' && learners.length === 0 && loadingStatus === RequestStatus.SUCCESSFUL && }
);
diff --git a/src/discussions/posts/NoResults.jsx b/src/discussions/posts/NoResults.jsx
index 463f86af..405bab8b 100644
--- a/src/discussions/posts/NoResults.jsx
+++ b/src/discussions/posts/NoResults.jsx
@@ -6,18 +6,21 @@ import { selectAreThreadsFiltered } from '../data/selectors';
import messages from '../messages';
function NoResults({ intl }) {
- const isFiltered = useSelector(selectAreThreadsFiltered);
+ const postsFiltered = useSelector(selectAreThreadsFiltered);
+ const topicsFilter = useSelector(({ topics }) => topics.filter);
const filters = useSelector((state) => state.threads.filters);
+ const learnersFilter = useSelector(({ learners }) => learners.usernameSearch);
+ const isFiltered = postsFiltered || (topicsFilter !== '') || (learnersFilter !== null);
let helpMessage = messages.removeFilters;
if (!isFiltered) {
return null;
- } if (filters.search) {
+ } if (filters.search || topicsFilter || learnersFilter) {
helpMessage = messages.removeKeywords;
}
return (
-
+
{intl.formatMessage(messages.noResultsFound)}
{intl.formatMessage(helpMessage)}
diff --git a/src/discussions/topics/TopicsView.jsx b/src/discussions/topics/TopicsView.jsx
index 44a8b24e..54cdcebe 100644
--- a/src/discussions/topics/TopicsView.jsx
+++ b/src/discussions/topics/TopicsView.jsx
@@ -4,10 +4,11 @@ import { useDispatch, useSelector } from 'react-redux';
import { useParams } from 'react-router';
import SearchInfo from '../../components/SearchInfo';
-import { DiscussionProvider } from '../../data/constants';
+import { DiscussionProvider, RequestStatus } from '../../data/constants';
import { selectSequences } from '../../data/selectors';
import { DiscussionContext } from '../common/context';
import { selectDiscussionProvider } from '../data/selectors';
+import NoResults from '../posts/NoResults';
import { selectCategories, selectNonCoursewareTopics, selectTopicFilter } from './data/selectors';
import { setFilter, setTopicsCount } from './data/slices';
import { fetchCourseTopics } from './data/thunks';
@@ -71,6 +72,7 @@ function TopicsView() {
const topicFilter = useSelector(selectTopicFilter);
const topicsSelector = useSelector(({ topics }) => topics);
const filteredTopicsCount = useSelector(({ topics }) => topics.results.count);
+ const loadingStatus = useSelector(({ topics }) => topics.status);
const { courseId } = useContext(DiscussionContext);
const dispatch = useDispatch();
@@ -87,18 +89,23 @@ function TopicsView() {
}, [topicFilter]);
return (
-
- {
- topicFilter &&
dispatch(setFilter(''))} />
- }
-
-
- {provider === DiscussionProvider.OPEN_EDX &&
}
- {provider === DiscussionProvider.LEGACY &&
}
+
+
+ {
+ topicFilter &&
dispatch(setFilter(''))} />
+ }
+
+
+ {provider === DiscussionProvider.OPEN_EDX && }
+ {provider === DiscussionProvider.LEGACY && }
+
+ {
+ filteredTopicsCount === 0 && loadingStatus === RequestStatus.SUCCESSFUL &&
+ }
);
}