// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved. // See License.txt for license information. import SettingItemMax from '../setting_item_max.jsx'; import Client from 'utils/web_client.jsx'; import * as I18n from 'i18n/i18n.jsx'; import * as GlobalActions from 'action_creators/global_actions.jsx'; import {FormattedMessage} from 'react-intl'; import React from 'react'; export default class ManageLanguage extends React.Component { constructor(props) { super(props); this.setupInitialState = this.setupInitialState.bind(this); this.setLanguage = this.setLanguage.bind(this); this.changeLanguage = this.changeLanguage.bind(this); this.submitUser = this.submitUser.bind(this); this.state = this.setupInitialState(props); } setupInitialState(props) { var user = props.user; return { locale: user.locale }; } setLanguage(e) { this.setState({locale: e.target.value}); } changeLanguage(e) { e.preventDefault(); var user = this.props.user; var locale = this.state.locale; user.locale = locale; this.submitUser(user); } submitUser(user) { Client.updateUser(user, () => { GlobalActions.newLocalizationSelected(user.locale); }, (err) => { let serverError; if (err.message) { serverError = err.message; } else { serverError = err; } this.setState({serverError}); } ); } render() { let serverError; if (this.state.serverError) { serverError = ; } const options = []; const languages = I18n.getLanguages(); for (const key in languages) { if (languages.hasOwnProperty(key)) { const lang = languages[key]; options.push( ); } } const input = (

{serverError}
); return ( } width='medium' submit={this.changeLanguage} inputs={[input]} updateSection={this.props.updateSection} /> ); } } ManageLanguage.propTypes = { user: React.PropTypes.object.isRequired, updateSection: React.PropTypes.func.isRequired };