From 21b067eaffec5384abd535b3e80ec317dfab5e6d Mon Sep 17 00:00:00 2001 From: Danila Fedorin Date: Thu, 5 Aug 2021 10:05:50 -0700 Subject: [PATCH] Create new tiles instead of keeping old ones --- src/domain/session/room/ComposerViewModel.js | 16 +++++++++++++--- src/domain/session/room/RoomViewModel.js | 4 ++++ .../room/timeline/tiles/BaseMessageTile.js | 2 +- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/domain/session/room/ComposerViewModel.js b/src/domain/session/room/ComposerViewModel.js index 3ae11872..e3ed317c 100644 --- a/src/domain/session/room/ComposerViewModel.js +++ b/src/domain/session/room/ComposerViewModel.js @@ -5,13 +5,23 @@ export class ComposerViewModel extends ViewModel { super(); this._roomVM = roomVM; this._isEmpty = true; + this._replyId = null; this._replyVM = null; } - setReplyingTo(tile) { - const changed = this._replyVM !== tile; - this._replyVM = tile; + setReplyingTo(entry) { + const newId = entry?.id || null; + const changed = this._replyId !== newId; if (changed) { + this._replyId = newId; + if (this._replyVM) { + this.untrack(this._replyVM); + this._replyVM.dispose(); + } + this._replyVM = entry && this._roomVM._createTile(entry); + if (this._replyVM) { + this.track(this._replyVM); + } this.emitChange("replyViewModel"); } } diff --git a/src/domain/session/room/RoomViewModel.js b/src/domain/session/room/RoomViewModel.js index f2450743..3a420b16 100644 --- a/src/domain/session/room/RoomViewModel.js +++ b/src/domain/session/room/RoomViewModel.js @@ -160,6 +160,10 @@ export class RoomViewModel extends ViewModel { rejoinRoom() { this._room.join(); } + + _createTile(entry) { + return this._tilesCreator(entry); + } async _sendMessage(message, replyingTo) { if (!this._room.isArchived && message) { diff --git a/src/domain/session/room/timeline/tiles/BaseMessageTile.js b/src/domain/session/room/timeline/tiles/BaseMessageTile.js index eef83cb6..8e7379c6 100644 --- a/src/domain/session/room/timeline/tiles/BaseMessageTile.js +++ b/src/domain/session/room/timeline/tiles/BaseMessageTile.js @@ -107,7 +107,7 @@ export class BaseMessageTile extends SimpleTile { } startReply() { - this._roomVM.startReply(this); + this._roomVM.startReply(this._entry); } reply(msgtype, body, log = null) {