Skip to content

Commit a36d1cf

Browse files
committed
Add Edit Published Module modal in direct
1 parent 132bb6b commit a36d1cf

File tree

1 file changed

+50
-10
lines changed

1 file changed

+50
-10
lines changed

frontend/src/components/pages/ViewModulePage.tsx

Lines changed: 50 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import {
3333
import { Document, Page, pdfjs, Thumbnail } from "react-pdf";
3434
import "react-pdf/dist/Page/AnnotationLayer.css";
3535
import "react-pdf/dist/Page/TextLayer.css";
36+
import { useHistory } from "react-router-dom";
3637
import ActivityAPIClient from "../../APIClients/ActivityAPIClient";
3738
import CourseAPIClient from "../../APIClients/CourseAPIClient";
3839
import UserAPIClient from "../../APIClients/UserAPIClient";
@@ -58,6 +59,7 @@ import {
5859
HeaderColumnIncludesTypes,
5960
Media,
6061
QuestionType,
62+
ModuleStatus,
6163
} from "../../types/CourseTypes";
6264
import { Bookmark } from "../../types/UserTypes";
6365
import { padNumber } from "../../utils/StringUtils";
@@ -85,6 +87,7 @@ import NeedHelpModal from "../help/NeedHelpModal";
8587
import DeletePageModal from "./DeletePageModal";
8688
import "./ViewModulePage.css";
8789
import { useCourseUnits } from "../../contexts/CourseUnitsContext";
90+
import EditPublishedModuleModal from "../course_viewing/modals/EditPublishedModuleModal";
8891

8992
pdfjs.GlobalWorkerOptions.workerSrc = new URL(
9093
"pdfjs-dist/build/pdf.worker.min.mjs",
@@ -102,6 +105,7 @@ const ViewModulePage = () => {
102105
const requestedPageId = queryParams.get("pageId") || "";
103106
const requestedUnitId = queryParams.get("unitId") || "";
104107
const { role } = useUser();
108+
const history = useHistory();
105109

106110
const [currentPage, setCurrentPage] = useState(0);
107111
const [isFullScreen, setIsFullScreen] = useState(false);
@@ -124,6 +128,8 @@ const ViewModulePage = () => {
124128
const currentPageObject = module?.pages[currentPage];
125129
const thumbnailRefs = useRef<(HTMLDivElement | null)[]>([]);
126130
const numPages = module?.pages.length || 0;
131+
const [editPublishedModuleModalOpen, setEditPublishedModuleModalOpen] =
132+
useState(false);
127133

128134
const isFeedbackSurveyPage = role === "Learner" && currentPage === numPages;
129135
const isEmptyModuleEditing =
@@ -164,8 +170,22 @@ const ViewModulePage = () => {
164170
const fetchedModule = await CourseAPIClient.getModuleById(
165171
requestedModuleId,
166172
);
173+
if (
174+
fetchedModule?.status === ModuleStatus.unpublished &&
175+
role === "Learner"
176+
) {
177+
// eslint-disable-next-line no-alert
178+
alert("This module is not published yet. Please check back later!");
179+
history.replace(`${COURSE_PAGE}?unitId=${requestedUnitId}`);
180+
}
181+
if (
182+
fetchedModule?.status === ModuleStatus.published &&
183+
role === "Administrator"
184+
) {
185+
setEditPublishedModuleModalOpen(true);
186+
}
167187
return fetchedModule;
168-
}, [requestedModuleId]);
188+
}, [history, requestedModuleId, requestedUnitId, role]);
169189

170190
const { courseUnits: allUnits } = useCourseUnits();
171191
const fetchUnit = useCallback(async () => {
@@ -449,6 +469,10 @@ const ViewModulePage = () => {
449469
return () => window.removeEventListener("resize", handleResize);
450470
}, [handleResize, isFullScreen, lessonPageHeight]);
451471

472+
const activityPageScale = isFullScreen
473+
? getPageScale(activityPageHeight, activityPageWidth)
474+
: 1;
475+
452476
const isCurrentPageBookmarked = useMemo(() => {
453477
if (!module?.pages[currentPage]) return false;
454478
const pageId = module.pages[currentPage].id;
@@ -980,11 +1004,7 @@ const ViewModulePage = () => {
9801004
justifyContent="center"
9811005
alignItems="center"
9821006
sx={{
983-
transform: `scale(${
984-
isFullScreen
985-
? getPageScale(activityPageHeight, activityPageWidth)
986-
: 1
987-
})`,
1007+
transform: `scale(${activityPageScale})`,
9881008
}}
9891009
ref={activityPageRef}
9901010
>
@@ -1040,10 +1060,7 @@ const ViewModulePage = () => {
10401060
onCorrectAnswer={onCorrectAnswer}
10411061
key={activity.id}
10421062
ref={activityViewerRef}
1043-
scale={getPageScale(
1044-
activityPageHeight,
1045-
activityPageWidth,
1046-
)}
1063+
scale={activityPageScale}
10471064
/>
10481065
))}
10491066
</Box>
@@ -1492,6 +1509,29 @@ const ViewModulePage = () => {
14921509
}
14931510
/>
14941511
</Snackbar>
1512+
<EditPublishedModuleModal
1513+
openEditPublishedModuleModal={editPublishedModuleModalOpen}
1514+
handleCloseEditPublishedModuleModal={() =>
1515+
setEditPublishedModuleModalOpen(false)
1516+
}
1517+
unpublishModuleAndEdit={async () => {
1518+
if (module) {
1519+
const updatedModule = await CourseAPIClient.unpublishModule(
1520+
module?.id,
1521+
);
1522+
if (
1523+
updatedModule &&
1524+
updatedModule.status === ModuleStatus.unpublished
1525+
) {
1526+
setModule({
1527+
...module,
1528+
status: updatedModule.status,
1529+
});
1530+
setEditPublishedModuleModalOpen(false);
1531+
}
1532+
}
1533+
}}
1534+
/>
14951535
</>
14961536
);
14971537
};

0 commit comments

Comments
 (0)