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 SpotifyAuthenticationFrame from '../components/SpotifyAuthenticationFrame' import LastfmAuthenticationFrame from '../components/LastfmAuthenticationFrame' import ConfirmationButton from '../components/ConfirmationButton' import PusherConnectionList from '../components/PusherConnectionList' import URISchemesList from '../components/URISchemesList' import VersionManager from '../components/VersionManager' 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 * 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 = { country: this.props.core.country, locale: this.props.core.locale, mopidy_host: this.props.mopidy.host, mopidy_port: this.props.mopidy.port, pusher_username: this.props.pusher.username, input_in_focus: null } } componentWillReceiveProps(newProps){ var changed = false var state = this.state if (newProps.core.country != this.state.country && this.state.input_in_focus != 'country'){ state.country = newProps.core.country changed = true } if (newProps.core.locale != this.state.locale && this.state.input_in_focus != 'locale'){ state.locale = newProps.core.locale changed = true } 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; } setMopidyConfig(e){ this.setState({input_in_focus: null}) e.preventDefault(); this.props.mopidyActions.setConfig({ host: this.state.mopidy_host, port: this.state.mopidy_port }); 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) return null return (