Integrate into update mechanism
This commit is contained in:
parent
aa3bb9c6ef
commit
54004eef4d
5 changed files with 18 additions and 24 deletions
|
@ -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) {
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Reference in a new issue