import React, { PropTypes } from 'react' import { connect } from 'react-redux' import { hashHistory, Link } from 'react-router' import { bindActionCreators } from 'redux' import FontAwesome from 'react-fontawesome' import ConfirmationButton from '../components/Fields/ConfirmationButton' import PusherConnectionList from '../components/PusherConnectionList' import Header from '../components/Header' import Parallax from '../components/Parallax' import Icon from '../components/Icon' import Thumbnail from '../components/Thumbnail' import URILink from '../components/URILink' import Services from '../components/Services' import * as coreActions from '../services/core/actions' import * as uiActions from '../services/ui/actions' import * as pusherActions from '../services/pusher/actions' import * as mopidyActions from '../services/mopidy/actions' import * as lastfmActions from '../services/lastfm/actions' import * as spotifyActions from '../services/spotify/actions' class Settings extends React.Component { constructor(props){ super(props); this.state = { mopidy_host: this.props.mopidy.host, mopidy_port: this.props.mopidy.port, mopidy_ssl: this.props.mopidy.ssl, pusher_username: this.props.pusher.username, input_in_focus: null } } componentWillReceiveProps(newProps){ var changed = false var state = this.state if (newProps.pusher.username != this.state.pusher_username && this.state.input_in_focus != 'pusher_username'){ state.pusher_username = newProps.pusher.username changed = true } if (changed){ this.setState(state) } } resetAllSettings(){ localStorage.clear(); window.location = '#' window.location.reload(true) return false; } setConfig(e){ this.setState({input_in_focus: null}); e.preventDefault(); this.props.mopidyActions.setConfig({ host: this.state.mopidy_host, port: this.state.mopidy_port, ssl: this.state.mopidy_ssl }); window.location.reload(true); return false; } handleBlur(name, value){ this.setState({input_in_focus: null}) var data = {} data[name] = value this.props.coreActions.set(data) } handleUsernameChange(username){ this.setState({pusher_username: username.replace(/\W/g, '')}) } handleUsernameBlur(e){ this.setState({input_in_focus: null}) this.props.pusherActions.setUsername(this.state.pusher_username) } renderApplyButton(){ if (this.props.mopidy.host == this.state.mopidy_host && this.props.mopidy.port == this.state.mopidy_port && this.props.mopidy.ssl == this.state.mopidy_ssl){ return null; } return (