forked from mystiq/hydrogen-web
42 lines
1.7 KiB
JavaScript
42 lines
1.7 KiB
JavaScript
import { TemplateView } from "../../general/TemplateView.js";
|
|
import { text, classNames, tag } from "../../general/html.js";
|
|
import { AvatarView } from "../../avatar.js";
|
|
|
|
export class RoomInfoView extends TemplateView {
|
|
|
|
render(t, vm) {
|
|
const encryptionString = vm.isEncrypted ? "On" : "Off";
|
|
|
|
return t.div({ className: "RoomInfo" }, [
|
|
this._createButton(vm),
|
|
t.div({ className: "RoomAvatar" },
|
|
[t.view(new AvatarView(vm, 52)), this._createEncryptionIcon(vm.isEncrypted)]),
|
|
t.div({ className: "RoomName" }, [t.h2(vm.name)]),
|
|
t.div({ className: "RoomId" }, [text(vm.roomId)]),
|
|
t.div({ className: "SidebarRow_collection" },
|
|
[
|
|
this._createSideBarRow("People", vm.memberCount, { MemberCount: true }),
|
|
this._createSideBarRow("Encryption", encryptionString, { EncryptionStatus: true })
|
|
])
|
|
]);
|
|
}
|
|
|
|
_createSideBarRow(label, value, labelClass, valueClass) {
|
|
const labelClassString = classNames({ SidebarLabel: true, ...labelClass });
|
|
const valueClassString = classNames({ SidebarValue: true, ...valueClass });
|
|
return tag.div({ className: "SidebarRow" }, [
|
|
tag.div({ className: labelClassString }, [text(label)]),
|
|
tag.div({ className: valueClassString }, [text(value)])
|
|
]);
|
|
}
|
|
|
|
_createEncryptionIcon(isEncrypted) {
|
|
return tag.div({ className: "RoomEncryption" },
|
|
[tag.div({ className: isEncrypted ? "encrypted" : "unencrypted" })])
|
|
}
|
|
|
|
_createButton(vm) {
|
|
return tag.div({ className: "buttons" },
|
|
[tag.a({ className: "close button-utility", href: vm.closeLink })]);
|
|
}
|
|
}
|