diff options
author | Maximilian Hils <git@maximilianhils.com> | 2016-12-11 22:52:17 +0100 |
---|---|---|
committer | Maximilian Hils <git@maximilianhils.com> | 2016-12-12 00:08:29 +0100 |
commit | d854e08653ccee12119266e2cc3f5d6c279341e5 (patch) | |
tree | a58d465ea62fdb9665389b39c284d689f2b94e78 /web/src/js/ducks | |
parent | d1c7b203f08d4b1e1ee3c7a50762a4f08843feef (diff) | |
download | mitmproxy-d854e08653ccee12119266e2cc3f5d6c279341e5.tar.gz mitmproxy-d854e08653ccee12119266e2cc3f5d6c279341e5.tar.bz2 mitmproxy-d854e08653ccee12119266e2cc3f5d6c279341e5.zip |
[web] various fixes
Diffstat (limited to 'web/src/js/ducks')
-rw-r--r-- | web/src/js/ducks/flows.js | 44 | ||||
-rw-r--r-- | web/src/js/ducks/ui/header.js | 6 | ||||
-rw-r--r-- | web/src/js/ducks/ui/keyboard.js | 57 | ||||
-rw-r--r-- | web/src/js/ducks/utils/store.js | 1 |
4 files changed, 75 insertions, 33 deletions
diff --git a/web/src/js/ducks/flows.js b/web/src/js/ducks/flows.js index d3717533..92408891 100644 --- a/web/src/js/ducks/flows.js +++ b/web/src/js/ducks/flows.js @@ -36,8 +36,29 @@ export default function reduce(state = defaultState, action) { makeFilter(state.filter), makeSort(state.sort) ) + + let selected = state.selected + if(action.type === REMOVE && state.selected.includes(action.data)) { + if(state.selected.length > 1){ + selected = selected.filter(x => x !== action.data) + } else { + selected = [] + if (action.data in state.viewIndex && state.view.length > 1) { + let currentIndex = state.viewIndex[action.data], + nextSelection + if(currentIndex === state.view.length -1){ // last row + nextSelection = state.view[currentIndex - 1] + } else { + nextSelection = state.view[currentIndex + 1] + } + selected.push(nextSelection.id) + } + } + } + return { ...state, + selected, ...reduceStore(state, storeAction) } @@ -48,6 +69,12 @@ export default function reduce(state = defaultState, action) { ...reduceStore(state, storeActions.setFilter(makeFilter(action.filter), makeSort(state.sort))) } + case SET_HIGHLIGHT: + return { + ...state, + highlight: action.highlight + } + case SET_SORT: return { ...state, @@ -144,14 +171,23 @@ export function selectRelative(shift) { } -export function accept(flow) { - return dispatch => fetchApi(`/flows/${flow.id}/accept`, { method: 'POST' }) +export function resume(flow) { + return dispatch => fetchApi(`/flows/${flow.id}/resume`, { method: 'POST' }) +} + +export function resumeAll() { + return dispatch => fetchApi('/flows/resume', { method: 'POST' }) +} + +export function kill(flow) { + return dispatch => fetchApi(`/flows/${flow.id}/kill`, { method: 'POST' }) } -export function acceptAll() { - return dispatch => fetchApi('/flows/accept', { method: 'POST' }) +export function killAll() { + return dispatch => fetchApi('/flows/kill', { method: 'POST' }) } + export function remove(flow) { return dispatch => fetchApi(`/flows/${flow.id}`, { method: 'DELETE' }) } diff --git a/web/src/js/ducks/ui/header.js b/web/src/js/ducks/ui/header.js index 25dfe602..6581149e 100644 --- a/web/src/js/ducks/ui/header.js +++ b/web/src/js/ducks/ui/header.js @@ -1,4 +1,4 @@ -import * as flowsActions from '../flows' +import * as flowsActions from "../flows" export const SET_ACTIVE_MENU = 'UI_SET_ACTIVE_MENU' @@ -19,7 +19,7 @@ export default function reducer(state = defaultState, action) { case flowsActions.SELECT: // First Select - if (action.flowIds.length && !state.isFlowSelected) { + if (action.flowIds.length > 0 && !state.isFlowSelected) { return { ...state, activeMenu: 'Flow', @@ -28,7 +28,7 @@ export default function reducer(state = defaultState, action) { } // Deselect - if (!action.flowIds.length && state.isFlowSelected) { + if (action.flowIds.length === 0 && state.isFlowSelected) { let activeMenu = state.activeMenu if (activeMenu == 'Flow') { activeMenu = 'Start' diff --git a/web/src/js/ducks/ui/keyboard.js b/web/src/js/ducks/ui/keyboard.js index 7418eca9..30fd76e1 100644 --- a/web/src/js/ducks/ui/keyboard.js +++ b/web/src/js/ducks/ui/keyboard.js @@ -1,6 +1,6 @@ -import { Key } from '../../utils' -import { selectTab } from './flow' -import * as flowsActions from '../flows' +import { Key } from "../../utils" +import { selectTab } from "./flow" +import * as flowsActions from "../flows" export function onKeyDown(e) { @@ -9,7 +9,7 @@ export function onKeyDown(e) { return () => { } } - var key = e.keyCode + var key = e.keyCode var shiftKey = e.shiftKey e.preventDefault() return (dispatch, getState) => { @@ -48,9 +48,8 @@ export function onKeyDown(e) { dispatch(flowsActions.select(null)) break - case Key.LEFT: - { - if(!flow) break + case Key.LEFT: { + if (!flow) break let tabs = ['request', 'response', 'error'].filter(k => flow[k]).concat(['details']), currentTab = getState().ui.flow.tab, nextTab = tabs[(tabs.indexOf(currentTab) - 1 + tabs.length) % tabs.length] @@ -59,9 +58,8 @@ export function onKeyDown(e) { } case Key.TAB: - case Key.RIGHT: - { - if(!flow) break + case Key.RIGHT: { + if (!flow) break let tabs = ['request', 'response', 'error'].filter(k => flow[k]).concat(['details']), currentTab = getState().ui.flow.tab, nextTab = tabs[(tabs.indexOf(currentTab) + 1) % tabs.length] @@ -69,14 +67,7 @@ export function onKeyDown(e) { break } - case Key.C: - if (shiftKey) { - dispatch(flowsActions.clear()) - } - break - - case Key.D: - { + case Key.D: { if (!flow) { return } @@ -88,32 +79,46 @@ export function onKeyDown(e) { break } - case Key.A: - { + case Key.A: { if (shiftKey) { - dispatch(flowsActions.acceptAll()) + dispatch(flowsActions.resumeAll()) } else if (flow && flow.intercepted) { - dispatch(flowsActions.accept(flow)) + dispatch(flowsActions.resume(flow)) } break } - case Key.R: - { + case Key.R: { if (!shiftKey && flow) { dispatch(flowsActions.replay(flow)) } break } - case Key.V: - { + case Key.V: { if (!shiftKey && flow && flow.modified) { dispatch(flowsActions.revert(flow)) } break } + case Key.X: { + if (shiftKey) { + dispatch(flowsActions.killAll()) + } else if (flow && flow.intercepted) { + dispatch(flowsActions.kill(flow)) + } + break + } + + case Key.Z: { + if (!shiftKey) { + dispatch(flowsActions.clear()) + } + break + } + + default: return } diff --git a/web/src/js/ducks/utils/store.js b/web/src/js/ducks/utils/store.js index 9ea4f02e..ac272650 100644 --- a/web/src/js/ducks/utils/store.js +++ b/web/src/js/ducks/utils/store.js @@ -85,6 +85,7 @@ export default function reduce(state = defaultState, action) { if (!(action.id in byId)) { break } + byId = {...byId} delete byId[action.id]; ({data: list, dataIndex: listIndex} = removeData(list, listIndex, action.id)) |