Completed
Pull Request — master (#162)
by Alejandro
09:21
created

src/servers/reducers/selectedServer.js   A

Complexity

Total Complexity 5
Complexity/F 1

Size

Lines of Code 27
Function Count 5

Duplication

Duplicated Lines 0
Ratio 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 5
eloc 16
mnd 0
bc 0
fnc 5
dl 0
loc 27
ccs 10
cts 10
cp 1
rs 10
bpm 0
cpm 1
noi 0
c 0
b 0
f 0
1
import { createAction, handleActions } from 'redux-actions';
2
import { resetShortUrlParams } from '../../short-urls/reducers/shortUrlsListParams';
3
4
/* eslint-disable padding-line-between-statements */
5 1
export const SELECT_SERVER = 'shlink/selectedServer/SELECT_SERVER';
6 1
export const RESET_SELECTED_SERVER = 'shlink/selectedServer/RESET_SELECTED_SERVER';
7
/* eslint-enable padding-line-between-statements */
8
9 1
const initialState = null;
10
11 1
export const resetSelectedServer = createAction(RESET_SELECTED_SERVER);
12
13 2
export const selectServer = ({ findServerById }, buildShlinkApiClient) => (serverId) => async (dispatch) => {
14 2
  dispatch(resetShortUrlParams());
15
16 2
  const selectedServer = findServerById(serverId);
17 2
  const { health } = await buildShlinkApiClient(selectedServer);
18 1
  const { version } = await health();
19
20 1
  dispatch({
21
    type: SELECT_SERVER,
22
    selectedServer: {
23
      ...selectedServer,
24
      version,
25
    },
26
  });
27
};
28
29
export default handleActions({
30 1
  [RESET_SELECTED_SERVER]: () => initialState,
31 1
  [SELECT_SERVER]: (state, { selectedServer }) => selectedServer,
32
}, initialState);
33