import { h, Component } from 'preact'; // import PropTypes from 'prop-types'; import { BrowserRouter, Route, Switch, Redirect, withRouter } from 'react-router-dom' import { bindActionCreators } from 'redux'; import { connect } from 'react-redux'; import { history } from '../store' import * as authActions from './auth.actions'; import Login from './login.component'; import Logout from './logout.component'; import Signup from './signup.component'; import { randint } from '../util/math' class AuthRouter extends Component { render(){ return (
{ this.props.actions.setReturnTo(props.location.pathname) return ( ) }} />
) } componentDidMount(){ document.querySelector('.diamond').style.backgroundImage = 'linear-gradient(' + (randint(40)-5) + 'deg, #fde, #ffe)' } } class AuthGate extends Component { render(){ if (!this.props.auth.initialized) { console.log('loading auth') return
Loading
} if (this.props.auth.isAuthenticated) { console.log('authenticated...') if (this.props.auth.returnTo) { let { returnTo } = this.props.auth if (!returnTo || returnTo.match(/(login|logout|signup)/i)) { returnTo = '/' } console.log('history.push', returnTo) this.props.actions.setReturnTo(null) history.push(returnTo) return
Launching app
} console.log('rendering as normal') return
{this.props.children}
} return } componentDidMount(){ this.props.actions.checkin() } } const mapStateToProps = (state) => ({ auth: state.auth }); const mapDispatchToProps = (dispatch) => ({ actions: bindActionCreators(authActions, dispatch) }); export default connect(mapStateToProps, mapDispatchToProps)(AuthGate);