From 98bc0d24f429b524998119215bae012ae7727572 Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Thu, 1 Aug 2019 11:26:20 +0200 Subject: [PATCH] push changes to history manager --- src/components/views/elements/MessageEditor.js | 9 ++++++--- src/editor/model.js | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/components/views/elements/MessageEditor.js b/src/components/views/elements/MessageEditor.js index a121f3384e..bdbbcba026 100644 --- a/src/components/views/elements/MessageEditor.js +++ b/src/components/views/elements/MessageEditor.js @@ -20,6 +20,7 @@ import {_t} from '../../../languageHandler'; import PropTypes from 'prop-types'; import dis from '../../../dispatcher'; import EditorModel from '../../../editor/model'; +import HistoryManager from '../../../editor/history'; import {setCaretPosition} from '../../../editor/caret'; import {getCaretOffsetAndText} from '../../../editor/dom'; import {htmlSerializeIfNeeded, textSerialize} from '../../../editor/serialize'; @@ -134,7 +135,7 @@ export default class MessageEditor extends React.Component { return this.context.matrixClient.getRoom(this.props.editState.getEvent().getRoomId()); } - _updateEditorState = (caret) => { + _updateEditorState = (caret, inputType, diff) => { renderModel(this._editorRef, this.model); if (caret) { try { @@ -144,6 +145,7 @@ export default class MessageEditor extends React.Component { } } this.setState({autoComplete: this.model.autoComplete}); + this.historyManager.tryPush(this.model, caret, inputType, diff); } _onInput = (event) => { @@ -288,7 +290,7 @@ export default class MessageEditor extends React.Component { } componentDidMount() { - this.model = this._createEditorModel(); + this._createEditorModel(); // initial render of model this._updateEditorState(); // initial caret position @@ -317,7 +319,8 @@ export default class MessageEditor extends React.Component { parts = parseEvent(editState.getEvent(), partCreator); } - return new EditorModel( + this.historyManager = new HistoryManager(partCreator); + this.model = new EditorModel( parts, partCreator, this._updateEditorState, diff --git a/src/editor/model.js b/src/editor/model.js index 530aeef0b2..e1640c31ca 100644 --- a/src/editor/model.js +++ b/src/editor/model.js @@ -107,7 +107,7 @@ export default class EditorModel { const caretOffset = diff.at - removedOffsetDecrease + addedLen; const newPosition = this.positionForOffset(caretOffset, true); this._setActivePart(newPosition, canOpenAutoComplete); - this._updateCallback(newPosition); + this._updateCallback(newPosition, inputType, diff); } _setActivePart(pos, canOpenAutoComplete) {