Merge pull request #10181 from BerkeleyTrue/fix/user-sensitive-routes

Fix(routes): user sensitive routes redirect to map
pull/10195/head
Mrugesh Mohapatra 2016-08-13 21:27:45 +05:30 committed by GitHub
commit 914e9f4b33
5 changed files with 82 additions and 56 deletions

View File

@ -5,7 +5,7 @@ import { compose, createStore, applyMiddleware } from 'redux';
// main app
import App from './App.jsx';
// app routes
import childRoutes from './routes';
import createChildRoute from './routes';
// redux
import { createEpic } from 'redux-epic';
@ -17,8 +17,6 @@ import servicesCreator from '../utils/services-creator';
const createRouteProps = Observable.fromNodeCallback(match);
const routes = { components: App, ...childRoutes };
//
// createApp(settings: {
// location?: Location|String,
@ -75,7 +73,12 @@ export default function createApp({
// sync history client side with store.
// server side this is an identity function and history is undefined
history = syncHistoryWithStore(history, store, syncOptions);
const routes = {
components: App,
...createChildRoute({
getState() { return store.getState(); }
})
};
// createRouteProps({
// redirect: LocationDescriptor,
// history: History,

View File

@ -1,7 +1,8 @@
import Show from './components/Show.jsx';
import Map from './components/map/Map.jsx';
import ShowMap from './components/map/Map.jsx';
export const challenges = {
export function challengesRoute() {
return {
path: 'challenges(/:dashedName)',
component: Show,
onEnter(nextState, replace) {
@ -11,13 +12,18 @@ export const challenges = {
}
}
};
}
export const modernChallenges = {
export function modernChallengesRoute() {
return {
path: 'challenges/:block/:dashedName',
component: Show
};
}
export const map = {
export function mapRoute() {
return {
path: 'map',
component: Map
component: ShowMap
};
}

View File

@ -1,9 +1,14 @@
import { modernChallenges, map, challenges } from './challenges';
import {
modernChallengesRoute,
mapRoute,
challengesRoute
} from './challenges';
import NotFound from '../components/NotFound/index.jsx';
import { addLang } from '../utils/lang';
import settings from './settings';
import settingsRoute from './settings';
export default {
export default function createChildRoute(deps) {
return {
path: '/:lang',
indexRoute: {
onEnter(nextState, replace) {
@ -13,13 +18,14 @@ export default {
}
},
childRoutes: [
challenges,
modernChallenges,
map,
settings,
challengesRoute(deps),
modernChallengesRoute(deps),
mapRoute(deps),
settingsRoute(deps),
{
path: '*',
component: NotFound
}
]
};
}

View File

@ -1,10 +1,19 @@
import Settings from './components/Settings.jsx';
import updateEmail from './routes/update-email';
import updateEmailRoute from './routes/update-email';
export default {
export default function settingsRoute(deps) {
const { getState } = deps;
return {
path: 'settings',
component: Settings,
onEnter(nextState, replace) {
const { app: { user } } = getState();
if (!user) {
replace('/map');
}
},
childRoutes: [
updateEmail
updateEmailRoute(deps)
]
};
}

View File

@ -1,6 +1,8 @@
import UpdateEmail from './Update-Email.jsx';
export default {
export default function updateEmailRoute() {
return {
path: 'update-email',
component: UpdateEmail
};
}