diff --git a/app/containers/settings.js b/app/containers/settings.js index e535fe9..3b3f6d1 100644 --- a/app/containers/settings.js +++ b/app/containers/settings.js @@ -1,14 +1,46 @@ // @flow - +import eres from 'eres'; import { connect } from 'react-redux'; import { SettingsView } from '../views/settings'; -import type { AppState } from '../types/app-state'; +import { loadAddressesSuccess, loadAddressesError } from '../redux/modules/receive'; -const mapStateToProps = ({ walletSummary }: AppState) => ({ - addresses: walletSummary.addresses, +import rpc from '../../services/api'; + +import type { AppState } from '../types/app-state'; +import type { Dispatch } from '../types/redux'; + +export type MapStateToProps = {| + addresses: string[], +|}; + +const mapStateToProps = ({ receive }: AppState): MapStateToProps => ({ + addresses: receive.addresses, +}); + +export type MapDispatchToProps = {| + loadAddresses: () => Promise, +|}; + +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!' })); + + dispatch( + loadAddressesSuccess({ + addresses: [...zAddresses, ...transparentAddresses], + }), + ); + }, }); // $FlowFixMe -export const SettingsContainer = connect(mapStateToProps)(SettingsView); +export const SettingsContainer = connect( + mapStateToProps, + mapDispatchToProps, +)(SettingsView); diff --git a/app/views/settings.js b/app/views/settings.js index adfb29b..2cf19d0 100644 --- a/app/views/settings.js +++ b/app/views/settings.js @@ -22,6 +22,7 @@ import { SelectComponent } from '../components/select'; import rpc from '../../services/api'; import { DARK, LIGHT } from '../constants/themes'; import electronStore from '../../config/electron-store'; +import type { MapDispatchToProps, MapStateToProps } from '../containers/settings'; const HOME_DIR = electron.remote.app.getPath('home'); @@ -79,9 +80,8 @@ type Key = { key: string, }; -type Props = { - addresses: string[], -}; +type Props = MapDispatchToProps & MapStateToProps; + type State = { viewKeys: Key[], privateKeys: Key[], @@ -105,6 +105,12 @@ export class SettingsView extends PureComponent { error: null, }; + componentDidMount() { + const { loadAddresses } = this.props; + + loadAddresses(); + } + exportViewKeys = () => { const { addresses } = this.props;