import React, { useContext } from 'react'; import { useSelector } from 'react-redux'; import { useLocation } from 'react-router-dom'; import { injectIntl, intlShape } from '@edx/frontend-platform/i18n'; import { Spinner } from '@edx/paragon'; import { RequestStatus, Routes } from '../../data/constants'; import { DiscussionContext } from '../common/context'; import { selectTopicThreads } from '../posts/data/selectors'; import PostsList from '../posts/PostsList'; import { discussionsPath, handleKeyDown } from '../utils'; import { selectArchivedTopic, selectLoadingStatus, selectNonCoursewareTopics, selectSubsection, selectSubsectionUnits, selectUnits, } from './data/selectors'; import { BackButton, NoResults } from './components'; import messages from './messages'; import { Topic } from './topic'; function TopicPostsView({ intl }) { const location = useLocation(); const { courseId, topicId, category } = useContext(DiscussionContext); const topicsLoadingStatus = useSelector(selectLoadingStatus); const posts = useSelector(selectTopicThreads([topicId])); const selectedSubsectionUnits = useSelector(selectSubsectionUnits(category)); const selectedSubsection = useSelector(selectSubsection(category)); const selectedUnit = useSelector(selectUnits)?.find(unit => unit.id === topicId); const selectedNonCoursewareTopic = useSelector(selectNonCoursewareTopics)?.find(topic => topic.id === topicId); const selectedArchivedTopic = useSelector(selectArchivedTopic(topicId)); const backButtonPath = () => { const path = selectedUnit ? Routes.TOPICS.CATEGORY : Routes.TOPICS.ALL; const params = selectedUnit ? { courseId, category: selectedUnit?.parentId } : { courseId }; return discussionsPath(path, params)(location); }; return (