Fix caret position after inserting suggestions (fixes #281)

This commit is contained in:
Thibaut Girka
2018-05-22 21:09:07 +02:00
parent d8793e1bee
commit 18d9a7fd71
2 changed files with 12 additions and 7 deletions

View File

@@ -56,6 +56,7 @@ function mapStateToProps (state) {
advancedOptions: state.getIn(['compose', 'advanced_options']),
amUnlocked: !state.getIn(['accounts', me, 'locked']),
focusDate: state.getIn(['compose', 'focusDate']),
caretPosition: state.getIn(['compose', 'caretPosition']),
isSubmitting: state.getIn(['compose', 'is_submitting']),
isUploading: state.getIn(['compose', 'is_uploading']),
layout: state.getIn(['local_settings', 'layout']),
@@ -117,7 +118,6 @@ const handlers = {
handleEmoji (data) {
const { textarea: { selectionStart } } = this;
const { onInsertEmoji } = this.props;
this.caretPos = selectionStart + data.native.length + 1;
if (onInsertEmoji) {
onInsertEmoji(selectionStart, data);
}
@@ -139,7 +139,6 @@ const handlers = {
// Selects a suggestion from the autofill.
handleSelect (tokenStart, token, value) {
const { onSelectSuggestion } = this.props;
this.caretPos = null;
if (onSelectSuggestion) {
onSelectSuggestion(tokenStart, token, value);
}
@@ -191,7 +190,6 @@ class Composer extends React.Component {
assignHandlers(this, handlers);
// Instance variables.
this.caretPos = null;
this.textarea = null;
}
@@ -220,11 +218,11 @@ class Composer extends React.Component {
// everyone else from the conversation.
componentDidUpdate (prevProps) {
const {
caretPos,
textarea,
} = this;
const {
focusDate,
caretPosition,
isSubmitting,
preselectDate,
text,
@@ -238,8 +236,8 @@ class Composer extends React.Component {
selectionStart = text.search(/\s/) + 1;
selectionEnd = text.length;
break;
case !isNaN(caretPos) && caretPos !== null:
selectionStart = selectionEnd = caretPos;
case !isNaN(caretPosition) && caretPosition !== null:
selectionStart = selectionEnd = caretPosition;
break;
default:
selectionStart = selectionEnd = text.length;
@@ -396,6 +394,7 @@ Composer.propTypes = {
advancedOptions: ImmutablePropTypes.map,
amUnlocked: PropTypes.bool,
focusDate: PropTypes.instanceOf(Date),
caretPosition: PropTypes.number,
isSubmitting: PropTypes.bool,
isUploading: PropTypes.bool,
layout: PropTypes.string,