diff options
-rw-r--r-- | mitmproxy/web/static/app.js | 58 | ||||
-rw-r--r-- | web/src/js/components/Header.js | 28 | ||||
-rw-r--r-- | web/src/js/ducks/flows.js | 9 | ||||
-rw-r--r-- | web/src/js/ducks/utils/view.js | 2 | ||||
-rw-r--r-- | web/src/js/ducks/view.js | 11 |
5 files changed, 67 insertions, 41 deletions
diff --git a/mitmproxy/web/static/app.js b/mitmproxy/web/static/app.js index a1354a7d..40c170a3 100644 --- a/mitmproxy/web/static/app.js +++ b/mitmproxy/web/static/app.js @@ -1355,6 +1355,8 @@ var _view = require('../ducks/view'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } @@ -1390,6 +1392,14 @@ var Header = function (_Component) { var selectedFlow = _props.selectedFlow; var active_menu = _props.active_menu; + + var entries = [].concat(_toConsumableArray(Header.entries)); + if (selectedFlow) entries.push(_FlowMenu2.default); + + var Active = _.find(entries, function (e) { + return e.title == active_menu; + }); + return _react2.default.createElement( 'header', null, @@ -1397,12 +1407,12 @@ var Header = function (_Component) { 'nav', { className: 'nav-tabs nav-tabs-lg' }, _react2.default.createElement(_FileMenu2.default, null), - Header.entries.map(function (Entry) { + entries.map(function (Entry) { return _react2.default.createElement( 'a', { key: Entry.title, href: '#', - className: (0, _classnames2.default)({ active: Entry.title === active_menu, hidden: !selectedFlow && Entry === _FlowMenu2.default }), + className: (0, _classnames2.default)({ active: Entry === Active }), onClick: function onClick(e) { return _this2.handleClick(Entry, e); } }, @@ -1413,16 +1423,10 @@ var Header = function (_Component) { _react2.default.createElement( 'div', { className: 'menu' }, - Header.entries.map(function (Entry) { - return _react2.default.createElement( - 'div', - { className: (0, _classnames2.default)({ hidden: Entry.title !== active_menu }) }, - _react2.default.createElement(Entry, { - settings: settings, - updateLocation: updateLocation, - query: query - }) - ); + _react2.default.createElement(Active, { + settings: settings, + updateLocation: updateLocation, + query: query }) ) ); @@ -1432,7 +1436,7 @@ var Header = function (_Component) { return Header; }(_react.Component); -Header.entries = [_MainMenu2.default, _ViewMenu2.default, _OptionMenu2.default, _FlowMenu2.default]; +Header.entries = [_MainMenu2.default, _ViewMenu2.default, _OptionMenu2.default]; Header.propTypes = { settings: _react.PropTypes.object.isRequired }; @@ -5078,9 +5082,12 @@ function setSort(sort) { }; } function selectFlow(flowId) { - return { - type: SELECT_FLOW, - flowId: flowId + return function (dispatch, getState) { + dispatch({ + type: SELECT_FLOW, + currentSelection: getState().flows.selected[0], + flowId: flowId + }); }; } @@ -5492,7 +5499,7 @@ function updateViewFilter(list) { function updateViewSort(list) { var sortFn = arguments.length <= 1 || arguments[1] === undefined ? defaultSortFn : arguments[1]; - var sorted = list.slice(0); + var sorted = [].concat(_toConsumableArray(list)); if (sortFn) { sorted.sort(makeCompareFn(sortFn)); } @@ -5515,8 +5522,14 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < argument exports.default = reducer; exports.setActiveMenu = setActiveMenu; +var _reduxThunk = require('redux-thunk'); + +var _reduxThunk2 = _interopRequireDefault(_reduxThunk); + var _flows = require('./flows'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + var ACTIVE_MENU = 'ACTIVE_MENU'; var defaultState = { @@ -5532,9 +5545,12 @@ function reducer() { active_menu: action.active_menu }); case _flows.SELECT_FLOW: - return _extends({}, state, { - active_menu: action.flowId ? 'Flow' : 'Start' - }); + if (!action.currentSelection != !action.flowId) { + return _extends({}, state, { + active_menu: action.flowId ? 'Flow' : state.active_menu == 'Flow' ? 'Start' : state.active_menu + }); + } + return state; default: return state; } @@ -5547,7 +5563,7 @@ function setActiveMenu(active_menu) { }; } -},{"./flows":34}],39:[function(require,module,exports){ +},{"./flows":34,"redux-thunk":"redux-thunk"}],39:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { diff --git a/web/src/js/components/Header.js b/web/src/js/components/Header.js index f0cd3dcd..080f438a 100644 --- a/web/src/js/components/Header.js +++ b/web/src/js/components/Header.js @@ -11,8 +11,7 @@ import FlowMenu from './Header/FlowMenu' import {setActiveMenu} from '../ducks/view' class Header extends Component { - - static entries = [MainMenu, ViewMenu, OptionMenu, FlowMenu] + static entries = [MainMenu, ViewMenu, OptionMenu] static propTypes = { settings: PropTypes.object.isRequired, @@ -27,29 +26,32 @@ class Header extends Component { render() { const { settings, updateLocation, query, selectedFlow, active_menu} = this.props + + let entries = [...Header.entries] + if(selectedFlow) + entries.push(FlowMenu) + + const Active = _.find(entries, (e) => e.title == active_menu) + return ( <header> <nav className="nav-tabs nav-tabs-lg"> <FileMenu/> - {Header.entries.map(Entry => ( + {entries.map(Entry => ( <a key={Entry.title} href="#" - className={classnames({ active: Entry.title === active_menu, hidden: !selectedFlow && Entry === FlowMenu })} + className={classnames({ active: Entry === Active})} onClick={e => this.handleClick(Entry, e)}> {Entry.title} </a> ))} </nav> <div className="menu"> - {Header.entries.map(Entry => ( - <div className={classnames({ hidden: Entry.title !== active_menu })}> - <Entry - settings={settings} - updateLocation={updateLocation} - query={query} - /> - </div> - ))} + <Active + settings={settings} + updateLocation={updateLocation} + query={query} + /> </div> </header> ) diff --git a/web/src/js/ducks/flows.js b/web/src/js/ducks/flows.js index f7a5538a..b877d3e4 100644 --- a/web/src/js/ducks/flows.js +++ b/web/src/js/ducks/flows.js @@ -101,9 +101,12 @@ export function setSort(sort){ } } export function selectFlow(flowId) { - return { - type: SELECT_FLOW, - flowId + return (dispatch, getState) => { + dispatch({ + type: SELECT_FLOW, + currentSelection: getState().flows.selected[0], + flowId + }) } } diff --git a/web/src/js/ducks/utils/view.js b/web/src/js/ducks/utils/view.js index 2d23a39c..01d57b17 100644 --- a/web/src/js/ducks/utils/view.js +++ b/web/src/js/ducks/utils/view.js @@ -124,7 +124,7 @@ export function updateViewFilter(list, filterFn = defaultFilterFn, sortFn = defa } export function updateViewSort(list, sortFn = defaultSortFn) { - let sorted = list.slice(0) + let sorted = [...list] if (sortFn) { sorted.sort(makeCompareFn(sortFn)) } diff --git a/web/src/js/ducks/view.js b/web/src/js/ducks/view.js index 2b6fe67d..b56561d0 100644 --- a/web/src/js/ducks/view.js +++ b/web/src/js/ducks/view.js @@ -1,3 +1,5 @@ +import ReduxThunk from 'redux-thunk' + import { SELECT_FLOW } from './flows' const ACTIVE_MENU = 'ACTIVE_MENU' @@ -13,10 +15,13 @@ export default function reducer(state = defaultState, action) { active_menu: action.active_menu } case SELECT_FLOW: - return{ - ...state, - active_menu: action.flowId ? 'Flow' : 'Start' + if (!action.currentSelection != !action.flowId){ + return{ + ...state, + active_menu: action.flowId ? 'Flow' : (state.active_menu == 'Flow' ? 'Start' : state.active_menu) + } } + return state default: return state } |