@woocommerce/data
Version:
WooCommerce Admin data store and utilities
118 lines (117 loc) • 3.9 kB
JavaScript
/**
* External dependencies
*/
import { concat } from 'lodash';
/**
* Internal dependencies
*/
import { ACTION_TYPES as TYPES } from './action-types';
const reducer = (state = {
active: [],
installed: [],
requesting: {},
errors: {},
jetpackConnectUrls: {},
recommended: {},
}, payload) => {
if (payload && 'type' in payload) {
switch (payload.type) {
case TYPES.UPDATE_ACTIVE_PLUGINS:
state = {
...state,
active: payload.replace
? payload.active
: concat(state.active, payload.active),
requesting: {
...state.requesting,
getActivePlugins: false,
activatePlugins: false,
},
errors: {
...state.errors,
getActivePlugins: false,
activatePlugins: false,
},
};
break;
case TYPES.UPDATE_INSTALLED_PLUGINS:
state = {
...state,
installed: payload.replace
? payload.installed
: concat(state.installed, payload.installed),
requesting: {
...state.requesting,
getInstalledPlugins: false,
installPlugins: false,
},
errors: {
...state.errors,
getInstalledPlugins: false,
installPlugin: false,
},
};
break;
case TYPES.SET_IS_REQUESTING:
state = {
...state,
requesting: {
...state.requesting,
[payload.selector]: payload.isRequesting,
},
};
break;
case TYPES.SET_ERROR:
state = {
...state,
requesting: {
...state.requesting,
[payload.selector]: false,
},
errors: {
...state.errors,
[payload.selector]: payload.error,
},
};
break;
case TYPES.UPDATE_JETPACK_CONNECTION:
state = {
...state,
jetpackConnection: payload.jetpackConnection,
};
break;
case TYPES.UPDATE_JETPACK_CONNECTION_DATA:
state = {
...state,
jetpackConnectionData: payload.results,
};
break;
case TYPES.UPDATE_JETPACK_CONNECT_URL:
state = {
...state,
jetpackConnectUrls: {
...state.jetpackConnectUrls,
[payload.redirectUrl]: payload.jetpackConnectUrl,
},
};
break;
case TYPES.SET_PAYPAL_ONBOARDING_STATUS:
state = {
...state,
paypalOnboardingStatus: payload.paypalOnboardingStatus,
};
break;
case TYPES.SET_RECOMMENDED_PLUGINS:
state = {
...state,
recommended: {
...state.recommended,
[payload.recommendedType]: payload.plugins,
},
};
break;
}
}
return state;
};
export default reducer;