From c4215d9cee3cf10b8b3edaff09d466c174355550 Mon Sep 17 00:00:00 2001 From: Ahtisham Shahid Date: Tue, 13 Jul 2021 10:53:48 +0500 Subject: [PATCH] feat: Added permission alert in pages (#153) * feat: Added permission alert on pages --- src/CourseAuthoringPage.jsx | 31 ++++++--- src/CourseAuthoringPage.test.jsx | 63 +++++++++++++++++++ src/pages-and-resources/PagesAndResources.jsx | 7 ++- src/pages-and-resources/data/selectors.js | 1 + src/pages-and-resources/data/slice.js | 5 ++ src/pages-and-resources/data/thunks.js | 8 ++- 6 files changed, 103 insertions(+), 12 deletions(-) create mode 100644 src/CourseAuthoringPage.test.jsx diff --git a/src/CourseAuthoringPage.jsx b/src/CourseAuthoringPage.jsx index ae9cfd4f3..1e0dfa62a 100644 --- a/src/CourseAuthoringPage.jsx +++ b/src/CourseAuthoringPage.jsx @@ -1,11 +1,15 @@ import React, { useEffect } from 'react'; import PropTypes from 'prop-types'; import Footer from '@edx/frontend-component-footer'; -import { useDispatch } from 'react-redux'; +import { useDispatch, useSelector } from 'react-redux'; import Header from './studio-header/Header'; import { fetchCourseDetail } from './data/thunks'; import { useModel } from './generic/model-store'; +import PermissionDeniedAlert from './generic/PermissionDeniedAlert'; +import { getCourseAppsApiStatus, getLoadingStatus } from './pages-and-resources/data/selectors'; +import { RequestStatus } from './data/constants'; +import Loading from './generic/Loading'; export default function CourseAuthoringPage({ courseId, children }) { const dispatch = useDispatch(); @@ -19,17 +23,28 @@ export default function CourseAuthoringPage({ courseId, children }) { const courseNumber = courseDetail ? courseDetail.number : null; const courseOrg = courseDetail ? courseDetail.org : null; const courseTitle = courseDetail ? courseDetail.name : courseId; + const courseAppsApiStatus = useSelector(getCourseAppsApiStatus); + const inProgress = useSelector(getLoadingStatus) === RequestStatus.IN_PROGRESS; + if (courseAppsApiStatus === RequestStatus.DENIED) { + return ( + + ); + } + + const AppHeader = () => ( +
+ ); return ( <> -
+ {inProgress ? : AppHeader()} {children} -