clean up Generate Wallet actions to not use boilerplate

This commit is contained in:
Daniel Ternyak 2017-06-19 22:15:38 -05:00
parent 227abd5ff6
commit c46ed8f6ed
6 changed files with 112 additions and 132 deletions

View File

@ -1,21 +1,22 @@
export const GENERATE_WALLET_SHOW_PASSWORD = 'GENERATE_WALLET_SHOW_PASSWORD';
export const GENERATE_WALLET_FILE = 'GENERATE_WALLET_FILE'
export const GENERATE_WALLET_HAS_DOWNLOADED_FILE = 'GENERATE_WALLET_HAS_DOWNLOADED_FILE'
export const GENERATE_WALLET_CONTINUE_TO_PAPER = 'GENERATE_WALLET_CONTINUE_TO_PAPER'
import {
GENERATE_WALLET_CONTINUE_TO_PAPER,
GENERATE_WALLET_FILE,
GENERATE_WALLET_HAS_DOWNLOADED_FILE,
GENERATE_WALLET_SHOW_PASSWORD
} from 'actions/generateWalletConstants';
export const SHOW_GENERATE_WALLET_PASSWORD_ACTION = () => {
return { type: GENERATE_WALLET_SHOW_PASSWORD };
};
export const SHOW_GENERATE_WALLET_PASSWORD_ACTION = () => Object ({
type: GENERATE_WALLET_SHOW_PASSWORD
})
export const GENERATE_WALLET_FILE_ACTION = () => {
return { type: GENERATE_WALLET_FILE };
};
export const GENERATE_WALLET_FILE_ACTION = () => Object ({
type: GENERATE_WALLET_FILE
})
export const GENERATE_WALLET_HAS_DOWNLOADED_FILE_ACTION = () => {
return { type: GENERATE_WALLET_HAS_DOWNLOADED_FILE };
};
export const GENERATE_WALLET_HAS_DOWNLOADED_FILE_ACTION = () => Object ({
type: GENERATE_WALLET_HAS_DOWNLOADED_FILE
})
export const GENERATE_WALLET_CONTINUE_TO_PAPER_ACTION = () => Object ({
type: GENERATE_WALLET_CONTINUE_TO_PAPER
})
export const GENERATE_WALLET_CONTINUE_TO_PAPER_ACTION = () => {
return { type: GENERATE_WALLET_CONTINUE_TO_PAPER };
};

View File

@ -0,0 +1,6 @@
export const GENERATE_WALLET_SHOW_PASSWORD = 'GENERATE_WALLET_SHOW_PASSWORD';
export const GENERATE_WALLET_FILE = 'GENERATE_WALLET_FILE';
export const GENERATE_WALLET_HAS_DOWNLOADED_FILE =
'GENERATE_WALLET_HAS_DOWNLOADED_FILE';
export const GENERATE_WALLET_CONTINUE_TO_PAPER =
'GENERATE_WALLET_CONTINUE_TO_PAPER';

View File

