// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved. // See License.txt for license information. var utils = require('../utils/utils.jsx'); var client = require('../utils/client.jsx'); var asyncClient = require('../utils/async_client.jsx'); var UserStore = require('../stores/user_store.jsx'); module.exports = React.createClass({ handleSubmit: function(e) { e.preventDefault(); var channel = {}; var state = { server_error: "" }; channel.display_name = this.refs.display_name.getDOMNode().value.trim(); if (!channel.display_name) { state.display_name_error = "This field is required"; state.inValid = true; } else if (channel.display_name.length > 22) { state.display_name_error = "This field must be less than 22 characters"; state.inValid = true; } else { state.display_name_error = ""; } channel.name = this.refs.channel_name.getDOMNode().value.trim(); if (!channel.name) { state.name_error = "This field is required"; state.inValid = true; } else if(channel.name.length > 22){ state.name_error = "This field must be less than 22 characters"; state.inValid = true; } else { var cleaned_name = utils.cleanUpUrlable(channel.name); if (cleaned_name != channel.name) { state.name_error = "Must be lowercase alphanumeric characters, allowing '-' but not starting or ending with '-'"; state.inValid = true; } else { state.name_error = ""; } } this.setState(state); if (state.inValid) return; var cu = UserStore.getCurrentUser(); channel.team_id = cu.team_id; channel.description = this.refs.channel_desc.getDOMNode().value.trim(); channel.type = this.state.channel_type; var self = this; client.createChannel(channel, function(data) { this.refs.display_name.getDOMNode().value = ""; this.refs.channel_name.getDOMNode().value = ""; this.refs.channel_desc.getDOMNode().value = ""; $(self.refs.modal.getDOMNode()).modal('hide'); window.location.href = "/channels/" + channel.name; asyncClient.getChannels(true); }.bind(this), function(err) { state.server_error = err.message; state.inValid = true; this.setState(state); }.bind(this) ); }, displayNameKeyUp: function(e) { var display_name = this.refs.display_name.getDOMNode().value.trim(); var channel_name = utils.cleanUpUrlable(display_name); this.refs.channel_name.getDOMNode().value = channel_name; }, componentDidMount: function() { var self = this; $(this.refs.modal.getDOMNode()).on('show.bs.modal', function(e) { var button = e.relatedTarget; self.setState({ channel_type: $(button).attr('data-channeltype') }); }); }, getInitialState: function() { return { channel_type: "" }; }, render: function() { var display_name_error = this.state.display_name_error ? : null; var name_error = this.state.name_error ? : null; var server_error = this.state.server_error ?
: null; return ( ); } });