aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mitmproxy/web/static/app.js58
-rw-r--r--web/src/js/components/Header.js28
-rw-r--r--web/src/js/ducks/flows.js9
-rw-r--r--web/src/js/ducks/utils/view.js2
-rw-r--r--web/src/js/ducks/view.js11
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
}