You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
137 lines
3.1 KiB
137 lines
3.1 KiB
import React from 'react';
|
|
import { connect } from 'react-redux';
|
|
import {
|
|
dashboardChangeSection,
|
|
toggleAddcoinModal,
|
|
stopInterval,
|
|
startInterval,
|
|
displayImportKeyModal,
|
|
shepherdElectrumLock,
|
|
shepherdElectrumLogout,
|
|
getDexCoins,
|
|
activeHandle,
|
|
} from '../../../actions/actionCreators';
|
|
import Store from '../../../store';
|
|
import Config from '../../../config';
|
|
import { checkAC } from '../../addcoin/payload';
|
|
|
|
import NavbarRender from './navbar.render';
|
|
|
|
class Navbar extends React.Component {
|
|
constructor() {
|
|
super();
|
|
this.state = {
|
|
openDropMenu: false,
|
|
isExperimentalOn: false,
|
|
};
|
|
this.openDropMenu = this.openDropMenu.bind(this);
|
|
this.handleClickOutside = this.handleClickOutside.bind(this);
|
|
this._checkAC = this._checkAC.bind(this);
|
|
this.spvLock = this.spvLock.bind(this);
|
|
this.spvLogout = this.spvLogout.bind(this);
|
|
}
|
|
|
|
spvLock() {
|
|
shepherdElectrumLock()
|
|
.then((res) => {
|
|
Store.dispatch(getDexCoins());
|
|
Store.dispatch(activeHandle());
|
|
});
|
|
}
|
|
|
|
spvLogout() {
|
|
shepherdElectrumLogout()
|
|
.then((res) => {
|
|
Store.dispatch(getDexCoins());
|
|
Store.dispatch(activeHandle());
|
|
});
|
|
}
|
|
|
|
componentWillMount() {
|
|
document.addEventListener(
|
|
'click',
|
|
this.handleClickOutside,
|
|
false
|
|
);
|
|
|
|
let appConfig;
|
|
|
|
try {
|
|
appConfig = window.require('electron').remote.getCurrentWindow().appConfig;
|
|
} catch (e) {}
|
|
|
|
this.setState({
|
|
isExperimentalOn: appConfig.experimentalFeatures,
|
|
});
|
|
}
|
|
|
|
componentWillUnmount() {
|
|
document.removeEventListener(
|
|
'click',
|
|
this.handleClickOutside,
|
|
false
|
|
);
|
|
}
|
|
|
|
handleClickOutside(e) {
|
|
if (e.srcElement.className !== 'dropdown-menu' &&
|
|
e.srcElement.alt !== 'iguana profile pic' &&
|
|
(e.srcElement.offsetParent && e.srcElement.offsetParent.className !== 'avatar avatar-online') &&
|
|
e.srcElement.className.indexOf('navbar-avatar') === -1 &&
|
|
(e.path && e.path[4] && e.path[4].className.indexOf('dropdown-menu') === -1)) {
|
|
this.setState({
|
|
openDropMenu: false,
|
|
});
|
|
}
|
|
}
|
|
|
|
openImportKeyModal() {
|
|
Store.dispatch(displayImportKeyModal(true));
|
|
}
|
|
|
|
openDropMenu() {
|
|
this.setState(Object.assign({}, this.state, {
|
|
openDropMenu: !this.state.openDropMenu,
|
|
}));
|
|
}
|
|
|
|
toggleAddCoinModal() {
|
|
Store.dispatch(toggleAddcoinModal(true, false));
|
|
}
|
|
|
|
dashboardChangeSection(sectionName) {
|
|
Store.dispatch(dashboardChangeSection(sectionName));
|
|
}
|
|
|
|
_checkAC() {
|
|
return checkAC(this.props.ActiveCoin.coin);
|
|
}
|
|
|
|
isSectionActive(section) {
|
|
return this.props.Dashboard.activeSection === section;
|
|
}
|
|
|
|
render() {
|
|
return NavbarRender.call(this);
|
|
}
|
|
}
|
|
|
|
const mapStateToProps = (state) => {
|
|
return {
|
|
ActiveCoin: {
|
|
mode: state.ActiveCoin.mode,
|
|
coin: state.ActiveCoin.coin,
|
|
},
|
|
Dashboard: {
|
|
activeSection: state.Dashboard.activeSection,
|
|
},
|
|
Interval: {
|
|
interval: state.Interval.interval,
|
|
},
|
|
Main: {
|
|
isLoggedIn: state.Main.isLoggedIn,
|
|
},
|
|
};
|
|
};
|
|
|
|
export default connect(mapStateToProps)(Navbar);
|
|
|