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