zepio/app/containers/settings.js

67 lines
1.9 KiB
JavaScript
Raw Normal View History

2019-01-12 10:01:16 -08:00
// @flow
2019-03-20 06:04:34 -07:00
import eres from 'eres';
2019-01-12 10:01:16 -08:00
import { connect } from 'react-redux';
import electron from 'electron'; // eslint-disable-line
2019-01-12 10:01:16 -08:00
import electronStore from '../../config/electron-store';
import { ZCASH_NETWORK } from '../constants/zcash-network';
2019-01-12 10:01:16 -08:00
import { SettingsView } from '../views/settings';
import { loadAddressesSuccess, loadAddressesError } from '../redux/modules/receive';
import rpc from '../../services/api';
2019-01-12 10:01:16 -08:00
import type { AppState } from '../types/app-state';
import type { Dispatch } from '../types/redux';
export type MapStateToProps = {|
addresses: { address: string, balance: number }[],
zcashNetwork: string,
embeddedDaemon: boolean,
|};
const mapStateToProps = ({ receive, app }: AppState): MapStateToProps => ({
addresses: receive.addresses,
zcashNetwork: app.zcashNetwork,
embeddedDaemon: app.embeddedDaemon,
});
export type MapDispatchToProps = {|
loadAddresses: () => Promise<void>,
updateZcashNetwork: (newNetwork: string) => void,
|};
const mapDispatchToProps = (dispatch: Dispatch): MapDispatchToProps => ({
loadAddresses: async () => {
const [zAddressesErr, zAddresses] = await eres(rpc.z_listaddresses());
const [tAddressesErr, transparentAddresses] = await eres(rpc.getaddressesbyaccount(''));
if (zAddressesErr || tAddressesErr) return dispatch(loadAddressesError({ error: 'Something went wrong!' }));
2019-01-12 10:01:16 -08:00
dispatch(
loadAddressesSuccess({
addresses: [...zAddresses, ...transparentAddresses].map(add => ({
address: add,
balance: 0,
})),
}),
);
},
updateZcashNetwork: (newNetwork) => {
electronStore.set(ZCASH_NETWORK, newNetwork);
electron.remote.app.relaunch({
args: Array.from(new Set(electron.remote.process.argv.slice(1).concat(['--relaunch']))),
});
electron.remote.app.quit();
},
2019-01-12 10:01:16 -08:00
});
// $FlowFixMe
export const SettingsContainer = connect(
mapStateToProps,
mapDispatchToProps,
)(SettingsView);