176 lines
5.1 KiB
JavaScript
176 lines
5.1 KiB
JavaScript
|
import { handleActions } from 'redux-actions';
|
||
|
import * as actions from '../actions';
|
||
|
import { areEqualVersions } from '../helpers/version';
|
||
|
import { STANDARD_DNS_PORT, STANDARD_WEB_PORT } from '../helpers/constants';
|
||
|
|
||
|
const dashboard = handleActions(
|
||
|
{
|
||
|
[actions.setDnsRunningStatus]: (state, { payload }) => (
|
||
|
{
|
||
|
...state,
|
||
|
isCoreRunning: payload,
|
||
|
}
|
||
|
),
|
||
|
[actions.dnsStatusRequest]: (state) => ({
|
||
|
...state,
|
||
|
processing: true,
|
||
|
}),
|
||
|
[actions.dnsStatusFailure]: (state) => ({
|
||
|
...state,
|
||
|
processing: false,
|
||
|
}),
|
||
|
[actions.dnsStatusSuccess]: (state, { payload }) => {
|
||
|
const {
|
||
|
version,
|
||
|
dns_port: dnsPort,
|
||
|
dns_addresses: dnsAddresses,
|
||
|
protection_enabled: protectionEnabled,
|
||
|
http_port: httpPort,
|
||
|
language,
|
||
|
} = payload;
|
||
|
const newState = {
|
||
|
...state,
|
||
|
isCoreRunning: true,
|
||
|
processing: false,
|
||
|
dnsVersion: version,
|
||
|
dnsPort,
|
||
|
dnsAddresses,
|
||
|
protectionEnabled,
|
||
|
language,
|
||
|
httpPort,
|
||
|
};
|
||
|
return newState;
|
||
|
},
|
||
|
|
||
|
[actions.getVersionRequest]: (state) => ({
|
||
|
...state,
|
||
|
processingVersion: true,
|
||
|
}),
|
||
|
[actions.getVersionFailure]: (state) => ({
|
||
|
...state,
|
||
|
processingVersion: false,
|
||
|
}),
|
||
|
[actions.getVersionSuccess]: (state, { payload }) => {
|
||
|
const currentVersion = state.dnsVersion === 'undefined' ? 0 : state.dnsVersion;
|
||
|
|
||
|
if (!payload.disabled && !areEqualVersions(currentVersion, payload.new_version)) {
|
||
|
const {
|
||
|
announcement_url: announcementUrl,
|
||
|
new_version: newVersion,
|
||
|
can_autoupdate: canAutoUpdate,
|
||
|
} = payload;
|
||
|
|
||
|
const newState = {
|
||
|
...state,
|
||
|
announcementUrl,
|
||
|
newVersion,
|
||
|
canAutoUpdate,
|
||
|
isUpdateAvailable: true,
|
||
|
processingVersion: false,
|
||
|
checkUpdateFlag: !payload.disabled,
|
||
|
};
|
||
|
return newState;
|
||
|
}
|
||
|
|
||
|
return {
|
||
|
...state,
|
||
|
processingVersion: false,
|
||
|
checkUpdateFlag: !payload.disabled,
|
||
|
};
|
||
|
},
|
||
|
|
||
|
[actions.getUpdateRequest]: (state) => ({
|
||
|
...state,
|
||
|
processingUpdate: true,
|
||
|
}),
|
||
|
[actions.getUpdateFailure]: (state) => ({
|
||
|
...state,
|
||
|
processingUpdate: false,
|
||
|
}),
|
||
|
[actions.getUpdateSuccess]: (state) => {
|
||
|
const newState = {
|
||
|
...state,
|
||
|
processingUpdate: false,
|
||
|
};
|
||
|
return newState;
|
||
|
},
|
||
|
|
||
|
[actions.toggleProtectionRequest]: (state) => ({
|
||
|
...state,
|
||
|
processingProtection: true,
|
||
|
}),
|
||
|
[actions.toggleProtectionFailure]: (state) => ({
|
||
|
...state,
|
||
|
processingProtection: false,
|
||
|
}),
|
||
|
[actions.toggleProtectionSuccess]: (state) => {
|
||
|
const newState = {
|
||
|
...state,
|
||
|
protectionEnabled: !state.protectionEnabled,
|
||
|
processingProtection: false,
|
||
|
};
|
||
|
return newState;
|
||
|
},
|
||
|
|
||
|
[actions.getLanguageSuccess]: (state, { payload }) => {
|
||
|
const newState = {
|
||
|
...state,
|
||
|
language: payload,
|
||
|
};
|
||
|
return newState;
|
||
|
},
|
||
|
|
||
|
[actions.getClientsRequest]: (state) => ({
|
||
|
...state,
|
||
|
processingClients: true,
|
||
|
}),
|
||
|
[actions.getClientsFailure]: (state) => ({
|
||
|
...state,
|
||
|
processingClients: false,
|
||
|
}),
|
||
|
[actions.getClientsSuccess]: (state, { payload }) => {
|
||
|
const newState = {
|
||
|
...state,
|
||
|
...payload,
|
||
|
processingClients: false,
|
||
|
};
|
||
|
return newState;
|
||
|
},
|
||
|
|
||
|
[actions.getProfileRequest]: (state) => ({
|
||
|
...state,
|
||
|
processingProfile: true,
|
||
|
}),
|
||
|
[actions.getProfileFailure]: (state) => ({
|
||
|
...state,
|
||
|
processingProfile: false,
|
||
|
}),
|
||
|
[actions.getProfileSuccess]: (state, { payload }) => ({
|
||
|
...state,
|
||
|
name: payload.name,
|
||
|
processingProfile: false,
|
||
|
}),
|
||
|
},
|
||
|
{
|
||
|
processing: true,
|
||
|
isCoreRunning: true,
|
||
|
processingVersion: true,
|
||
|
processingClients: true,
|
||
|
processingUpdate: false,
|
||
|
processingProfile: true,
|
||
|
protectionEnabled: false,
|
||
|
processingProtection: false,
|
||
|
httpPort: STANDARD_WEB_PORT,
|
||
|
dnsPort: STANDARD_DNS_PORT,
|
||
|
dnsAddresses: [],
|
||
|
dnsVersion: '',
|
||
|
clients: [],
|
||
|
autoClients: [],
|
||
|
supportedTags: [],
|
||
|
name: '',
|
||
|
checkUpdateFlag: false,
|
||
|
},
|
||
|
);
|
||
|
|
||
|
export default dashboard;
|