diff --git a/src/discussions/common/HoverCard.jsx b/src/discussions/common/HoverCard.jsx index a4e4c0ac3..bf60b9167 100644 --- a/src/discussions/common/HoverCard.jsx +++ b/src/discussions/common/HoverCard.jsx @@ -12,7 +12,7 @@ import classNames from 'classnames'; import { useIntl } from '@edx/frontend-platform/i18n'; import { ThreadType } from '../../data/constants'; -import { useUserPostingEnabled } from '../data/hooks'; +import { useHasLikePermission, useUserPostingEnabled } from '../data/hooks'; import PostCommentsContext from '../post-comments/postCommentsContext'; import ActionsDropdown from './ActionsDropdown'; import DiscussionContext from './context'; @@ -33,6 +33,7 @@ const HoverCard = ({ const { enableInContextSidebar } = useContext(DiscussionContext); const { isClosed } = useContext(PostCommentsContext); const isUserPrivilegedInPostingRestriction = useUserPostingEnabled(); + const userHasLikePermission = useHasLikePermission(contentType, id); return (
{ e.preventDefault(); diff --git a/src/discussions/data/hooks.js b/src/discussions/data/hooks.js index 2576824bb..6de5e1f0f 100644 --- a/src/discussions/data/hooks.js +++ b/src/discussions/data/hooks.js @@ -16,10 +16,11 @@ import { AppContext } from '@edx/frontend-platform/react'; import selectCourseTabs from '../../components/NavigationBar/data/selectors'; import { LOADED } from '../../components/NavigationBar/data/slice'; import fetchTab from '../../components/NavigationBar/data/thunks'; -import { RequestStatus, Routes } from '../../data/constants'; +import { ContentActions, RequestStatus, Routes } from '../../data/constants'; import { selectTopicsUnderCategory } from '../../data/selectors'; import fetchCourseBlocks from '../../data/thunks'; import DiscussionContext from '../common/context'; +import PostCommentsContext from '../post-comments/postCommentsContext'; import { clearRedirect } from '../posts/data'; import { threadsLoadingStatus } from '../posts/data/selectors'; import { selectTopics } from '../topics/data/selectors'; @@ -27,7 +28,8 @@ import tourCheckpoints from '../tours/constants'; import selectTours from '../tours/data/selectors'; import { updateTourShowStatus } from '../tours/data/thunks'; import messages from '../tours/messages'; -import { discussionsPath } from '../utils'; +import { checkPermissions, discussionsPath } from '../utils'; +import { ContentSelectors } from './constants'; import { selectAreThreadsFiltered, selectEnableInContext, @@ -284,3 +286,10 @@ export const useDebounce = (value, delay) => { ); return debouncedValue; }; + +export const useHasLikePermission = (contentType, id) => { + const { postType } = useContext(PostCommentsContext); + const content = { ...useSelector(ContentSelectors[contentType](id)), postType }; + + return checkPermissions(content, ContentActions.VOTE); +};