swindon 0.7.8

An HTTP edge (frontend) server with smart websockets support
// src/routes.js
import React from 'react'
import { Router, Route, IndexRoute } from 'react-router'

import * as websocket from './websocket'
import Login from './components/Login'
import Chat from './components/Chat'
import * as room from './components/Room'
import * as select from './components/SelectRoom'
import {get_login} from './login'


function check_login(route, replace) {
  let {location: {pathname}} = route;
  if(pathname !== '/login' && !get_login()) {
    replace('/login')
  }
}

const Routes = ({history, ...props}) => (
  <Router history={history}>
    <Route path="/" onEnter={check_login}>
      <Route path="/login" component={Login} />
      <Route component={Chat}
            onEnter={websocket.start} onLeave={websocket.stop}>
        <IndexRoute component={select.Main} />
        <Route path=":roomName"
                    onEnter={websocket.enter_room}
                    onLeave={websocket.leave_room}
                    components={{ title: room.Title, children: room.Main }} />
      </Route>
    </Route>
  </Router>
)

export default Routes