1
0
mirror of https://github.com/trezor/trezor-wallet synced 2024-12-12 01:58:19 +00:00
trezor-wallet/src/reducers/SignVerifyReducer.js

95 lines
2.4 KiB
JavaScript
Raw Normal View History

2018-10-16 22:31:33 +00:00
/* @flow */
import type { Action } from 'flowtype';
2018-11-22 13:20:37 +00:00
import * as ACCOUNT from 'actions/constants/account';
2018-11-21 18:32:28 +00:00
import * as ACTION from 'actions/constants/signVerify';
2018-10-17 15:57:21 +00:00
2018-11-27 16:11:46 +00:00
export type Error = {
inputName: string,
message: ?string,
};
2018-10-16 22:31:33 +00:00
export type State = {
2018-11-21 18:19:14 +00:00
signAddress: string,
signMessage: string,
signSignature: string,
verifyAddress: string,
verifyMessage: string,
verifySignature: string,
2018-11-27 16:11:46 +00:00
touched: Array<string>,
errors: Array<Error>
2018-10-16 22:31:33 +00:00
}
export const initialState: State = {
2018-11-21 18:19:14 +00:00
signAddress: '',
signMessage: '',
signSignature: '',
verifyAddress: '',
verifyMessage: '',
verifySignature: '',
touched: [],
2018-11-27 16:11:46 +00:00
errors: [],
2018-10-16 22:31:33 +00:00
};
export default (state: State = initialState, action: Action): State => {
switch (action.type) {
2018-11-21 18:32:28 +00:00
case ACTION.SIGN_SUCCESS:
2018-10-17 15:57:21 +00:00
return {
2018-11-22 13:20:37 +00:00
...state,
signSignature: action.signSignature,
2018-10-18 12:18:48 +00:00
};
2018-11-27 16:11:46 +00:00
case ACTION.ERROR: {
const { inputName } = action;
if (!state.errors.some(e => e.inputName === inputName)) {
const error = { inputName, message: action.message };
2018-11-21 18:19:14 +00:00
return {
...state,
2018-11-27 16:11:46 +00:00
errors: [...state.errors, error],
2018-11-21 18:19:14 +00:00
};
}
return state;
}
2018-11-27 16:11:46 +00:00
case ACTION.TOUCH: {
const { inputName } = action;
if (!state.touched.includes(inputName)) {
return {
...state,
touched: [...state.touched, action.inputName],
};
}
return {
...state,
errors: state.errors.filter(error => error.inputName !== inputName),
};
}
2018-11-21 18:32:28 +00:00
case ACTION.INPUT_CHANGE: {
2018-11-27 16:11:46 +00:00
const change = { [action.inputName]: action.value };
2018-11-22 13:20:37 +00:00
return { ...state, ...change };
2018-11-21 18:19:14 +00:00
}
case ACCOUNT.DISPOSE:
return initialState;
2018-11-21 18:32:28 +00:00
case ACTION.CLEAR_SIGN:
2018-10-18 22:55:16 +00:00
return {
2018-11-21 18:32:28 +00:00
...state,
signAddress: '',
signMessage: '',
signSignature: '',
};
case ACTION.CLEAR_VERIFY:
return {
...state,
verifyAddress: '',
verifyMessage: '',
verifySignature: '',
2018-10-18 22:55:16 +00:00
};
2018-10-16 22:31:33 +00:00
default:
return state;
}
};