Apply tile updates
This commit is contained in:
parent
8befef4d28
commit
eb8eb71cdb
1 changed files with 16 additions and 2 deletions
|
@ -23,10 +23,10 @@ export class ComposerViewModel extends ViewModel {
|
||||||
// replyVM may not be created yet even if subscribed.
|
// replyVM may not be created yet even if subscribed.
|
||||||
if (this._replyVM) {
|
if (this._replyVM) {
|
||||||
this._replyVM.dispose();
|
this._replyVM.dispose();
|
||||||
|
this._replyVM = null;
|
||||||
}
|
}
|
||||||
// Early return if we don't have an ID to reply to.
|
// Early return if we don't have an ID to reply to.
|
||||||
if (!id) {
|
if (!id) {
|
||||||
this._replyVM = null;
|
|
||||||
this._replySub = null;
|
this._replySub = null;
|
||||||
this.emitChange("replyViewModel");
|
this.emitChange("replyViewModel");
|
||||||
return;
|
return;
|
||||||
|
@ -40,7 +40,7 @@ export class ComposerViewModel extends ViewModel {
|
||||||
if (!this._replyVM) {
|
if (!this._replyVM) {
|
||||||
this._replyVM = this._roomVM._createTile(entry);
|
this._replyVM = this._roomVM._createTile(entry);
|
||||||
} else {
|
} else {
|
||||||
this._replyVM.updateEntry(entry);
|
this._updateReplyEntry(entry);
|
||||||
}
|
}
|
||||||
this.emitChange("replyViewModel");
|
this.emitChange("replyViewModel");
|
||||||
});
|
});
|
||||||
|
@ -48,6 +48,20 @@ export class ComposerViewModel extends ViewModel {
|
||||||
this.emitChange("replyViewModel");
|
this.emitChange("replyViewModel");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_updateReplyEntry(entry) {
|
||||||
|
const update = this._replyVM.updateEntry(entry);
|
||||||
|
if (update.shouldReplace) {
|
||||||
|
const newTile = this._roomVM._createTile(entry);
|
||||||
|
this._replyVM.dispose();
|
||||||
|
this._replyVM = newTile || null;
|
||||||
|
} else if (update.shouldRemove) {
|
||||||
|
this._replyVM.dispose();
|
||||||
|
this._replyVM = null;
|
||||||
|
} else if (update.shouldUpdate) {
|
||||||
|
// Nothing, since we'll be calling emitChange anyway.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
clearReplyingTo() {
|
clearReplyingTo() {
|
||||||
this.setReplyingTo(null);
|
this.setReplyingTo(null);
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue