From 76e89830fecb403fb1d07345de8ee682f5c09ae2 Mon Sep 17 00:00:00 2001 From: Lim Chek Jun Date: Mon, 14 Jun 2021 15:35:04 +0800 Subject: [PATCH] Merged from upstream --- src/commons/navigationBar/NavigationBar.tsx | 6 - .../__snapshots__/NavigationBar.tsx.snap | 6 - .../githubAssessments/GitHubClassroom.tsx | 28 +- .../GitHubMissionListing.tsx | 436 ------------------ 4 files changed, 25 insertions(+), 451 deletions(-) delete mode 100644 src/pages/githubAssessments/GitHubMissionListing.tsx diff --git a/src/commons/navigationBar/NavigationBar.tsx b/src/commons/navigationBar/NavigationBar.tsx index 5ab0761a34..824af85aeb 100644 --- a/src/commons/navigationBar/NavigationBar.tsx +++ b/src/commons/navigationBar/NavigationBar.tsx @@ -23,7 +23,6 @@ import { Role } from '../application/ApplicationTypes'; import Dropdown from '../dropdown/Dropdown'; import Constants from '../utils/Constants'; import AcademyNavigationBar from './subcomponents/AcademyNavigationBar'; -import GitHubAssessmentsNavigationBar from './subcomponents/GitHubAssessmentsNavigationBar'; import NavigationBarMobileSideMenu from './subcomponents/NavigationBarMobileSideMenu'; type NavigationBarProps = DispatchProps & StateProps; @@ -302,11 +301,6 @@ const NavigationBar: React.FC = props => { - - {Constants.enableGitHubAssessments && !isMobileBreakpoint && desktopMenuOpen && ( - - )} - diff --git a/src/commons/navigationBar/__tests__/__snapshots__/NavigationBar.tsx.snap b/src/commons/navigationBar/__tests__/__snapshots__/NavigationBar.tsx.snap index b63bdeb967..f35f42902d 100644 --- a/src/commons/navigationBar/__tests__/__snapshots__/NavigationBar.tsx.snap +++ b/src/commons/navigationBar/__tests__/__snapshots__/NavigationBar.tsx.snap @@ -52,9 +52,6 @@ exports[`NavigationBar renders "Not logged in" correctly 1`] = ` - - - @@ -125,9 +122,6 @@ exports[`NavigationBar renders correctly with student role 1`] = ` - - - diff --git a/src/pages/githubAssessments/GitHubClassroom.tsx b/src/pages/githubAssessments/GitHubClassroom.tsx index 72d1aa12e1..f5a715b064 100644 --- a/src/pages/githubAssessments/GitHubClassroom.tsx +++ b/src/pages/githubAssessments/GitHubClassroom.tsx @@ -14,13 +14,13 @@ import { IconNames } from '@blueprintjs/icons'; import { Octokit } from '@octokit/rest'; import { GetResponseDataTypeFromEndpointMethod } from '@octokit/types'; import * as React from 'react'; -import { useEffect, useState } from 'react'; +import { useEffect, useMemo, useState } from 'react'; import { useSelector } from 'react-redux'; import { useMediaQuery } from 'react-responsive'; import { useLocation, useParams } from 'react-router-dom'; -import { OverallState } from 'src/commons/application/ApplicationTypes'; import defaultCoverImage from '../../assets/default_cover_image.jpg'; +import { OverallState } from '../../commons/application/ApplicationTypes'; import ContentDisplay from '../../commons/ContentDisplay'; import controlButton from '../../commons/ControlButton'; import { MissionRepoData } from '../../commons/githubAssessments/GitHubMissionTypes'; @@ -57,6 +57,15 @@ const GitHubClassroom: React.FC = props => { const [typeNames, setTypeNames] = useState([]); const [browsableMissions, setBrowsableMissions] = useState([]); + const createMissionButton = useMemo( + () => ( + + ), + [] + ); + // GET user organisations after logging in useEffect(() => { if (octokit === undefined) { @@ -85,6 +94,7 @@ const GitHubClassroom: React.FC = props => { if (octokit === undefined) { return; } + if (selectedCourse !== '') { setDisplay( } /> @@ -101,9 +111,14 @@ const GitHubClassroom: React.FC = props => { // After missions retrieved, display mission listing useEffect(() => { + if (octokit === undefined) { + return; + } + if (browsableMissions.length === 0) { setDisplay( <> + {createMissionButton} {isMobileBreakpoint && controlButton('Log Out', IconNames.GIT_BRANCH, props.handleGitHubLogOut, { @@ -122,6 +137,7 @@ const GitHubClassroom: React.FC = props => { setDisplay( <> + {createMissionButton} {cards} {isMobileBreakpoint && controlButton('Log Out', IconNames.GIT_BRANCH, props.handleGitHubLogOut, { @@ -130,7 +146,13 @@ const GitHubClassroom: React.FC = props => { })} ); - }, [browsableMissions, isMobileBreakpoint, props.handleGitHubLogOut]); + }, [ + browsableMissions, + createMissionButton, + isMobileBreakpoint, + octokit, + props.handleGitHubLogOut + ]); return (
diff --git a/src/pages/githubAssessments/GitHubMissionListing.tsx b/src/pages/githubAssessments/GitHubMissionListing.tsx deleted file mode 100644 index 7af8eed519..0000000000 --- a/src/pages/githubAssessments/GitHubMissionListing.tsx +++ /dev/null @@ -1,436 +0,0 @@ -import { - Button, - Card, - Divider, - Elevation, - H4, - H6, - Icon, - NonIdealState, - Spinner, - SpinnerSize, - TagInput, - Text -} from '@blueprintjs/core'; -import { IconNames } from '@blueprintjs/icons'; -import { Octokit } from '@octokit/rest'; -import { - GetResponseDataTypeFromEndpointMethod, - GetResponseTypeFromEndpointMethod -} from '@octokit/types'; -import * as React from 'react'; -import { useEffect, useMemo, useState } from 'react'; -import { useSelector } from 'react-redux'; -import { useMediaQuery } from 'react-responsive'; - -import defaultCoverImage from '../../assets/default_cover_image.jpg'; -import ContentDisplay from '../../commons/ContentDisplay'; -import controlButton from '../../commons/ControlButton'; -import { - getContentAsString, - parseMetadataProperties -} from '../../commons/githubAssessments/GitHubMissionDataUtils'; -import { MissionRepoData } from '../../commons/githubAssessments/GitHubMissionTypes'; -import Markdown from '../../commons/Markdown'; -import Constants from '../../commons/utils/Constants'; -import { history } from '../../commons/utils/HistoryHelper'; -import { getGitHubOctokitInstance } from '../../features/github/GitHubUtils'; - -type DispatchProps = { - handleGitHubLogIn: () => void; - handleGitHubLogOut: () => void; -}; - -/** - * A page that lists the missions available to the authenticated user. - * This page should only be reachable if using a GitHub-hosted deployment. - */ -const GitHubMissionListing: React.FC = props => { - const isMobileBreakpoint = useMediaQuery({ maxWidth: Constants.mobileBreakpoint }); - const octokit: Octokit = useSelector((store: any) => store.session.githubOctokitObject).octokit; - - const [display, setDisplay] = useState(<>); - const [browsableMissions, setBrowsableMissions] = useState([]); - const [filterTagNodes, setFilterTagNodes] = useState([]); - const [filterTagStrings, setFilterTagStrings] = useState([]); - - const handleTagChange = React.useCallback((values: React.ReactNode[]) => { - setFilterTagNodes(values); - - const newFilterTagStrings: string[] = []; - for (let i = 0; i < values.length; i++) { - const value = values[i]; - if (value) { - newFilterTagStrings.push(value.toString().toLowerCase()); - } - } - setFilterTagStrings(newFilterTagStrings); - }, []); - - const handleTagClear = React.useCallback(() => handleTagChange([]), [handleTagChange]); - - const signInToGitHubDisplay = useMemo( - () => , - [] - ); - const noMissionReposFoundDisplay = useMemo( - () => ( - - ), - [] - ); - const createMissionButton = useMemo( - () => ( - - ), - [] - ); - - // After browsable missions retrieved, display mission listing - useEffect(() => { - if (octokit === undefined) { - return; - } - - if (browsableMissions.length === 0) { - setDisplay( - <> - {createMissionButton} - {noMissionReposFoundDisplay} - - ); - return; - } - - // Create tag filter - const clearButton = -
- - - - - ); -} - -export default GitHubMissionListing;