Skip to content

Commit e6c4141

Browse files
committed
split preview view out of UnknownRoomView into WorldReadableRoomView and re-render the middle for WorldReadableRoomView to take over
1 parent 554f517 commit e6c4141

4 files changed

Lines changed: 59 additions & 54 deletions

File tree

src/domain/session/SessionViewModel.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,13 @@ export class SessionViewModel extends ViewModel {
236236
roomIdOrAlias,
237237
session: this._client.session,
238238
}));
239-
void roomVM.load();
239+
roomVM.load().then(() => {
240+
if (roomVM.previewPossible) {
241+
console.log('emitting middle');
242+
this.emitChange("activeMiddleViewModel");
243+
this.emitChange();
244+
}
245+
});
240246
return roomVM;
241247
}
242248

src/domain/session/room/UnknownRoomViewModel.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ export class UnknownRoomViewModel extends ViewModel {
6464
// matrix.org can choose not to return messages for a world_readable room
6565
// so this getter is used to render the correct view, if it's possible to preview the room right now
6666
get previewPossible() {
67-
return this._worldReadable && this._room;
67+
return this._worldReadable && !! this._room;
6868
}
6969

7070
get checkingPreviewCapability() {

src/platform/web/ui/session/SessionView.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ limitations under the License.
1717

1818
import {LeftPanelView} from "./leftpanel/LeftPanelView.js";
1919
import {RoomView} from "./room/RoomView.js";
20-
import {UnknownRoomView} from "./room/UnknownRoomView.js";
20+
import {UnknownRoomView, WorldReadableRoomView} from "./room/UnknownRoomView.js";
2121
import {RoomBeingCreatedView} from "./room/RoomBeingCreatedView.js";
2222
import {InviteView} from "./room/InviteView.js";
2323
import {LightboxView} from "./room/LightboxView.js";
@@ -60,6 +60,8 @@ export class SessionView extends TemplateView {
6060
return new RoomView(vm.currentRoomViewModel, viewClassForTile);
6161
} else if (vm.currentRoomViewModel.kind === "roomBeingCreated") {
6262
return new RoomBeingCreatedView(vm.currentRoomViewModel);
63+
} else if (vm.currentRoomViewModel.kind === "worldReadableRoom") {
64+
return new WorldReadableRoomView(vm.currentRoomViewModel);
6365
} else {
6466
return new UnknownRoomView(vm.currentRoomViewModel);
6567
}

src/platform/web/ui/session/room/UnknownRoomView.js

Lines changed: 48 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -27,62 +27,59 @@ export class UnknownRoomView extends TemplateView {
2727
super(vm);
2828
}
2929

30-
regularView(vm, t) {
31-
return new InlineTemplateView(vm, (t, m) => {
32-
return t.div([
33-
t.h2([
34-
vm.i18n`You are currently not in ${vm.roomIdOrAlias}.`,
35-
t.br(),
36-
vm.i18n`Want to join it?`
37-
]),
38-
t.button({
39-
className: "button-action primary",
40-
onClick: () => vm.join(),
41-
disabled: vm => vm.busy,
42-
}, vm.i18n`Join room`),
30+
render(t, vm) {
31+
return t.div({className: "UnknownRoomView middle"}, [
32+
t.h2([
33+
vm.i18n`You are currently not in ${vm.roomIdOrAlias}.`,
4334
t.br(),
44-
t.if(vm => vm.checkingPreviewCapability, t => t.div({className: "checkingPreviewCapability"}, [
45-
spinner(t),
46-
t.p(vm.i18n`Checking preview capability...`)
47-
])),
48-
t.if(vm => vm.error, t => t.p({className: "error"}, vm.error))
49-
]);
50-
});
35+
vm.i18n`Want to join it?`
36+
]),
37+
t.button({
38+
className: "button-action primary",
39+
onClick: () => vm.join(),
40+
disabled: vm => vm.busy,
41+
}, vm.i18n`Join room`),
42+
t.br(),
43+
t.if(vm => vm.checkingPreviewCapability, t => t.div({className: "checkingPreviewCapability"}, [
44+
spinner(t),
45+
t.p(vm.i18n`Checking preview capability...`)
46+
])),
47+
t.if(vm => vm.error, t => t.p({className: "error"}, vm.error))
48+
]);
5149
}
50+
}
5251

53-
previewView(vm, t) {
54-
return new InlineTemplateView(vm, (t, m) => {
55-
return t.div({className: "RoomView WorldReadableRoomView"}, [
56-
t.div({className: "RoomHeader middle-header"}, [
57-
t.view(new AvatarView(vm, 32)),
58-
t.div({className: "room-description"}, [
59-
t.h2(vm => vm.room.name),
60-
]),
61-
]),
62-
t.div({className: "RoomView_body"}, [
63-
t.div({className: "RoomView_error"}, [
64-
t.if(vm => vm.error, t => t.div([
65-
t.p({}, vm => vm.error),
66-
t.button({className: "RoomView_error_closerButton", onClick: evt => vm.dismissError(evt)})
67-
]))
68-
]),
69-
t.mapView(vm => vm.timelineViewModel, timelineViewModel => {
70-
return timelineViewModel ?
71-
new TimelineView(timelineViewModel, viewClassForTile) :
72-
new TimelineLoadingView(vm); // vm is just needed for i18n
73-
}),
74-
t.div({className: "WorldReadableRoomComposerView"}, [
75-
t.h3(vm => vm.i18n`Join the room to participate`),
76-
t.button({className: "joinRoomButton", onClick: () => vm.join()}, vm.i18n`Join Room`)
77-
])
78-
])
79-
]);
80-
});
52+
export class WorldReadableRoomView extends TemplateView {
53+
54+
constructor(vm) {
55+
super(vm);
8156
}
8257

8358
render(t, vm) {
84-
return t.main({className: "UnknownRoomView middle"}, t.mapView(vm => vm.kind, kind => {
85-
return vm.previewPossible ? this.previewView(vm, t) : this.regularView(vm, t);
86-
}));
59+
return t.div({className: "RoomView WorldReadableRoomView middle"}, [
60+
t.div({className: "RoomHeader middle-header"}, [
61+
t.view(new AvatarView(vm, 32)),
62+
t.div({className: "room-description"}, [
63+
t.h2(vm => vm.room.name),
64+
]),
65+
]),
66+
t.div({className: "RoomView_body"}, [
67+
t.div({className: "RoomView_error"}, [
68+
t.if(vm => vm.error, t => t.div([
69+
t.p({}, vm => vm.error),
70+
t.button({className: "RoomView_error_closerButton", onClick: evt => vm.dismissError(evt)})
71+
]))
72+
]),
73+
t.mapView(vm => vm.timelineViewModel, timelineViewModel => {
74+
return timelineViewModel ?
75+
new TimelineView(timelineViewModel, viewClassForTile) :
76+
new TimelineLoadingView(vm); // vm is just needed for i18n
77+
}),
78+
t.div({className: "WorldReadableRoomComposerView"}, [
79+
t.h3(vm => vm.i18n`Join the room to participate`),
80+
t.button({className: "joinRoomButton", onClick: () => vm.join()}, vm.i18n`Join Room`)
81+
])
82+
])
83+
]);
8784
}
8885
}

0 commit comments

Comments
 (0)