zepio/app/redux/modules/receive.js

75 lines
1.7 KiB
JavaScript

// @flow
import type { Action } from '../../types/redux';
// Actions
export const LOAD_ADDRESSES_SUCCESS = 'LOAD_ADDRESSES_SUCCESS';
export const LOAD_ADDRESSES_ERROR = 'LOAD_ADDRESSES_ERROR';
export const GET_NEW_ADDRESS_SUCCESS = 'GET_NEW_ADDRESS_SUCCESS';
export const GET_NEW_ADDRESS_ERROR = 'GET_NEW_ADDRESS_ERROR';
export const loadAddressesSuccess = ({ addresses }: { addresses: string[] }) => ({
type: LOAD_ADDRESSES_SUCCESS,
payload: {
addresses,
},
});
export const loadAddressesError = ({ error }: { error: string }) => ({
type: LOAD_ADDRESSES_ERROR,
payload: { error },
});
export const getNewAddressSuccess = ({ address }: { address: string }) => ({
type: GET_NEW_ADDRESS_SUCCESS,
payload: {
address,
},
});
export const getNewAddressError = ({ error }: { error: string }) => ({
type: GET_NEW_ADDRESS_ERROR,
payload: {
error,
},
});
export type addressType = 'transparent' | 'shielded';
export type State = {
addresses: string[],
error: string | null,
};
const initialState: State = {
addresses: [],
error: null,
};
// eslint-disable-next-line
export default (state: State = initialState, action: Action) => {
switch (action.type) {
case LOAD_ADDRESSES_SUCCESS:
return {
error: null,
addresses: action.payload.addresses,
};
case LOAD_ADDRESSES_ERROR:
return {
error: action.payload.error,
addresses: [],
};
case GET_NEW_ADDRESS_SUCCESS:
return {
error: null,
addresses: [...state.addresses, action.payload.address],
};
case GET_NEW_ADDRESS_ERROR:
return {
...state,
error: action.payload.error,
};
default:
return state;
}
};