2019-01-12 10:01:16 -08:00
|
|
|
// @flow
|
2019-03-20 06:04:34 -07:00
|
|
|
|
2019-02-18 18:10:42 -08:00
|
|
|
import eres from 'eres';
|
2019-01-12 10:01:16 -08:00
|
|
|
import { connect } from 'react-redux';
|
2019-03-16 20:25:16 -07:00
|
|
|
import electron from 'electron'; // eslint-disable-line
|
2019-01-12 10:01:16 -08:00
|
|
|
|
2019-03-16 20:25:16 -07: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';
|
|
|
|
|
2019-02-18 18:10:42 -08:00
|
|
|
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';
|
2019-02-18 18:10:42 -08:00
|
|
|
import type { Dispatch } from '../types/redux';
|
|
|
|
|
|
|
|
export type MapStateToProps = {|
|
2019-03-16 20:25:16 -07:00
|
|
|
addresses: { address: string, balance: number }[],
|
|
|
|
zcashNetwork: string,
|
|
|
|
embeddedDaemon: boolean,
|
2019-02-18 18:10:42 -08:00
|
|
|
|};
|
|
|
|
|
2019-03-16 20:25:16 -07:00
|
|
|
const mapStateToProps = ({ receive, app }: AppState): MapStateToProps => ({
|
2019-02-18 18:10:42 -08:00
|
|
|
addresses: receive.addresses,
|
2019-03-16 20:25:16 -07:00
|
|
|
zcashNetwork: app.zcashNetwork,
|
|
|
|
embeddedDaemon: app.embeddedDaemon,
|
2019-02-18 18:10:42 -08:00
|
|
|
});
|
|
|
|
|
|
|
|
export type MapDispatchToProps = {|
|
|
|
|
loadAddresses: () => Promise<void>,
|
2019-03-16 20:25:16 -07:00
|
|
|
updateZcashNetwork: (newNetwork: string) => void,
|
2019-02-18 18:10:42 -08:00
|
|
|
|};
|
|
|
|
|
|
|
|
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
|
|
|
|
2019-02-18 18:10:42 -08:00
|
|
|
dispatch(
|
|
|
|
loadAddressesSuccess({
|
2019-03-16 20:25:16 -07:00
|
|
|
addresses: [...zAddresses, ...transparentAddresses].map(add => ({
|
|
|
|
address: add,
|
|
|
|
balance: 0,
|
|
|
|
})),
|
2019-02-18 18:10:42 -08:00
|
|
|
}),
|
|
|
|
);
|
|
|
|
},
|
2019-03-16 20:25:16 -07:00
|
|
|
updateZcashNetwork: (newNetwork) => {
|
|
|
|
electronStore.set(ZCASH_NETWORK, newNetwork);
|
|
|
|
|
2019-03-24 11:57:13 -07:00
|
|
|
electron.remote.app.relaunch({
|
|
|
|
args: Array.from(new Set(electron.remote.process.argv.slice(1).concat(['--relaunch']))),
|
|
|
|
});
|
2019-03-16 20:25:16 -07:00
|
|
|
electron.remote.app.quit();
|
|
|
|
},
|
2019-01-12 10:01:16 -08:00
|
|
|
});
|
|
|
|
|
2019-01-21 16:08:35 -08:00
|
|
|
// $FlowFixMe
|
2019-02-18 18:10:42 -08:00
|
|
|
export const SettingsContainer = connect(
|
|
|
|
mapStateToProps,
|
|
|
|
mapDispatchToProps,
|
|
|
|
)(SettingsView);
|