Completed
Push — master ( 616573...58347b )
by wiese
163:41 queued 98:34
created

validity.js ➔ validity   D

Complexity

Conditions 9
Paths 14

Size

Total Lines 25

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 9
c 1
b 0
f 0
nc 14
dl 0
loc 25
rs 4.909
nop 2
1
'use strict';
2
3
var objectAssign = require( 'object-assign' ),
4
	_ = require( 'underscore' ),
5
	defaultState = {
6
		paymentData: null,
7
		address: null,
8
		bankData: null,
9
		sepaConfirmation: null
10
	};
11
12
/**
13
 * Check if action has error flag set (happens when the AJAX request fails) and if payload.status is 'OK'.
14
 *
15
 * This should be used for server validation results that have a 'status' field.
16
 *
17
 * @param {Object} action Redux standard action
18
 * @return {boolean}
19
 */
20
function convertExternalResult( action ) {
21
	return !action.error && action.payload.status === 'OK';
22
}
23
24
/**
25
 * Handle FINISH_XXX_VALIDATION actions and store the validity
26
 *
27
 * @param {Object} state Validity settings for
28
 * @param {Object} action Redux standard action
29
 * @return {Object}
30
 */
31
function validity( state, action ) {
32
	var newState = objectAssign( {}, state );
33
	if ( typeof state !== 'object' ) {
34
		state = defaultState;
35
	}
36
	switch ( action.type ) {
37
		case 'INITIALIZE_VALIDATION':
38
			if ( !_.isEmpty( action.payload.initialValidationResult ) ) {
39
				newState = _.extendOwn( state, action.payload.initialValidationResult );
40
			}
41
			return newState;
42
		case 'FINISH_PAYMENT_DATA_VALIDATION':
43
			return objectAssign( {}, state, { paymentData: convertExternalResult( action ) } );
44
		case 'FINISH_ADDRESS_VALIDATION':
45
			return objectAssign( {}, state, { address: convertExternalResult( action ) } );
46
		case 'FINISH_BANK_DATA_VALIDATION':
47
			return objectAssign( {}, state, {
48
				bankData: convertExternalResult( action )
49
			} );
50
		case 'FINISH_SEPA_CONFIRMATION_VALIDATION':
51
			return objectAssign( {}, state, { sepaConfirmation: action.payload } );
52
		default:
53
			return state;
54
	}
55
}
56
57
module.exports = validity;
58