diff --git a/src/domain/session/room/timeline/tiles/BaseMessageTile.js b/src/domain/session/room/timeline/tiles/BaseMessageTile.js index 6dee5fc2..b59dfa3a 100644 --- a/src/domain/session/room/timeline/tiles/BaseMessageTile.js +++ b/src/domain/session/room/timeline/tiles/BaseMessageTile.js @@ -91,6 +91,10 @@ export class BaseMessageTile extends SimpleTile { return this._entry.isUnverified; } + get isReply() { + return this._entry.isReply; + } + _getContent() { return this._entry.content; } diff --git a/src/platform/web/ui/session/room/timeline/ReplyPreviewView.js b/src/platform/web/ui/session/room/timeline/ReplyPreviewView.js index d2693238..5342f24a 100644 --- a/src/platform/web/ui/session/room/timeline/ReplyPreviewView.js +++ b/src/platform/web/ui/session/room/timeline/ReplyPreviewView.js @@ -41,3 +41,11 @@ export class ReplyPreviewView extends TemplateView { ]); } } + +export class ReplyPreviewError extends TemplateView { + render(t) { + return t.blockquote({ className: "ReplyPreviewView" }, [ + t.div({ className: "Timeline_messageBody statusMessage" }, "This reply could not be found.") + ]); + } +} diff --git a/src/platform/web/ui/session/room/timeline/TextMessageView.js b/src/platform/web/ui/session/room/timeline/TextMessageView.js index 801f075e..b1a7c0f2 100644 --- a/src/platform/web/ui/session/room/timeline/TextMessageView.js +++ b/src/platform/web/ui/session/room/timeline/TextMessageView.js @@ -16,7 +16,7 @@ limitations under the License. import {tag, text} from "../../../general/html"; import {BaseMessageView} from "./BaseMessageView.js"; -import {ReplyPreviewView} from "./ReplyPreviewView.js"; +import {ReplyPreviewError, ReplyPreviewView} from "./ReplyPreviewView.js"; export class TextMessageView extends BaseMessageView { renderMessageBody(t, vm) { @@ -27,7 +27,10 @@ export class TextMessageView extends BaseMessageView { statusMessage: vm => vm.shape === "message-status", } }, t.mapView(vm => vm.replyTextTile, replyTextTile => { - if (replyTextTile && this._interactive) { + if (vm.isReply && !replyTextTile) { + return new ReplyPreviewError(); + } + else if (replyTextTile && this._interactive) { // if this._interactive = false, this is already a reply preview, don't nest replies for now. return new ReplyPreviewView(replyTextTile); }