From d7a8b1616a2cccf318f7292738d4e0e7599da8b0 Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Mon, 4 May 2020 22:23:43 +0200 Subject: [PATCH] use t.view for room sub views also move composer to own vm --- src/domain/session/room/RoomViewModel.js | 19 ++++++++++++++++++- src/ui/web/session/room/RoomView.js | 17 +++-------------- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/src/domain/session/room/RoomViewModel.js b/src/domain/session/room/RoomViewModel.js index fccc665f..2d585a0d 100644 --- a/src/domain/session/room/RoomViewModel.js +++ b/src/domain/session/room/RoomViewModel.js @@ -14,6 +14,7 @@ export class RoomViewModel extends ViewModel { this._timelineError = null; this._sendError = null; this._closeCallback = closeCallback; + this._composerVM = new ComposerViewModel(this); } async load() { @@ -73,7 +74,9 @@ export class RoomViewModel extends ViewModel { return avatarInitials(this._room.name); } - async sendMessage(message) { + + + async _sendMessage(message) { if (message) { try { await this._room.sendEvent("m.room.message", {msgtype: "m.text", body: message}); @@ -88,4 +91,18 @@ export class RoomViewModel extends ViewModel { } return false; } + + get composerViewModel() { + return this._composerVM; + } +} + +class ComposerViewModel { + constructor(roomVM) { + this._roomVM = roomVM; + } + + sendMessage(message) { + return this._roomVM._sendMessage(message); + } } diff --git a/src/ui/web/session/room/RoomView.js b/src/ui/web/session/room/RoomView.js index 116de8fd..fbf6bd10 100644 --- a/src/ui/web/session/room/RoomView.js +++ b/src/ui/web/session/room/RoomView.js @@ -9,6 +9,7 @@ export class RoomView extends TemplateView { } render(t, vm) { + this._timelineList = new TimelineList(); return t.div({className: "RoomView"}, [ t.div({className: "TimelinePanel"}, [ t.div({className: "RoomHeader"}, [ @@ -19,24 +20,12 @@ export class RoomView extends TemplateView { ]), ]), t.div({className: "RoomView_error"}, vm => vm.error), - this._timelineList.mount(), - this._composer.mount(), + t.view(this._timelineList), + t.view(new MessageComposer(this.value.composerViewModel)), ]) ]); } - mount() { - this._composer = new MessageComposer(this.value); - this._timelineList = new TimelineList(); - return super.mount(); - } - - unmount() { - this._composer.unmount(); - this._timelineList.unmount(); - super.unmount(); - } - update(value, prop) { super.update(value, prop); if (prop === "timelineViewModel") {