ducky/web

Paddy 2015-05-31 Parent:b9d0efb44eaa Child:21f80f56cda9

6:a641906b8267 Go to Latest

ducky/web/src/router.jsx

Enable catch-all in our ValidationError component. We're doing this an ugly, hacky way. But it works, and right now, that's what counts. To match our params/fields/headers properties on the ValidationError component, we're going to add the notParams/notFields/notHeaders properties--they match any error _not_ targeting those params/fields/headers. Basically, "any error that wouldn't be caught by these filters". Which is an ugly, but workable, solution for a catch-all ValidationError--just tell it to catch anything but the params/fields/headers that are being handled by the other ValidationErrors. Our implementation of this in the RegisterPage component validates (ha!) that it's at least workable model, if not overly pretty. Also, I anticipate some human error bugs in the future, where one of the field-specific ValidationErrors gets updated and the catch-all ValidationError does not. But whatever. For now, this is Good Enoughâ„¢.

History
1 import Router from 'ampersand-router'
2 import React from 'react'
3 import MessagePage from './pages/message'
4 import OnboardingPage from './pages/onboard'
5 import RegisterPage from './pages/register'
6 import PaymentMethodPage from './pages/payment'
7 import LoginPage from './pages/login'
9 export default Router.extend({
10 routes: {
11 '': 'home',
12 'register': 'register',
13 'register/payment': 'payment',
14 'login': 'login',
15 'logout': 'logout',
16 '*404': 'fourOhFour'
17 },
19 home () {
20 React.render(<OnboardingPage/>, document.body)
21 },
23 register () {
24 React.render(<RegisterPage/>, document.body)
25 },
27 payment () {
28 React.render(<PaymentMethodPage/>, document.body)
29 },
31 login () {
32 React.render(<LoginPage/>, document.body)
33 },
35 logout () {
36 window.localStorage.clear()
37 window.location = '/'
38 },
40 fourOhFour () {
41 this.renderPage(MessagePage, {title: '404', message: 'Oops. Page not found.'})
42 }
43 })