aboutsummaryrefslogtreecommitdiffstats
path: root/web/src/js/components
diff options
context:
space:
mode:
authorClemens <cle1000.cb@gmail.com>2016-07-29 09:45:15 +0200
committerClemens <cle1000.cb@gmail.com>2016-07-29 09:45:15 +0200
commita56c2ca731ff9c4a22438553dea0e4ecf7a51f1d (patch)
tree81b95677e89f69dd36a17c8a68feb636e2da8c23 /web/src/js/components
parent2807329fb2ce576ae529afd991e3da3d5f81d637 (diff)
downloadmitmproxy-a56c2ca731ff9c4a22438553dea0e4ecf7a51f1d.tar.gz
mitmproxy-a56c2ca731ff9c4a22438553dea0e4ecf7a51f1d.tar.bz2
mitmproxy-a56c2ca731ff9c4a22438553dea0e4ecf7a51f1d.zip
combine clientside and serverside contentviews
Diffstat (limited to 'web/src/js/components')
-rw-r--r--web/src/js/components/ContentView/ContentViews.jsx32
-rw-r--r--web/src/js/components/ContentView/ViewSelector.jsx24
2 files changed, 18 insertions, 38 deletions
diff --git a/web/src/js/components/ContentView/ContentViews.jsx b/web/src/js/components/ContentView/ContentViews.jsx
index a1bee54e..3b2af0a9 100644
--- a/web/src/js/components/ContentView/ContentViews.jsx
+++ b/web/src/js/components/ContentView/ContentViews.jsx
@@ -18,31 +18,19 @@ function ViewImage({ flow, message }) {
)
}
-
-ViewRaw.matches = () => true
-ViewRaw.propTypes = {
+Edit.propTypes = {
content: React.PropTypes.string.isRequired,
}
-function ViewRaw({ content, readonly, onChange }) {
- return readonly ? <pre>{content}</pre> : <CodeEditor content={content} onChange={onChange}/>
-}
-ViewRaw = ContentLoader(ViewRaw)
-ViewAuto.matches = () => false
-ViewAuto.findView = msg => [ViewImage, ViewRaw].find(v => v.matches(msg)) || ViewRaw
-ViewAuto.propTypes = {
- message: React.PropTypes.object.isRequired,
- flow: React.PropTypes.object.isRequired,
-}
-function ViewAuto({ message, flow, readonly, onChange }) {
- const View = ViewAuto.findView(message)
- return <View message={message} flow={flow} readonly={readonly} onChange={onChange}/>
+function Edit({ content, onChange }) {
+ return <CodeEditor content={content} onChange={onChange}/>
}
+Edit = ContentLoader(Edit)
-function ViewServer({content, contentView, message, flow}){
+function ViewServer(props){
+ const {content, contentView, message} = props
let data = JSON.parse(content)
- let showImage = isImage.test(MessageUtils.getContentType(message))
return <div>
{contentView != data.description &&
@@ -59,14 +47,12 @@ function ViewServer({content, contentView, message, flow}){
</div>
)}
</pre>
- {showImage &&
- <div className="flowview-image">
- <img src={MessageUtils.getContentURL(flow, message)} alt="preview" className="img-thumbnail"/>
- </div>
+ {ViewImage.matches(message) &&
+ <ViewImage {...props} />
}
</div>
}
ViewServer = ContentLoader(ViewServer)
-export { ViewImage, ViewRaw, ViewAuto, ViewServer }
+export { Edit, ViewServer, ViewImage }
diff --git a/web/src/js/components/ContentView/ViewSelector.jsx b/web/src/js/components/ContentView/ViewSelector.jsx
index e031b51f..c5670328 100644
--- a/web/src/js/components/ContentView/ViewSelector.jsx
+++ b/web/src/js/components/ContentView/ViewSelector.jsx
@@ -24,31 +24,25 @@ ViewButton = connect(state => ({
ViewSelector.propTypes = {
message: PropTypes.object.isRequired,
}
-function ViewSelector({ message, contentViews }) {
-
- let autoView = ContentViews.ViewAuto.findView(message)
- let autoViewName = (autoView.displayName || autoView.name)
- .toLowerCase()
- .replace('view', '')
- .replace(/ContentLoader\((.+)\)/,"$1")
-
+function ViewSelector({contentViews, isEdit }) {
+ let edit = ContentViews.Edit.displayName
return (
<div className="view-selector btn-group btn-group-xs">
- {Object.keys(ContentViews).map(name =>
- name === "ViewRaw" &&
- <ViewButton key={name} name={name}>{name.toLowerCase().replace('view', '')}</ViewButton>
- )}
-
{contentViews.map(name =>
- <ViewButton key={name} name={name}>{name.toLowerCase().replace('view', '')}</ViewButton>
+ <ViewButton key={name} name={name}>{name.toLowerCase().replace('_', ' ')}</ViewButton>
)}
+ {isEdit &&
+ <ViewButton key={edit} name={edit}>{edit.toLowerCase()}</ViewButton>
+ }
+
</div>
)
}
export default connect (
state => ({
- contentViews: state.settings.contentViews
+ contentViews: state.settings.contentViews,
+ isEdit: !!state.ui.flow.modifiedFlow,
}))(ViewSelector)