]> cat aescling's git repositories - mastodon.git/commitdiff
ComposerReply → ReplyIndicator
authorThibaut Girka <thib@sitedethib.com>
Sat, 20 Apr 2019 20:21:28 +0000 (22:21 +0200)
committerThibG <thib@sitedethib.com>
Mon, 22 Apr 2019 18:15:47 +0000 (20:15 +0200)
app/javascript/flavours/glitch/features/compose/components/compose_form.js
app/javascript/flavours/glitch/features/compose/components/reply_indicator.js [moved from app/javascript/flavours/glitch/features/composer/reply/index.js with 70% similarity]
app/javascript/flavours/glitch/features/compose/containers/compose_form_container.js
app/javascript/flavours/glitch/features/compose/containers/reply_indicator_container.js [new file with mode: 0644]

index 1f37a1da592369f4ead6ab3d6e48dfa90bef3825..10b51d920af171d9ea61b86ff88dd67fd2a32e12 100644 (file)
@@ -7,12 +7,12 @@ import ImmutablePureComponent from 'react-immutable-pure-component';
 //  Components.
 import ComposerOptions from '../../composer/options';
 import ComposerPublisher from '../../composer/publisher';
-import ComposerReply from '../../composer/reply';
 import ComposerSpoiler from '../../composer/spoiler';
 import ComposerTextarea from '../../composer/textarea';
 import ComposerUploadForm from '../../composer/upload_form';
 import ComposerPollForm from '../../composer/poll_form';
 import WarningContainer from '../containers/warning_container';
+import ReplyIndicatorContainer from '../containers/reply_indicator_container';
 
 //  Utils.
 import { countableText } from 'flavours/glitch/util/counter';
