Something went wrong on our end
Settings.jsx 4.11 KiB
import React from 'react';
import { connect } from 'react-redux';
import tt from 'counterpart';
import * as appActions from 'app/redux/AppReducer';
import o2j from 'shared/clash/object2json';
import * as hive from '@hiveio/hive-js';
import Cookies from 'universal-cookie';
class Settings extends React.Component {
handleLanguageChange = (event) => {
const locale = event.target.value;
const userPreferences = { ...this.props.user_preferences, locale };
this.props.setUserPreferences(userPreferences);
};
getPreferredApiEndpoint = () => {
let preferred_api_endpoint = $STM_Config.hived_connection_client;
let cookies = new Cookies();
let cookie_endpoint = cookies.get('user_preferred_api_endpoint');
return cookie_endpoint === null || cookie_endpoint === undefined
? 'https://api.hive.blog'
: cookie_endpoint;
};
generateAPIEndpointOptions = () => {
const endpoints = hive.config.get('alternative_api_endpoints');
if (endpoints === null || endpoints === undefined) {
return null;
}
const preferred_api_endpoint = this.getPreferredApiEndpoint();
const entries = [];
for (let ei = 0; ei < endpoints.length; ei += 1) {
const endpoint = endpoints[ei];
//this one is always present even if the api config call fails
if (endpoint !== preferred_api_endpoint) {
const entry = (
<option value={endpoint} key={endpoint}>
{endpoint}
</option>
);
entries.push(entry);
}
}
return entries;
};
handlePreferredAPIEndpointChange = (event) => {
let cookies = new Cookies();
cookies.set('user_preferred_api_endpoint', event.target.value);
hive.api.setOptions({ url: event.target.value });
};
render() {
const { user_preferences } = this.props;
const preferred_api_endpoint = this.getPreferredApiEndpoint();
return (
<div className="Settings">
<div className="row">
<div className="small-12 medium-6 large-4 columns">
<h4>{tt('settings_jsx.preferences')}</h4>
{tt('g.choose_language')}
<select
defaultValue={user_preferences.locale}
onChange={this.handleLanguageChange}
>
<option value="en">English</option>
<option value="es">Spanish Español</option>
<option value="ru">Russian русский</option>
<option value="fr">French français</option>
<option value="it">Italian italiano</option>
<option value="ja">Japanese 日本語</option>
<option value="pl">Polish</option>
<option value="zh">Chinese 简体中文</option>
</select>
{tt('g.choose_preferred_endpoint')}
<select
defaultValue={preferred_api_endpoint}
onChange={this.handlePreferredAPIEndpointChange}
>
<option value={preferred_api_endpoint}>
{preferred_api_endpoint}
</option>
{this.generateAPIEndpointOptions()}
</select>
</div>
</div>
</div>
);
}
}
export default connect(
// mapStateToProps
(state, ownProps) => {
const user_preferences = state.app.get('user_preferences').toJS();
return {
user_preferences,
...ownProps,
};
},
// mapDispatchToProps
(dispatch) => ({
setUserPreferences: (payload) => {
dispatch(appActions.setUserPreferences(payload));
},
})
)(Settings);