From 54004eef4d4b695a44399e631a3713b7b0319608 Mon Sep 17 00:00:00 2001 From: RMidhunSuresh Date: Wed, 15 Dec 2021 17:46:14 +0530 Subject: [PATCH] Integrate into update mechanism --- .../session/room/timeline/TilesCollection.js | 2 +- .../room/timeline/tiles/BaseMessageTile.js | 4 ++-- .../session/room/timeline/tiles/SimpleTile.js | 14 ++++++++++++- .../session/room/timeline/tiles/TextTile.js | 20 +------------------ .../session/room/timeline/ReplyPreviewView.js | 2 +- 5 files changed, 18 insertions(+), 24 deletions(-) diff --git a/src/domain/session/room/timeline/TilesCollection.js b/src/domain/session/room/timeline/TilesCollection.js index 54ab5ddd..33ae4472 100644 --- a/src/domain/session/room/timeline/TilesCollection.js +++ b/src/domain/session/room/timeline/TilesCollection.js @@ -150,7 +150,7 @@ export class TilesCollection extends BaseObservableList { const tileIdx = this._findTileIdx(entry); const tile = this._findTileAtIdx(entry, tileIdx); if (tile) { - const action = tile.updateEntry(entry, params); + const action = tile.updateEntry(entry, params, this._tileCreator); if (action.shouldReplace) { const newTile = this._tileCreator(entry); if (newTile) { diff --git a/src/domain/session/room/timeline/tiles/BaseMessageTile.js b/src/domain/session/room/timeline/tiles/BaseMessageTile.js index 25dbfa38..63f92056 100644 --- a/src/domain/session/room/timeline/tiles/BaseMessageTile.js +++ b/src/domain/session/room/timeline/tiles/BaseMessageTile.js @@ -102,8 +102,8 @@ export class BaseMessageTile extends SimpleTile { } } - updateEntry(entry, param) { - const action = super.updateEntry(entry, param); + updateEntry(entry, param, tileCreator) { + const action = super.updateEntry(entry, param, tileCreator); if (action.shouldUpdate) { this._updateReactions(); } diff --git a/src/domain/session/room/timeline/tiles/SimpleTile.js b/src/domain/session/room/timeline/tiles/SimpleTile.js index 4c1c1de0..fabf7bf4 100644 --- a/src/domain/session/room/timeline/tiles/SimpleTile.js +++ b/src/domain/session/room/timeline/tiles/SimpleTile.js @@ -52,6 +52,10 @@ export class SimpleTile extends ViewModel { return this._entry.isPending && this._entry.pendingEvent.status !== SendStatus.Sent; } + get isRedacted() { + return this._entry.isRedacted; + } + get canAbortSending() { return this._entry.isPending && !this._entry.pendingEvent.hasStartedSending; @@ -92,7 +96,15 @@ export class SimpleTile extends ViewModel { } // update received for already included (falls within sort keys) entry - updateEntry(entry, param) { + updateEntry(entry, param, tileCreator) { + const replyEntry = param?.reply ?? entry.contextEntry; + if (replyEntry) { + // this is an update to contextEntry used for replyPreview + const action = this._replyTextTile?.updateEntry(replyEntry); + if (action?.shouldReplace) { + this._replyTextTile = tileCreator(replyEntry); + } + } const renderedAsRedacted = this.shape === "redacted"; if (!entry.isGap && entry.isRedacted !== renderedAsRedacted) { // recreate the tile if the entry becomes redacted diff --git a/src/domain/session/room/timeline/tiles/TextTile.js b/src/domain/session/room/timeline/tiles/TextTile.js index acd904a4..255e27fb 100644 --- a/src/domain/session/room/timeline/tiles/TextTile.js +++ b/src/domain/session/room/timeline/tiles/TextTile.js @@ -73,27 +73,9 @@ export class TextTile extends BaseTextTile { if (!this._replyTextTile) { const entry = this._entry.contextEntry; if (entry) { - this._replyTextTile = new ReplyPreviewTile(this.childOptions({entry, roomVM: this._roomVM, timeline: this._timeline})); + this._replyTextTile = new TextTile(this.childOptions({entry, roomVM: this._roomVM, timeline: this._timeline})); } } return this._replyTextTile; } } - -class ReplyPreviewTile extends TextTile { - constructor(options) { - super(options); - } - - get isRedacted() { - return this._entry.isRedacted; - } - - get decryptionError() { - return this._entry.decryptionError; - } - - get hasError() { - return this.isRedacted || !!this.decryptionError; - } -} diff --git a/src/platform/web/ui/session/room/timeline/ReplyPreviewView.js b/src/platform/web/ui/session/room/timeline/ReplyPreviewView.js index 3837bf1e..15a69c3e 100644 --- a/src/platform/web/ui/session/room/timeline/ReplyPreviewView.js +++ b/src/platform/web/ui/session/room/timeline/ReplyPreviewView.js @@ -26,7 +26,7 @@ export class ReplyPreviewView extends TemplateView { while (replyContainer.lastChild) { replyContainer.removeChild(replyContainer.lastChild); } - replyContainer.appendChild(vm.hasError? this._renderError(vm) : this._renderReplyPreview(vm)); + replyContainer.appendChild(vm.isRedacted? this._renderError(vm) : this._renderReplyPreview(vm)); }) return replyContainer; }