Skip to content
Snippets Groups Projects
ChatterboxView.ts 1.78 KiB
Newer Older
  • Learn to ignore specific revisions
  • RMidhunSuresh's avatar
    RMidhunSuresh committed
    import { TemplateView, TimelineView, AvatarView, viewClassForTile } from "hydrogen-view-sdk";
    
    Midhun Suresh's avatar
    Midhun Suresh committed
    import { MessageComposer } from "hydrogen-view-sdk";
    import { ChatterboxViewModel } from "../../viewmodels/ChatterboxViewModel";
    
    RMidhunSuresh's avatar
    RMidhunSuresh committed
    import { FooterView } from "./FooterView";
    
    RMidhunSuresh's avatar
    RMidhunSuresh committed
    import { LoadingView } from "./LoadingView";
    
    RMidhunSuresh's avatar
    RMidhunSuresh committed
    
    
    Midhun Suresh's avatar
    Midhun Suresh committed
    export class ChatterboxView extends TemplateView<ChatterboxViewModel> {
    
    Midhun Suresh's avatar
    Midhun Suresh committed
        constructor(value) {
            super(value);
        }
    
    
    RMidhunSuresh's avatar
    RMidhunSuresh committed
        render(t, vm) {
    
    RMidhunSuresh's avatar
    RMidhunSuresh committed
            return t.div({ className: "ChatterboxView", },
                [
    
    Midhun Suresh's avatar
    Midhun Suresh committed
                t.mapView(
                    (vm) => (vm.roomViewModel ? vm : null),
                    (vm) => (vm ? new RoomHeaderView(vm) : null)
                ),
                t.mapView(
                    (vm) => vm.timelineViewModel,
    
    RMidhunSuresh's avatar
    RMidhunSuresh committed
                    (vm) => (vm ? new TimelineView(vm, viewClassForTile) : new LoadingView())
    
    Midhun Suresh's avatar
    Midhun Suresh committed
                ),
                t.mapView(
                    (vm) => vm.messageComposerViewModel,
                    (vm) => (vm ? new MessageComposer(vm) : null)
                ),
    
    RMidhunSuresh's avatar
    RMidhunSuresh committed
                t.view(new FooterView(vm.footerViewModel)),
    
    Midhun Suresh's avatar
    Midhun Suresh committed
            ]);
        }
    }
    
    class RoomHeaderView extends TemplateView<ChatterboxViewModel> {
    
    Midhun Suresh's avatar
    Midhun Suresh committed
        constructor(value) {
            super(value);
        }
    
        render(t, vm: ChatterboxViewModel) {
    
            const avatar = vm.customAvatarURL ? t.img({ className:"avatar", src: vm.customAvatarURL }) : t.view(new AvatarView(vm.roomViewModel, 30));
    
    Midhun Suresh's avatar
    Midhun Suresh committed
            return t.div({ className: "RoomHeaderView" }, [
    
                avatar,
                t.div({ className: "RoomHeaderView_name" }, vm => vm.roomName),
    
    Midhun Suresh's avatar
    Midhun Suresh committed
                t.div({ className: "RoomHeaderView_menu" }, [
    
    RMidhunSuresh's avatar
    RMidhunSuresh committed
                    t.button({
                        className: "RoomHeaderView_menu_minimize", onClick: () => {
                            vm.minimize();
                        }
                    })
    
    Midhun Suresh's avatar
    Midhun Suresh committed
                ]),
    
    Midhun Suresh's avatar
    Midhun Suresh committed
            ]);
        }
    }