@@ -49,7 +49,6 @@ class ComposeForm extends ImmutablePureComponent {
     preselectDate: PropTypes.instanceOf(Date),
     privacy: PropTypes.string,
     progress: PropTypes.number,
-    inReplyTo: ImmutablePropTypes.map,
     resetFileKey: PropTypes.number,
     sideArm: PropTypes.string,
     sensitive: PropTypes.bool,
@@ -65,7 +64,6 @@ class ComposeForm extends ImmutablePureComponent {
     preselectOnReply: PropTypes.bool,
 
     //  Dispatch props.
-    onCancelReply: PropTypes.func,
     onChangeAdvancedOption: PropTypes.func,
     onChangeDescription: PropTypes.func,
     onChangeSensitivity: PropTypes.func,
@@ -283,7 +281,6 @@ class ComposeForm extends ImmutablePureComponent {
       layout,
       media,
       poll,
-      onCancelReply,
       onChangeAdvancedOption,
       onChangeDescription,
       onChangeSensitivity,
@@ -301,7 +298,6 @@ class ComposeForm extends ImmutablePureComponent {
       onUpload,
       privacy,
       progress,
-      inReplyTo,
       resetFileKey,
       sensitive,
       showSearch,
@@ -319,13 +315,7 @@ class ComposeForm extends ImmutablePureComponent {
       <div className='composer'>
         <WarningContainer />
 
-        {inReplyTo && (
-          <ComposerReply
-            status={inReplyTo}
-            intl={intl}
-            onCancel={onCancelReply}
-          />
-        )}
+        <ReplyIndicatorContainer />
 
         <ComposerSpoiler
           hidden={!spoiler}
similarity index 70%
rename from app/javascript/flavours/glitch/features/composer/reply/index.js
rename to app/javascript/flavours/glitch/features/compose/components/reply_indicator.js
index 56e9e96a5466813c5447ede3bdb170e27dc99a1f..f96ea4c5edda3cddba2ef3166a59cf666b33709a 100644 (file)
@@ -2,7 +2,8 @@
 import PropTypes from 'prop-types';
 import React from 'react';
 import ImmutablePropTypes from 'react-immutable-proptypes';
-import { defineMessages } from 'react-intl';
+import { defineMessages, injectIntl } from 'react-intl';
+import ImmutablePureComponent from 'react-immutable-pure-component';
 
 //  Components.
 import AccountContainer from 'flavours/glitch/containers/account_container';
@@ -10,7 +11,6 @@ import IconButton from 'flavours/glitch/components/icon_button';
 import AttachmentList from 'flavours/glitch/components/attachment_list';
 
 //  Utils.
-import { assignHandlers } from 'flavours/glitch/util/react_helpers';
 import { isRtl } from 'flavours/glitch/util/rtl';
 
 //  Messages.
@@ -21,34 +21,30 @@ const messages = defineMessages({
   },
 });
 
-//  Handlers.
-const handlers = {
 
-  //  Handles a click on the "close" button.
-  handleClick () {
+export default @injectIntl
+class ReplyIndicator extends ImmutablePureComponent {
+
+  static propTypes = {
+    status: ImmutablePropTypes.map.isRequired,
+    intl: PropTypes.object.isRequired,
+    onCancel: PropTypes.func,
+  };
+
+  handleClick = () => {
     const { onCancel } = this.props;
     if (onCancel) {
       onCancel();
     }
-  },
-};
-
-//  The component.
-export default class ComposerReply extends React.PureComponent {
-
-  //  Constructor.
-  constructor (props) {
-    super(props);
-    assignHandlers(this, handlers);
   }
 
   //  Rendering.
   render () {
-    const { handleClick } = this.handlers;
-    const {
-      status,
-      intl,
-    } = this.props;
+    const { status, intl } = this.props;
+
+    if (!status) {
+      return null;
+    }
 
     const account     = status.get('account');
     const content     = status.get('content');
@@ -61,7 +57,7 @@ export default class ComposerReply extends React.PureComponent {
           <IconButton
             className='cancel'
             icon='times'
-            onClick={handleClick}
+            onClick={this.handleClick}
             title={intl.formatMessage(messages.cancel)}
             inverted
           />
@@ -88,9 +84,3 @@ export default class ComposerReply extends React.PureComponent {
   }
 
 }
-
-ComposerReply.propTypes = {
-  status: ImmutablePropTypes.map.isRequired,
-  intl: PropTypes.object.isRequired,
-  onCancel: PropTypes.func,
-};
index 18fc31dcebb1b4d3708e3f7b06cbafc3e7596816..3293cc22670faf0c830b074375cfb960db6ee1b9 100644 (file)
@@ -1,7 +1,6 @@
 import { connect } from 'react-redux';
 import ComposeForm from '../components/compose_form';
 import {
-  cancelReplyCompose,
   changeCompose,
   changeComposeAdvancedOption,
   changeComposeSensitivity,
@@ -68,9 +67,6 @@ function mapStateToProps (state) {
     preselectDate: state.getIn(['compose', 'preselectDate']),
     privacy: state.getIn(['compose', 'privacy']),
     progress: state.getIn(['compose', 'progress']),
-    inReplyTo: inReplyTo ? state.getIn(['statuses', inReplyTo]) : null,
-    replyAccount: inReplyTo ? state.getIn(['statuses', inReplyTo, 'account']) : null,
-    replyContent: inReplyTo ? state.getIn(['statuses', inReplyTo, 'contentHtml']) : null,
     resetFileKey: state.getIn(['compose', 'resetFileKey']),
     sideArm: sideArmPrivacy,
     sensitive: state.getIn(['compose', 'sensitive']),
@@ -90,9 +86,6 @@ function mapStateToProps (state) {
 
 //  Dispatch mapping.
 const mapDispatchToProps = (dispatch, { intl }) => ({
-  onCancelReply() {
-    dispatch(cancelReplyCompose());
-  },
   onChangeAdvancedOption(option, value) {
     dispatch(changeComposeAdvancedOption(option, value));
   },
diff --git a/app/javascript/flavours/glitch/features/compose/containers/reply_indicator_container.js b/app/javascript/flavours/glitch/features/compose/containers/reply_indicator_container.js
new file mode 100644 (file)
index 0000000..395a9aa
--- /dev/null
@@ -0,0 +1,22 @@
+import { connect } from 'react-redux';
+import { cancelReplyCompose } from 'flavours/glitch/actions/compose';
+import { makeGetStatus } from 'flavours/glitch/selectors';
+import ReplyIndicator from '../components/reply_indicator';
+
+function makeMapStateToProps (state) {
+  const inReplyTo = state.getIn(['compose', 'in_reply_to']);
+
+  return {
+    status: inReplyTo ? state.getIn(['statuses', inReplyTo]) : null,
+  };
+};
+
+const mapDispatchToProps = dispatch => ({
+
+  onCancel () {
+    dispatch(cancelReplyCompose());
+  },
+
+});
+
+export default connect(makeMapStateToProps, mapDispatchToProps)(ReplyIndicator);