From a56c2ca731ff9c4a22438553dea0e4ecf7a51f1d Mon Sep 17 00:00:00 2001 From: Clemens Date: Fri, 29 Jul 2016 09:45:15 +0200 Subject: combine clientside and serverside contentviews --- web/src/js/components/ContentView/ContentViews.jsx | 32 ++++++---------------- web/src/js/components/ContentView/ViewSelector.jsx | 24 ++++++---------- 2 files changed, 18 insertions(+), 38 deletions(-) (limited to 'web/src/js/components/ContentView') 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 ?
{content}
: -} -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 +function Edit({ content, onChange }) { + return } +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
{contentView != data.description && @@ -59,14 +47,12 @@ function ViewServer({content, contentView, message, flow}){
)} - {showImage && -
- preview -
+ {ViewImage.matches(message) && + } } 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 (
- {Object.keys(ContentViews).map(name => - name === "ViewRaw" && - {name.toLowerCase().replace('view', '')} - )} - {contentViews.map(name => - {name.toLowerCase().replace('view', '')} + {name.toLowerCase().replace('_', ' ')} )} + {isEdit && + {edit.toLowerCase()} + } +
) } export default connect ( state => ({ - contentViews: state.settings.contentViews + contentViews: state.settings.contentViews, + isEdit: !!state.ui.flow.modifiedFlow, }))(ViewSelector) -- cgit v1.2.3