HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux wordpress-ubuntu-s-2vcpu-4gb-fra1-01 5.4.0-169-generic #187-Ubuntu SMP Thu Nov 23 14:52:28 UTC 2023 x86_64
User: root (0)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/delta/wp-content/plugins/better-wp-security/core/packages/data/src/tools/reducers.js
/**
 * External dependencies
 */
import { keyBy, map, without, omit } from 'lodash';

/**
 * Internal dependencies
 */
import {
	RECEIVE_TOOLS,
	START_TOOL,
	FINISH_TOOL,
	START_TOGGLE_TOOL,
	FAILED_TOGGLE_TOOL,
	FINISH_TOGGLE_TOOL,
} from './actions';

const DEFAULT_STATE = {
	bySlug: {},
	slugs: [],
	running: [],
	lastResult: {},
	updating: [],
	lastError: {},
};

export default function( state = DEFAULT_STATE, action ) {
	switch ( action.type ) {
		case RECEIVE_TOOLS:
			return {
				...state,
				bySlug: keyBy( action.tools, 'slug' ),
				slugs: map( action.tools, 'slug' ),
			};
		case START_TOOL:
			return {
				...state,
				running: [ ...state.running, action.tool ],
			};
		case FINISH_TOOL:
			return {
				...state,
				running: without( state.running, action.tool ),
				lastResult: {
					...state.lastResult,
					[ action.tool ]: action.result,
				},
			};
		case START_TOGGLE_TOOL:
			return {
				...state,
				updating: [ ...state.updating, action.tool ],
			};
		case FAILED_TOGGLE_TOOL:
			return {
				...state,
				updating: without( state.updating, action.tool ),
				lastError: {
					...state.lastError,
					[ action.tool ]: action.error,
				},
			};
		case FINISH_TOGGLE_TOOL:
			return {
				...state,
				updating: without( state.updating, action.tool ),
				lastError: omit( state.lastError, action.tool ),
				bySlug: {
					...state.bySlug,
					[ action.tool ]: action.data,
				},
			};
		default:
			return state;
	}
}