aboutsummaryrefslogtreecommitdiffstats
path: root/web
diff options
context:
space:
mode:
authorMaximilian Hils <git@maximilianhils.com>2016-07-25 15:16:16 -0700
committerMaximilian Hils <git@maximilianhils.com>2016-07-25 15:16:16 -0700
commit79ebcb046e8669f80357a6c3046ec76c6adf49be (patch)
tree441981a16f1be1e620584e4a47f41767ce5585b2 /web
parent3254595584e1d711e7ae292ad34753a52f7a0fc1 (diff)
parent56796aeda25dda66621ce78af227ff46049ef811 (diff)
downloadmitmproxy-79ebcb046e8669f80357a6c3046ec76c6adf49be.tar.gz
mitmproxy-79ebcb046e8669f80357a6c3046ec76c6adf49be.tar.bz2
mitmproxy-79ebcb046e8669f80357a6c3046ec76c6adf49be.zip
Merge remote-tracking branch 'origin/master' into flow_editing_v2
Diffstat (limited to 'web')
-rw-r--r--web/src/js/components/FlowTable/FlowRow.jsx7
-rw-r--r--web/src/js/components/MainView.jsx2
-rw-r--r--web/src/js/utils.js26
3 files changed, 26 insertions, 9 deletions
diff --git a/web/src/js/components/FlowTable/FlowRow.jsx b/web/src/js/components/FlowTable/FlowRow.jsx
index 749bc0ce..7961d502 100644
--- a/web/src/js/components/FlowTable/FlowRow.jsx
+++ b/web/src/js/components/FlowTable/FlowRow.jsx
@@ -1,6 +1,7 @@
import React, { PropTypes } from 'react'
import classnames from 'classnames'
import columns from './FlowColumns'
+import { pure } from '../../utils'
FlowRow.propTypes = {
onSelect: PropTypes.func.isRequired,
@@ -9,7 +10,7 @@ FlowRow.propTypes = {
selected: PropTypes.bool,
}
-export default function FlowRow({ flow, selected, highlighted, onSelect }) {
+function FlowRow({ flow, selected, highlighted, onSelect }) {
const className = classnames({
'selected': selected,
'highlighted': highlighted,
@@ -19,10 +20,12 @@ export default function FlowRow({ flow, selected, highlighted, onSelect }) {
})
return (
- <tr className={className} onClick={() => onSelect(flow)}>
+ <tr className={className} onClick={() => onSelect(flow.id)}>
{columns.map(Column => (
<Column key={Column.name} flow={flow}/>
))}
</tr>
)
}
+
+export default pure(FlowRow)
diff --git a/web/src/js/components/MainView.jsx b/web/src/js/components/MainView.jsx
index d7d1ebeb..f45f9eef 100644
--- a/web/src/js/components/MainView.jsx
+++ b/web/src/js/components/MainView.jsx
@@ -22,7 +22,7 @@ class MainView extends Component {
flows={flows}
selected={selectedFlow}
highlight={highlight}
- onSelect={flow => this.props.selectFlow(flow.id)}
+ onSelect={this.props.selectFlow}
/>
{selectedFlow && [
<Splitter key="splitter"/>,
diff --git a/web/src/js/utils.js b/web/src/js/utils.js
index d3b99bd0..cc17c565 100644
--- a/web/src/js/utils.js
+++ b/web/src/js/utils.js
@@ -1,7 +1,9 @@
-import _ from "lodash";
+import _ from 'lodash'
+import React from 'react'
+import shallowEqual from 'shallowequal'
window._ = _;
-window.React = require("react");
+window.React = React;
export var Key = {
UP: 38,
@@ -106,15 +108,27 @@ fetchApi.put = (url, json, options) => fetchApi(
}
)
-
export function getDiff(obj1, obj2) {
let result = {...obj2};
for(let key in obj1) {
if(_.isEqual(obj2[key], obj1[key]))
- result[key] = undefined;
+ result[key] = undefined
else if(!(Array.isArray(obj2[key]) && Array.isArray(obj1[key])) &&
typeof obj2[key] == 'object' && typeof obj1[key] == 'object')
- result[key] = getDiff(obj1[key], obj2[key]);
+ result[key] = getDiff(obj1[key], obj2[key])
+ }
+ return result
+}
+
+export const pure = renderFn => class extends React.Component {
+ static displayName = renderFn.name
+
+ shouldComponentUpdate(nextProps) {
+ console.log(!shallowEqual(this.props, nextProps))
+ return !shallowEqual(this.props, nextProps)
+ }
+
+ render() {
+ return renderFn(this.props)
}
- return result;
}