From 2c8bc7071db2635a70d005cb73c63b649632915c Mon Sep 17 00:00:00 2001 From: "Shaun A. Noordin" Date: Mon, 1 Nov 2021 14:56:19 +0000 Subject: [PATCH] Rewrite router to NOT use CoffeeScript (#6041) * Rewrite router to not use CoffeeScript * Change export code Co-Authored-By: Jim O'Donnell Co-authored-by: Jim O'Donnell --- app/main.cjsx | 2 +- app/router.cjsx | 303 ---------------------------------------------- app/router.jsx | 311 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 312 insertions(+), 304 deletions(-) delete mode 100644 app/router.cjsx create mode 100644 app/router.jsx diff --git a/app/main.cjsx b/app/main.cjsx index 7f5c27ebdb..c809cc9678 100644 --- a/app/main.cjsx +++ b/app/main.cjsx @@ -3,7 +3,7 @@ ReactDOM = require 'react-dom' apiClient = require 'panoptes-client/lib/api-client' { applyRouterMiddleware, Router, browserHistory } = require 'react-router' useScroll = require 'react-router-scroll/lib/useScroll' -routes = require './router' +{ routes } = require './router' style = require '../css/main.styl' { Provider } = require('react-redux') initStore = require('./redux/init-store').default diff --git a/app/router.cjsx b/app/router.cjsx deleted file mode 100644 index 97b5015e64..0000000000 --- a/app/router.cjsx +++ /dev/null @@ -1,303 +0,0 @@ -Router = {IndexRoute, IndexRedirect, Route, Redirect} = require 'react-router' -React = require 'react' -createReactClass = require 'create-react-class' - -`import ProjectsPage from './pages/projects/index';` -`import FilteredProjectsList from './pages/projects/filtered-projects-list';` -`import CollectionPageWrapper from './collections/show';` -`import CollectionSettings from './collections/settings';` -`import CollectionCollaborators from './collections/collaborators';` -`import ProjectHomePage from './pages/project/home';` -`import AboutProject from './pages/project/about/index';` -`import { AboutProjectResearch, AboutProjectEducation, AboutProjectFAQ, AboutProjectResults } from './pages/project/about/simple-pages';` -`import AboutProjectTeam from './pages/project/about/team';` -`import UserSettingsList from './pages/admin/user-settings-list';` -`import UserSettings from './pages/admin/user-settings';` -`import ProjectStatusList from './pages/admin/project-status-list';` -`import ProjectStatus from './pages/admin/project-status';` -`import Grantbot from './pages/admin/grantbot';` -`import OrganizationStatusList from './pages/admin/organization-status-list';` -`import OrganizationStatus from './pages/admin/organization-status';` -`import EditProjectTalk from './pages/lab/talk';` -`import EditMediaPage from './pages/lab/media';` -`import UserProfilePage from './pages/profile/index';` -`import NotificationsPage from './pages/notifications';` -`import SubjectPageController from './subjects';` -`import WorkflowsPage from './pages/lab/workflows';` -`import WorkflowsContainer from './pages/lab/workflows-container';` -`import WorkflowsList from './pages/lab/workflows';` -`import SubjectSetsContainer from './pages/lab/subject-sets-container';` -`import SubjectSetsList from './pages/lab/subject-sets';` -`import TranslationsManager from './pages/lab/translations';` -`import UnsubscribeFromEmails from './pages/unsubscribe';` -`import HomePageRoot from './pages/home';` -`import PrivacyPolicy from './pages/privacy-policy';` -`import YouthPrivacyPolicy from './pages/youth-privacy-policy';` -`import SecurityPolicy from './pages/security-policy';` -`import AdminPage from './pages/admin';` -`import SignInPage from './pages/sign-in';` -`import NotFoundPage from './pages/not-found';` -`import ResetPasswordPage from './pages/reset-password/reset-password';` -`import Recents from './pages/profile/recents';` -`import AccountInformationPage from './pages/settings/AccountInformationPage';` -`import CustomiseProfile from './pages/settings/CustomiseProfile';` -`import EmailSettingsPage from './pages/settings/email';` -`import AboutPage from './pages/about/index';` -`import AboutHome from './pages/about/about-home';` -`import PublicationsPage from './pages/about/publications-page';` -`import TeamPage from './pages/about/team-page';` -`import Acknowledgements from './pages/about/acknowledgements';` -`import Contact from './pages/about/contact';` -`import Faq from './pages/about/faq';` -`import Highlights from './pages/about/highlights';` -`import Donate from './pages/about/donate';` -`import GetInvolved from './pages/get-involved/index';` -`import CallForProjects from './pages/get-involved/call-for-projects';` -`import Education from './pages/get-involved/education';` -`import Volunteering from './pages/get-involved/volunteering';` -`import DevClassifierPage from './pages/dev-classifier';` -`import Resources from './pages/about/resources-page';` -`import DataExports from './pages/lab/data-exports';` -`import TalkTags from './talk/tags';` -`import MonorepoRoutes from './MonorepoRoutes';` - -# doesn't work. -ONE_UP_REDIRECT = createReactClass - componentDidMount: -> - givenPathSegments = @props.location.pathname.split '/' - givenPathSegments.pop() - pathOneLevelUp = givenPathSegments.join '/' - @props.router.replace - pathname: pathOneLevelUp, - query: @props.location.query - - render: -> - null - -redirectAboutPage = (nextState, replace, done) -> - try - { pathname } = nextState.location - newUrl = "https://fe-content-pages.zooniverse.org#{pathname}" - if window.location.hostname is 'www.zooniverse.org' - newUrl = "https://www.zooniverse.org#{pathname}" - window.location.replace(newUrl) - done() - catch error - done(error) - -ExternalRedirect = createReactClass - componentDidMount: -> - if @props.newUrl - window.location = @props.newUrl - render: -> - null - -module.exports = - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - } /> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TODO
} /> - - - - diff --git a/app/router.jsx b/app/router.jsx new file mode 100644 index 0000000000..6530c43345 --- /dev/null +++ b/app/router.jsx @@ -0,0 +1,311 @@ +import {IndexRoute, IndexRedirect, Route, Redirect} from 'react-router' +import React from 'react' + +import ProjectsPage from './pages/projects/index'; +import FilteredProjectsList from './pages/projects/filtered-projects-list'; +import CollectionPageWrapper from './collections/show'; +import CollectionSettings from './collections/settings'; +import CollectionCollaborators from './collections/collaborators'; +import ProjectHomePage from './pages/project/home'; +import AboutProject from './pages/project/about/index'; +import { AboutProjectResearch, AboutProjectEducation, AboutProjectFAQ, AboutProjectResults } from './pages/project/about/simple-pages'; +import AboutProjectTeam from './pages/project/about/team'; +import UserSettingsList from './pages/admin/user-settings-list'; +import UserSettings from './pages/admin/user-settings'; +import ProjectStatusList from './pages/admin/project-status-list'; +import ProjectStatus from './pages/admin/project-status'; +import Grantbot from './pages/admin/grantbot'; +import OrganizationStatusList from './pages/admin/organization-status-list'; +import OrganizationStatus from './pages/admin/organization-status'; +import EditProjectTalk from './pages/lab/talk'; +import EditMediaPage from './pages/lab/media'; +import UserProfilePage from './pages/profile/index'; +import NotificationsPage from './pages/notifications'; +import SubjectPageController from './subjects'; +import WorkflowsPage from './pages/lab/workflows'; +import WorkflowsContainer from './pages/lab/workflows-container'; +import WorkflowsList from './pages/lab/workflows'; +import SubjectSetsContainer from './pages/lab/subject-sets-container'; +import SubjectSetsList from './pages/lab/subject-sets'; +import TranslationsManager from './pages/lab/translations'; +import UnsubscribeFromEmails from './pages/unsubscribe'; +import HomePageRoot from './pages/home'; +import PrivacyPolicy from './pages/privacy-policy'; +import YouthPrivacyPolicy from './pages/youth-privacy-policy'; +import SecurityPolicy from './pages/security-policy'; +import AdminPage from './pages/admin'; +import SignInPage from './pages/sign-in'; +import NotFoundPage from './pages/not-found'; +import ResetPasswordPage from './pages/reset-password/reset-password'; +import Recents from './pages/profile/recents'; +import AccountInformationPage from './pages/settings/AccountInformationPage'; +import CustomiseProfile from './pages/settings/CustomiseProfile'; +import EmailSettingsPage from './pages/settings/email'; +import AboutPage from './pages/about/index'; +import AboutHome from './pages/about/about-home'; +import PublicationsPage from './pages/about/publications-page'; +import TeamPage from './pages/about/team-page'; +import Acknowledgements from './pages/about/acknowledgements'; +import Contact from './pages/about/contact'; +import Faq from './pages/about/faq'; +import Highlights from './pages/about/highlights'; +import Donate from './pages/about/donate'; +import GetInvolved from './pages/get-involved/index'; +import CallForProjects from './pages/get-involved/call-for-projects'; +import Education from './pages/get-involved/education'; +import Volunteering from './pages/get-involved/volunteering'; +import DevClassifierPage from './pages/dev-classifier'; +import Resources from './pages/about/resources-page'; +import DataExports from './pages/lab/data-exports'; +import TalkTags from './talk/tags'; +import MonorepoRoutes from './MonorepoRoutes'; + +// doesn't work. + +class ONE_UP_REDIRECT extends React.Component { + componentDidMount () { + let givenPathSegments = this.props.location.pathname.split('/') + givenPathSegments.pop() + const pathOneLevelUp = givenPathSegments.join('/') + this.props.router.replace(pathOneLevelUp, this.props.location.query) + } + + render () { + return null + } +} + +function redirectAboutPage (nextState, replace, done) { + try { + const { pathname } = nextState.location + const newUrl = `https://fe-content-pages.zooniverse.org${pathname}` + if (window.location.hostname === 'www.zooniverse.org') { + newUrl = `https://www.zooniverse.org${pathname}` + } + window.location.replace(newUrl) + done() + } catch (error) { + done(error) + } +} + +class ExternalRedirect extends React.Component { + componentDidMount () { + if (this.props.newUrl) { + window.location = this.props.newUrl + } + } + + render () { + return null + } +} + +export const routes = ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + } /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TODO
} /> + + + + +)