131 lines
2.4 KiB
JavaScript
131 lines
2.4 KiB
JavaScript
import createReducer from 'utils/createReducer';
|
|
import * as actions from './actions';
|
|
|
|
export const getSettings = state => state.settings;
|
|
|
|
export default createReducer(
|
|
{},
|
|
{
|
|
[actions.UPLOAD_CERT](state) {
|
|
state.uploadingCert = true;
|
|
},
|
|
|
|
[actions.socket.CERT_SUCCESS](state) {
|
|
state.uploadingCert = false;
|
|
delete state.certFile;
|
|
delete state.cert;
|
|
delete state.keyFile;
|
|
delete state.key;
|
|
},
|
|
|
|
[actions.socket.CERT_FAIL](state, action) {
|
|
state.uploadingCert = false;
|
|
state.certError = action.message;
|
|
},
|
|
|
|
[actions.SET_CERT_ERROR](state, action) {
|
|
state.uploadingCert = false;
|
|
state.certError = action.message;
|
|
},
|
|
|
|
[actions.SET_CERT](state, action) {
|
|
state.certFile = action.fileName;
|
|
state.cert = action.cert;
|
|
},
|
|
|
|
[actions.SET_KEY](state, action) {
|
|
state.keyFile = action.fileName;
|
|
state.key = action.key;
|
|
},
|
|
|
|
[actions.SETTINGS_SET](state, { key, value, settings }) {
|
|
if (settings) {
|
|
Object.assign(state, settings);
|
|
} else {
|
|
state[key] = value;
|
|
}
|
|
},
|
|
|
|
[actions.INIT](state, { settings }) {
|
|
return settings;
|
|
}
|
|
}
|
|
);
|
|
|
|
export function setCertError(message) {
|
|
return {
|
|
type: actions.SET_CERT_ERROR,
|
|
message
|
|
};
|
|
}
|
|
|
|
export function uploadCert() {
|
|
return (dispatch, getState) => {
|
|
const { settings } = getState();
|
|
if (settings.cert && settings.key) {
|
|
dispatch({
|
|
type: actions.UPLOAD_CERT,
|
|
socket: {
|
|
type: 'cert',
|
|
data: {
|
|
cert: settings.cert,
|
|
key: settings.key
|
|
}
|
|
}
|
|
});
|
|
} else {
|
|
dispatch(setCertError('Missing certificate or key'));
|
|
}
|
|
};
|
|
}
|
|
|
|
export function setCert(fileName, cert) {
|
|
return {
|
|
type: actions.SET_CERT,
|
|
fileName,
|
|
cert
|
|
};
|
|
}
|
|
|
|
export function setKey(fileName, key) {
|
|
return {
|
|
type: actions.SET_KEY,
|
|
fileName,
|
|
key
|
|
};
|
|
}
|
|
|
|
export function setSetting(key, value) {
|
|
return {
|
|
type: actions.SETTINGS_SET,
|
|
key,
|
|
value,
|
|
socket: {
|
|
type: 'settings_set',
|
|
data: {
|
|
[key]: value
|
|
},
|
|
debounce: {
|
|
delay: 250,
|
|
key: `settings:${key}`
|
|
}
|
|
}
|
|
};
|
|
}
|
|
|
|
export function setSettings(settings, local = false) {
|
|
const action = {
|
|
type: actions.SETTINGS_SET,
|
|
settings
|
|
};
|
|
|
|
if (!local) {
|
|
action.socket = {
|
|
type: 'settings_set',
|
|
data: settings
|
|
};
|
|
}
|
|
|
|
return action;
|
|
}
|