diff options
author | Matthew Shao <me@matshao.com> | 2017-07-18 09:14:28 +0800 |
---|---|---|
committer | Matthew Shao <me@matshao.com> | 2017-07-18 09:14:28 +0800 |
commit | 70bb123101fa59f3f60bdca254cdbdd3e89de568 (patch) | |
tree | 615cbced0443a60f9fa62b9544a40edd1b64ce2d /web/src/js/ducks/ui/optionsEditor.js | |
parent | 4a02822b346c3aed361c77bb714903a59ac6935e (diff) | |
parent | 183079f7312dc812d7b70a01e490ef3827b2890c (diff) | |
download | mitmproxy-70bb123101fa59f3f60bdca254cdbdd3e89de568.tar.gz mitmproxy-70bb123101fa59f3f60bdca254cdbdd3e89de568.tar.bz2 mitmproxy-70bb123101fa59f3f60bdca254cdbdd3e89de568.zip |
Merge branch 'mitmweb-options' of https://github.com/MatthewShao/mitmproxy into mitmweb-options
Diffstat (limited to 'web/src/js/ducks/ui/optionsEditor.js')
-rw-r--r-- | web/src/js/ducks/ui/optionsEditor.js | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/web/src/js/ducks/ui/optionsEditor.js b/web/src/js/ducks/ui/optionsEditor.js new file mode 100644 index 00000000..23dfe01a --- /dev/null +++ b/web/src/js/ducks/ui/optionsEditor.js @@ -0,0 +1,73 @@ +import { HIDE_MODAL } from "./modal" + +export const OPTION_UPDATE_START = 'UI_OPTION_UPDATE_START' +export const OPTION_UPDATE_SUCCESS = 'UI_OPTION_UPDATE_SUCCESS' +export const OPTION_UPDATE_ERROR = 'UI_OPTION_UPDATE_ERROR' + +const defaultState = { + /* optionName -> {isUpdating, value (client-side), error} */ +} + +export default function reducer(state = defaultState, action) { + switch (action.type) { + case OPTION_UPDATE_START: + return { + ...state, + [action.option]: { + isUpdate: true, + value: action.value, + error: false, + } + } + + case OPTION_UPDATE_SUCCESS: + return { + ...state, + [action.option]: undefined + } + + case OPTION_UPDATE_ERROR: + let val = state[action.option].value; + if (typeof(val) === "boolean") { + // If a boolean option errs, reset it to its previous state to be less confusing. + // Example: Start mitmweb, check "add_upstream_certs_to_client_chain". + val = !val; + } + return { + ...state, + [action.option]: { + value: val, + isUpdating: false, + error: action.error + } + } + + case HIDE_MODAL: + return {} + + default: + return state + } +} + +export function startUpdate(option, value) { + return { + type: OPTION_UPDATE_START, + option, + value, + } +} +export function updateSuccess(option) { + return { + type: OPTION_UPDATE_SUCCESS, + option, + } +} + +export function updateError(option, error) { + return { + type: OPTION_UPDATE_ERROR, + option, + error, + } +} |