import { Route, IndexRoute } from 'react-router'; import React from 'react'; import PropTypes from 'prop-types'; import MediaQuery from 'react-responsive'; import App from './modules/App/App'; import IDEView from './modules/IDE/pages/IDEView'; import MobileIDEView from './modules/IDE/pages/MobileIDEView'; import MobileSketchView from './modules/Mobile/MobileSketchView'; import MobilePreferences from './modules/Mobile/MobilePreferences'; import FullView from './modules/IDE/pages/FullView'; import LoginView from './modules/User/pages/LoginView'; import SignupView from './modules/User/pages/SignupView'; import ResetPasswordView from './modules/User/pages/ResetPasswordView'; import EmailVerificationView from './modules/User/pages/EmailVerificationView'; import NewPasswordView from './modules/User/pages/NewPasswordView'; import AccountView from './modules/User/pages/AccountView'; import CollectionView from './modules/User/pages/CollectionView'; import DashboardView from './modules/User/pages/DashboardView'; import createRedirectWithUsername from './components/createRedirectWithUsername'; import MobileDashboardView from './modules/Mobile/MobileDashboardView'; import { getUser } from './modules/User/actions'; import { stopSketch } from './modules/IDE/actions/ide'; import { userIsAuthenticated, userIsNotAuthenticated, userIsAuthorized } from './utils/auth'; import ResponsiveForm from './modules/User/components/ResponsiveForm'; const checkAuth = (store) => { store.dispatch(getUser()); }; const mobileEnabled = () => (window.process.env.MOBILE_ENABLED === true); /** createMobileFirst: Receives the store, and creates a function that chooses between two components, * aimed at mobile and desktop resolutions, respectively. * The created function returns a Component (props => jsx) */ const createMobileFirst = store => (MobileComponent, Fallback) => props => ( {matches => ((matches || (store && store.getState().editorAccessibility.forceDesktop) || (!mobileEnabled())) ? : )} ); const responsiveForm = DesktopComponent => props => ( ); // TODO: This short-circuit seems unnecessary - using the mobile navigator (future) should prevent this from being called const onRouteChange = (store) => { const path = window.location.pathname; if (path.includes('preview')) return; store.dispatch(stopSketch()); }; const routes = (store) => { const mobileFirst = createMobileFirst(store); return ( { onRouteChange(store); }}> {/* Mobile-only Routes */} ); }; export default routes;