aboutsummaryrefslogtreecommitdiffstats
path: root/web/src/js/components/ContentView/ContentViews.jsx
diff options
context:
space:
mode:
authorMaximilian Hils <git@maximilianhils.com>2016-07-25 17:03:50 -0700
committerMaximilian Hils <git@maximilianhils.com>2016-07-25 17:03:50 -0700
commit70dbd1b32d13d30e15c03ee91b0fab7bfdf429b3 (patch)
tree8c15d471934ac4b2c898725a2929f30f8dc7f9dd /web/src/js/components/ContentView/ContentViews.jsx
parent79ebcb046e8669f80357a6c3046ec76c6adf49be (diff)
downloadmitmproxy-70dbd1b32d13d30e15c03ee91b0fab7bfdf429b3.tar.gz
mitmproxy-70dbd1b32d13d30e15c03ee91b0fab7bfdf429b3.tar.bz2
mitmproxy-70dbd1b32d13d30e15c03ee91b0fab7bfdf429b3.zip
web: refactor ContentLoader
Diffstat (limited to 'web/src/js/components/ContentView/ContentViews.jsx')
-rw-r--r--web/src/js/components/ContentView/ContentViews.jsx44
1 files changed, 16 insertions, 28 deletions
diff --git a/web/src/js/components/ContentView/ContentViews.jsx b/web/src/js/components/ContentView/ContentViews.jsx
index b39e545a..a1adebea 100644
--- a/web/src/js/components/ContentView/ContentViews.jsx
+++ b/web/src/js/components/ContentView/ContentViews.jsx
@@ -1,20 +1,16 @@
import React, { PropTypes } from 'react'
import ContentLoader from './ContentLoader'
-import { MessageUtils } from '../../flow/utils.js'
-import CodeEditor from '../common/CodeEditor'
+import { MessageUtils } from '../../flow/utils'
+import CodeEditor from './CodeEditor'
-const views = [ViewAuto, ViewImage, ViewJSON, ViewRaw]
-
-ViewImage.regex = /^image\/(png|jpe?g|gif|vnc.microsoft.icon|x-icon)$/i
-ViewImage.matches = msg => ViewImage.regex.test(MessageUtils.getContentType(msg))
-
+const isImage = /^image\/(png|jpe?g|gif|vnc.microsoft.icon|x-icon)$/i
+ViewImage.matches = msg => isImage.test(MessageUtils.getContentType(msg))
ViewImage.propTypes = {
flow: PropTypes.object.isRequired,
message: PropTypes.object.isRequired,
}
-
-export function ViewImage({ flow, message }) {
+function ViewImage({ flow, message }) {
return (
<div className="flowview-image">
<img src={MessageUtils.getContentURL(flow, message)} alt="preview" className="img-thumbnail"/>
@@ -22,26 +18,23 @@ export function ViewImage({ flow, message }) {
)
}
-ViewRaw.textView = true
-ViewRaw.matches = () => true
+ViewRaw.matches = () => true
ViewRaw.propTypes = {
content: React.PropTypes.string.isRequired,
}
-
-export function ViewRaw({ content, readonly, onChange }) {
+function ViewRaw({ content, readonly, onChange }) {
return readonly ? <pre>{content}</pre> : <CodeEditor content={content} onChange={onChange}/>
}
+ViewRaw = ContentLoader(ViewRaw)
-ViewJSON.textView = true
-ViewJSON.regex = /^application\/json$/i
-ViewJSON.matches = msg => ViewJSON.regex.test(MessageUtils.getContentType(msg))
+const isJSON = /^application\/json$/i
+ViewJSON.matches = msg => isJSON.test(MessageUtils.getContentType(msg))
ViewJSON.propTypes = {
content: React.PropTypes.string.isRequired,
}
-
-export function ViewJSON({ content }) {
+function ViewJSON({ content }) {
let json = content
try {
json = JSON.stringify(JSON.parse(content), null, 2);
@@ -50,23 +43,18 @@ export function ViewJSON({ content }) {
}
return <pre>{json}</pre>
}
+ViewJSON = ContentLoader(ViewJSON)
ViewAuto.matches = () => false
-ViewAuto.findView = msg => views.find(v => v.matches(msg)) || views[views.length - 1]
-
+ViewAuto.findView = msg => [ViewImage, ViewJSON, ViewRaw].find(v => v.matches(msg)) || ViewRaw
ViewAuto.propTypes = {
message: React.PropTypes.object.isRequired,
flow: React.PropTypes.object.isRequired,
}
-
-export function ViewAuto({ message, flow, readonly, onChange }) {
+function ViewAuto({ message, flow, readonly, onChange }) {
const View = ViewAuto.findView(message)
- if (View.textView) {
- return <ContentLoader message={message} flow={flow}><View readonly={readonly} onChange={onChange} content="" /></ContentLoader>
- } else {
- return <View readonly={readonly} message={message} flow={flow} />
- }
+ return <View message={message} flow={flow} readonly={readonly} onChange={onChange}/>
}
-export default views
+export { ViewImage, ViewRaw, ViewAuto, ViewJSON }