diff --git a/src/discussions/discussions-home/DiscussionContent.jsx b/src/discussions/discussions-home/DiscussionContent.jsx
index e1e42a8d..66b43201 100644
--- a/src/discussions/discussions-home/DiscussionContent.jsx
+++ b/src/discussions/discussions-home/DiscussionContent.jsx
@@ -7,6 +7,7 @@ import { Routes } from '../../data/constants';
import { CommentsView } from '../comments';
import { useContainerSizeForParent } from '../data/hooks';
import { LearnersContentView } from '../learners';
+import LearnerPageHeader from '../learners/LearnerPageHeader';
import { PostEditor } from '../posts';
export default function DiscussionContent() {
@@ -16,6 +17,9 @@ export default function DiscussionContent() {
return (
+
+
+
{postEditorVisible ? (
diff --git a/src/discussions/learners/LearnerPageHeader.jsx b/src/discussions/learners/LearnerPageHeader.jsx
new file mode 100644
index 00000000..7582e8d8
--- /dev/null
+++ b/src/discussions/learners/LearnerPageHeader.jsx
@@ -0,0 +1,70 @@
+import React, { useContext } from 'react';
+
+import classNames from 'classnames';
+import { useSelector } from 'react-redux';
+import { generatePath, NavLink } from 'react-router-dom';
+
+import { injectIntl, intlShape } from '@edx/frontend-platform/i18n';
+import { Avatar, ButtonGroup, Icon } from '@edx/paragon';
+import { Report } from '@edx/paragon/icons';
+
+import { Routes } from '../../data/constants';
+import { DiscussionContext } from '../common/context';
+import { selectLearner, selectLearnerAvatar, selectLearnerProfile } from './data/selectors';
+import messages from './messages';
+
+function LearnerPageHeader({ intl }) {
+ const { courseId, learnerUsername } = useContext(DiscussionContext);
+ const params = { courseId, learnerUsername };
+ const learner = useSelector(selectLearner(learnerUsername));
+ const profile = useSelector(selectLearnerProfile(learnerUsername));
+ const avatar = useSelector(selectLearnerAvatar(learnerUsername));
+
+ const activeTabClass = (active) => classNames('btn', { 'btn-primary': active, 'btn-outline-primary': !active });
+
+ return (
+
+
+
+
+ {profile.username}
+
+
+
+
+
+ {intl.formatMessage(messages.postsTab)} {learner.threads}
+ {
+ learner.activeFlags ? (
+
+
+
+ ) : null
+ }
+
+
+ {intl.formatMessage(messages.responsesTab)} {learner.responses}
+
+
+ {intl.formatMessage(messages.commentsTab)} {learner.replies}
+
+
+
+
+ );
+}
+
+LearnerPageHeader.propTypes = {
+ intl: intlShape.isRequired,
+};
+
+export default injectIntl(LearnerPageHeader);
diff --git a/src/discussions/learners/LearnersContentView.jsx b/src/discussions/learners/LearnersContentView.jsx
index 5a9971df..db650d77 100644
--- a/src/discussions/learners/LearnersContentView.jsx
+++ b/src/discussions/learners/LearnersContentView.jsx
@@ -1,81 +1,25 @@
import React, { useContext } from 'react';
-import classNames from 'classnames';
import { useSelector } from 'react-redux';
import {
- generatePath, NavLink, Redirect, Route, Switch,
+ generatePath, Redirect, Route, Switch,
} from 'react-router-dom';
-import { injectIntl, intlShape } from '@edx/frontend-platform/i18n';
-import {
- Avatar, ButtonGroup, Card, Icon, IconButton, Spinner,
-} from '@edx/paragon';
-import { MoreHoriz, Report } from '@edx/paragon/icons';
+import { Spinner } from '@edx/paragon';
import { LearnerTabs, RequestStatus, Routes } from '../../data/constants';
import { DiscussionContext } from '../common/context';
-import {
- learnersLoadingStatus, selectLearner, selectLearnerAvatar, selectLearnerProfile,
-} from './data/selectors';
+import { learnersLoadingStatus } from './data/selectors';
import CommentsTabContent from './learner/CommentsTabContent';
import PostsTabContent from './learner/PostsTabContent';
-import messages from './messages';
-function LearnersContentView({ intl }) {
+function LearnersContentView() {
const { courseId, learnerUsername } = useContext(DiscussionContext);
const params = { courseId, learnerUsername };
const apiStatus = useSelector(learnersLoadingStatus());
- const learner = useSelector(selectLearner(learnerUsername));
- const profile = useSelector(selectLearnerProfile(learnerUsername));
- const avatar = useSelector(selectLearnerAvatar(learnerUsername));
-
- const activeTabClass = (active) => classNames('btn', { 'btn-primary': active, 'btn-outline-primary': !active });
return (
-
-
-
-
-
- {profile.username}
-
-
-
-
-
-
-
-
-
- {intl.formatMessage(messages.postsTab)} {learner.threads}
- {
- learner.activeFlags ? (
-
-
-
- ) : null
- }
-
-
- {intl.formatMessage(messages.responsesTab)} {learner.responses}
-
-
- {intl.formatMessage(messages.commentsTab)} {learner.replies}
-
-
-
-
-
@@ -104,7 +48,6 @@ function LearnersContentView({ intl }) {
}
LearnersContentView.propTypes = {
- intl: intlShape.isRequired,
};
-export default injectIntl(LearnersContentView);
+export default LearnersContentView;
diff --git a/src/discussions/learners/LearnersContentView.test.jsx b/src/discussions/learners/LearnersContentView.test.jsx
index 8dbe8533..8326a902 100644
--- a/src/discussions/learners/LearnersContentView.test.jsx
+++ b/src/discussions/learners/LearnersContentView.test.jsx
@@ -16,10 +16,10 @@ import { initializeStore } from '../../store';
import { executeThunk } from '../../test-utils';
import { commentsApiUrl } from '../comments/data/api';
import { DiscussionContext } from '../common/context';
+import DiscussionContent from '../discussions-home/DiscussionContent';
import { threadsApiUrl } from '../posts/data/api';
import { coursesApiUrl, userProfileApiUrl } from './data/api';
import { fetchLearners } from './data/thunks';
-import LearnersContentView from './LearnersContentView';
import '../comments/data/__factories__';
import '../posts/data/__factories__';
@@ -37,7 +37,7 @@ function renderComponent(username = testUsername) {
-
+
diff --git a/src/discussions/learners/LearnersView.jsx b/src/discussions/learners/LearnersView.jsx
index 5c1b94a1..4a954c9b 100644
--- a/src/discussions/learners/LearnersView.jsx
+++ b/src/discussions/learners/LearnersView.jsx
@@ -46,8 +46,8 @@ function LearnersView() {
}
};
return (
-
-
+
+
{courseConfigLoadingStatus === RequestStatus.SUCCESSFUL && !learnersTabEnabled && (
-
);