@ -20,19 +20,21 @@ class GenerateWalletPasswordComponent extends Component {
}
static propTypes = {
// state
title: PropTypes.string,
body: PropTypes.string,
userId: PropTypes.number,
id: PropTypes.number,
generateWalletPassword: PropTypes.object,
showPassword: PropTypes.bool,
showGenerateWalletPasswordAction: PropTypes.func,
generateWalletFileAction: PropTypes.func,
generateWalletHasDownloadedFileAction: PropTypes.func,
generateWalletFile: PropTypes.bool,
hasDownloadedWalletFile: PropTypes.bool,
generateWalletContinueToPaperAction: PropTypes.func,
canProceedToPaper: PropTypes.bool
canProceedToPaper: PropTypes.bool,
// actions
SHOW_GENERATE_WALLET_PASSWORD_ACTION: PropTypes.func,
GENERATE_WALLET_FILE_ACTION: PropTypes.func,
GENERATE_WALLET_HAS_DOWNLOADED_FILE_ACTION: PropTypes.func,
GENERATE_WALLET_CONTINUE_TO_PAPER_ACTION: PropTypes.func
};
@ -48,19 +50,14 @@ class GenerateWalletPasswordComponent extends Component {
render() {
const {
// handleSubmit,
// pristine,
// reset,
// submitting,
generateWalletPassword,
showPassword,
showGenerateWalletPasswordAction,
generateWalletFileAction,
generateWalletFile,
hasDownloadedWalletFile,
generateWalletHasDownloadedFileAction,
generateWalletContinueToPaperAction
// canProceedToPaper
SHOW_GENERATE_WALLET_PASSWORD_ACTION,
GENERATE_WALLET_FILE_ACTION,
GENERATE_WALLET_HAS_DOWNLOADED_FILE_ACTION,
GENERATE_WALLET_CONTINUE_TO_PAPER_ACTION
} = this.props;
@ -80,11 +77,11 @@ class GenerateWalletPasswordComponent extends Component {
validate={[required, minLength9]}
component={GenerateWalletPasswordInputComponent}
showPassword={showPassword}
showGenerateWalletPasswordAction={showGenerateWalletPasswordAction}
SHOW_GENERATE_WALLET_PASSWORD_ACTION={SHOW_GENERATE_WALLET_PASSWORD_ACTION}
name="password"
type="text"/>
<br/>
<button onClick={() => generateWalletFileAction()}
<button onClick={() => GENERATE_WALLET_FILE_ACTION()}
disabled={generateWalletPassword ? generateWalletPassword.syncErrors : true}
className="btn btn-primary btn-block">
{translate('NAV_GenerateWallet')}
@ -111,7 +108,7 @@ class GenerateWalletPasswordComponent extends Component {
download="UTC--2017-04-26T23-07-03.538Z--c5b7fff4e1669e38e8d6bc8fffe7e562b2b70f43"
aria-label="Download Keystore File (UTC / JSON · Recommended · Encrypted)"
aria-describedby="x_KeystoreDesc"
onClick={() => generateWalletHasDownloadedFileAction()}>{translate('x_Download')}</a>
onClick={() => GENERATE_WALLET_HAS_DOWNLOADED_FILE_ACTION()}>{translate('x_Download')}</a>
<p className="sr-only" id="x_KeystoreDesc">{translate('x_KeystoreDesc')}</p>
<br/><br/><br/><br/>
</div>
@ -123,7 +120,7 @@ class GenerateWalletPasswordComponent extends Component {
<br/><br/>
<a role="button"
className={`btn btn-info ${hasDownloadedWalletFile ? '' : 'disabled'}`}
onClick={() => generateWalletContinueToPaperAction()}> I understand. Continue. </a>
onClick={() => GENERATE_WALLET_CONTINUE_TO_PAPER_ACTION()}> I understand. Continue. </a>
</span>
</div>
</section>

View File

@ -8,7 +8,7 @@ export default class GenerateWalletPasswordInputComponent extends Component {
}
static propTypes = {
showGenerateWalletPasswordAction: PropTypes.func,
SHOW_GENERATE_WALLET_PASSWORD_ACTION: PropTypes.func,
showPassword: PropTypes.bool,
input: PropTypes.object,
meta: PropTypes.object
@ -27,7 +27,7 @@ export default class GenerateWalletPasswordInputComponent extends Component {
placeholder="Do NOT forget to save this!"
aria-label="Enter a strong password (at least 9 characters)"/>
<span
onClick={() => this.props.showGenerateWalletPasswordAction()}
onClick={() => this.props.SHOW_GENERATE_WALLET_PASSWORD_ACTION()}
aria-label="make password visible"
role="button"
className="input-group-addon eye"/>

View File

@ -1,63 +1,41 @@
import GenerateWalletPasswordComponent from './components/GenerateWalletPasswordComponent';
import React, {Component} from 'react';
import {connect} from 'react-redux';
import {
GENERATE_WALLET_FILE_ACTION,
GENERATE_WALLET_HAS_DOWNLOADED_FILE_ACTION,
SHOW_GENERATE_WALLET_PASSWORD_ACTION,
GENERATE_WALLET_CONTINUE_TO_PAPER_ACTION
} from 'actions/generateWallet';
import React, { Component } from 'react';
import { connect } from 'react-redux';
import * as generateWalletActions from 'actions/generateWallet';
import PropTypes from 'prop-types';
class GenerateWallet extends Component {
constructor(props) {
super(props)
}
constructor(props) {
super(props);
}
static propTypes = {
generateWalletPassword: PropTypes.object,
showPassword: PropTypes.bool,
hasDownloadedWalletFile: PropTypes.bool,
showGenerateWalletPasswordAction: PropTypes.func,
generateWalletFileAction: PropTypes.func,
generateWalletHasDownloadedFileAction: PropTypes.func,
generateWalletFile: PropTypes.bool,
generateWalletContinueToPaperAction: PropTypes.func,
canProceedToPaper: PropTypes.bool
}
static propTypes = {
// state
generateWalletPassword: PropTypes.object,
showPassword: PropTypes.bool,
hasDownloadedWalletFile: PropTypes.bool,
generateWalletFile: PropTypes.bool,
canProceedToPaper: PropTypes.bool,
// actions
SHOW_GENERATE_WALLET_PASSWORD_ACTION: PropTypes.func,
GENERATE_WALLET_FILE_ACTION: PropTypes.func,
GENERATE_WALLET_HAS_DOWNLOADED_FILE_ACTION: PropTypes.func,
GENERATE_WALLET_CONTINUE_TO_PAPER_ACTION: PropTypes.func
};
render() {
return (
<GenerateWalletPasswordComponent {...this.props}/>
)
}
render() {
return <GenerateWalletPasswordComponent {...this.props} />;
}
}
function mapStateToProps(state) {
return {
generateWalletPassword: state.form.generateWalletPassword,
generateWalletFile: state.generateWallet.generateWalletFile,
showPassword: state.generateWallet.showPassword,
hasDownloadedWalletFile: state.generateWallet.hasDownloadedWalletFile,
canProceedToPaper: state.generateWallet.canProceedToPaper
}
return {
generateWalletPassword: state.form.generateWalletPassword,
generateWalletFile: state.generateWallet.generateWalletFile,
showPassword: state.generateWallet.showPassword,
hasDownloadedWalletFile: state.generateWallet.hasDownloadedWalletFile,
canProceedToPaper: state.generateWallet.canProceedToPaper
};
}
function mapDispatchToProps(dispatch) {
return {
showGenerateWalletPasswordAction: () => {
dispatch(SHOW_GENERATE_WALLET_PASSWORD_ACTION())
},
generateWalletFileAction: () => {
dispatch(GENERATE_WALLET_FILE_ACTION())
},
generateWalletHasDownloadedFileAction: () => {
dispatch(GENERATE_WALLET_HAS_DOWNLOADED_FILE_ACTION())
},
generateWalletContinueToPaperAction: () => {
dispatch(GENERATE_WALLET_CONTINUE_TO_PAPER_ACTION())
}
}
}
export default connect(mapStateToProps, mapDispatchToProps)(GenerateWallet)
export default connect(mapStateToProps, generateWalletActions)(GenerateWallet);

View File

@ -1,50 +1,48 @@
import {
GENERATE_WALLET_SHOW_PASSWORD,
GENERATE_WALLET_FILE,
GENERATE_WALLET_HAS_DOWNLOADED_FILE,
GENERATE_WALLET_CONTINUE_TO_PAPER
} from 'actions/generateWallet';
GENERATE_WALLET_SHOW_PASSWORD,
GENERATE_WALLET_FILE,
GENERATE_WALLET_HAS_DOWNLOADED_FILE,
GENERATE_WALLET_CONTINUE_TO_PAPER
} from 'actions/generateWalletConstants';
const initialState = {
showPassword: false,
generateWalletFile: false,
hasDownloadedWalletFile: false,
canProceedToPaper: false
}
showPassword: false,
generateWalletFile: false,
hasDownloadedWalletFile: false,
canProceedToPaper: false
};
export function generateWallet(state = initialState, action) {
switch (action.type) {
case GENERATE_WALLET_SHOW_PASSWORD: {
return {
...state,
showPassword: !state.showPassword
}
}
case GENERATE_WALLET_FILE: {
return {
...state,
generateWalletFile: true
}
}
case GENERATE_WALLET_HAS_DOWNLOADED_FILE: {
return {
...state,
hasDownloadedWalletFile: true
}
}
case GENERATE_WALLET_CONTINUE_TO_PAPER: {
return {
...state,
canProceedToPaper: true
}
}
default:
return state
switch (action.type) {
case GENERATE_WALLET_SHOW_PASSWORD: {
return {
...state,
showPassword: !state.showPassword
};
}
case GENERATE_WALLET_FILE: {
return {
...state,
generateWalletFile: true
};
}
case GENERATE_WALLET_HAS_DOWNLOADED_FILE: {
return {
...state,
hasDownloadedWalletFile: true
};
}
case GENERATE_WALLET_CONTINUE_TO_PAPER: {
return {
...state,
canProceedToPaper: true
};
}
default:
return state;
}
}