var React = require('react/addons') var ReactRouter = require('react-router') var Link = ReactRouter.Link var AuthActions = require('../Actions/AuthActions') var AuthStore = require('../Stores/AuthStore') var OnlyGuest = require('../Mixins/OnlyGuest') module.exports = React.createClass({ mixins: [React.addons.LinkedStateMixin, ReactRouter.Navigation, OnlyGuest], getInitialState: function () { return { email: '', password: '', name: '', profileName: '', connectionFailed: false, emailConflicted: false, nameConflicted: false, validationFailed: false, isSending: false } }, componentDidMount: function () { this.unsubscribe = AuthStore.listen(this.onListen) }, componentWillUnmount: function () { this.unsubscribe() }, onListen: function (res) { if (res.status === 'failedToRegister') { if (res.data.status === 409) { // Confliction var emailConflicted = res.data.body.errors[0].path === 'email' var nameConflicted = res.data.body.errors[0].path === 'name' this.setState({ connectionFailed: false, emailConflicted: emailConflicted, nameConflicted: nameConflicted, validationFailed: false, isSending: false }) return } else if (res.data.status === 422) { this.setState({ connectionFailed: false, emailConflicted: false, nameConflicted: false, validationFailed: { errors: res.data.body.errors.map(function (error) { return error.path }) }, isSending: false }) return } // Connection Failed or Whatever this.setState({ connectionFailed: true, emailConflicted: false, nameConflicted: false, validationFailed: false, isSending: false }) return } }, handleSubmit: function (e) { this.setState({ connectionFailed: false, emailConflicted: false, nameConflicted: false, validationFailed: false, isSending: true }, function () { AuthActions.register({ email: this.state.email, password: this.state.password, name: this.state.name, profileName: this.state.profileName }) }) e.preventDefault() }, render: function () { return (

Connect with


or
{this.state.isSending ? (

Signing up...

) : null} {this.state.connectionFailed ? (

Please try again.

) : null} {this.state.emailConflicted ? (

E-mail already exists.

) : null} {this.state.nameConflicted ? (

Username already exists.

) : null} {this.state.validationFailed ? (

Please fill every field correctly: {this.state.validationFailed.errors.join(', ')}

) : null}

会員登録することで、当サイトの利用規約及びCookieの使用を含むデータに関するポリシーに同意するものとします。

) } })