From cecab016acc52a2a67af507f09fd6e2be5b816af Mon Sep 17 00:00:00 2001
From: Midhun Suresh <midhunr@element.io>
Date: Thu, 20 Jan 2022 12:11:27 +0530
Subject: [PATCH] Fix typescript errors

---
 src/ui/views/AccountSetupView.ts        | 13 +++++++--
 src/ui/views/ChatterboxView.ts          | 37 +++++++++++++++++++------
 src/ui/views/RootView.ts                |  9 ++++--
 src/viewmodels/AccountSetupViewModel.ts |  2 +-
 src/viewmodels/ChatterboxViewModel.ts   |  4 +--
 src/viewmodels/RootViewModel.ts         |  6 ++--
 6 files changed, 50 insertions(+), 21 deletions(-)

diff --git a/src/ui/views/AccountSetupView.ts b/src/ui/views/AccountSetupView.ts
index 967a96a..4b76ccb 100644
--- a/src/ui/views/AccountSetupView.ts
+++ b/src/ui/views/AccountSetupView.ts
@@ -1,9 +1,12 @@
 import { TemplateView, LoadingView } from "hydrogen-view-sdk";
-import { Builder } from "hydrogen-view-sdk/types/platform/web/ui/general/TemplateView";
 import { AccountSetupViewModel } from "../../viewmodels/AccountSetupViewModel";
 
 export class AccountSetupView extends TemplateView<AccountSetupViewModel> {
-    render(t: Builder<AccountSetupViewModel>, vm: AccountSetupViewModel) {
+    constructor(value) {
+        super(value);
+    }
+
+    render(t, vm: AccountSetupViewModel) {
         return t.div(
             { className: "AccountSetupView" },
             t.mapView( (vm) => vm.privacyPolicyLink, (link) => link ? new PolicyAgreementView(vm) : new LoadingView())
@@ -12,7 +15,11 @@ export class AccountSetupView extends TemplateView<AccountSetupViewModel> {
 }
 
 class PolicyAgreementView extends TemplateView<AccountSetupViewModel> {
-    render(t: Builder<AccountSetupViewModel>, vm: AccountSetupViewModel) {
+    constructor(value) {
+        super(value);
+    }
+
+    render(t, vm: AccountSetupViewModel) {
         return t.div({ className: "PolicyAgreementView" }, [
             t.div({ className: "PolicyAgreementView-text"},
                 [
diff --git a/src/ui/views/ChatterboxView.ts b/src/ui/views/ChatterboxView.ts
index 9d40096..584b09e 100644
--- a/src/ui/views/ChatterboxView.ts
+++ b/src/ui/views/ChatterboxView.ts
@@ -1,21 +1,40 @@
-import { TemplateView, TimelineView, LoadingView, AvatarView, RoomViewModel } from "hydrogen-view-sdk";
-import { Builder } from "hydrogen-view-sdk/types/platform/web/ui/general/TemplateView";
+import { TemplateView, TimelineView, LoadingView, AvatarView } from "hydrogen-view-sdk";
 import { MessageComposer } from "hydrogen-view-sdk";
 import { ChatterboxViewModel } from "../../viewmodels/ChatterboxViewModel";
 
 export class ChatterboxView extends TemplateView<ChatterboxViewModel> {
-    render(t: Builder<ChatterboxViewModel>) {
-        return t.div({className: "ChatterboxView"}, [
-            t.mapView(vm => vm.roomViewModel? vm: null, vm => vm ? new RoomHeaderView(vm) : null),
-            t.mapView(vm => vm.timelineViewModel, vm => vm ? new TimelineView(vm) : new LoadingView()),
-            t.mapView(vm => vm.messageComposerViewModel, vm => vm ? new MessageComposer(vm) : null),
-            t.div({className: "ChatterboxView_footer"}, ["Powered by", t.img({src:"./src/ui/res/matrix-logo.svg"})]),
+    constructor(value) {
+        super(value);
+    }
+
+    render(t) {
+        return t.div({ className: "ChatterboxView" }, [
+            t.mapView(
+                (vm) => (vm.roomViewModel ? vm : null),
+                (vm) => (vm ? new RoomHeaderView(vm) : null)
+            ),
+            t.mapView(
+                (vm) => vm.timelineViewModel,
+                (vm) => (vm ? new TimelineView(vm) : new LoadingView())
+            ),
+            t.mapView(
+                (vm) => vm.messageComposerViewModel,
+                (vm) => (vm ? new MessageComposer(vm) : null)
+            ),
+            t.div({ className: "ChatterboxView_footer" }, [
+                "Powered by",
+                t.img({ src: "./src/ui/res/matrix-logo.svg" }),
+            ]),
         ]);
     }
 }
 
 class RoomHeaderView extends TemplateView<ChatterboxViewModel> {
-    render(t: Builder<ChatterboxViewModel>, vm) {
+    constructor(value) {
+        super(value);
+    }
+
+    render(t, vm: ChatterboxViewModel) {
         return t.div({ className: "RoomHeaderView" }, [
             t.view(new AvatarView(vm.roomViewModel, 30)),
             t.div({ className: "RoomHeaderView_name" }, vm => vm.roomViewModel.name),
diff --git a/src/ui/views/RootView.ts b/src/ui/views/RootView.ts
index 8e5bb52..e9e097e 100644
--- a/src/ui/views/RootView.ts
+++ b/src/ui/views/RootView.ts
@@ -1,11 +1,14 @@
 import { TemplateView } from "hydrogen-view-sdk";
-import { Builder } from "hydrogen-view-sdk/types/platform/web/ui/general/TemplateView";
 import { RootViewModel } from "../../viewmodels/RootViewModel";
 import { AccountSetupView } from "./AccountSetupView";
 import { ChatterboxView } from "./ChatterboxView";
 
 export class RootView extends TemplateView<RootViewModel> {
-    render(t: Builder<RootViewModel>, vm: RootViewModel) {
+    constructor(value) {
+        super(value);
+    }
+
+    render(t, vm: RootViewModel) {
         return t.mapView(vm => vm.activeSection, section => {
             switch(section) {
                 case "start":
@@ -22,7 +25,7 @@ export class RootView extends TemplateView<RootViewModel> {
 
 
 class StartView extends TemplateView<RootViewModel> {
-    render(t: Builder<RootViewModel>, vm: RootViewModel) {
+    render(t, vm: RootViewModel) {
         return t.button({ className: "StartChat", onClick: () => vm.start() });
     }
 }
diff --git a/src/viewmodels/AccountSetupViewModel.ts b/src/viewmodels/AccountSetupViewModel.ts
index 8ad243d..3e2bc30 100644
--- a/src/viewmodels/AccountSetupViewModel.ts
+++ b/src/viewmodels/AccountSetupViewModel.ts
@@ -6,7 +6,7 @@ import "hydrogen-view-sdk/style.css";
 
 export class AccountSetupViewModel extends ViewModel {
     private _config: IChatterboxConfig;
-    private _client: Client;
+    private _client: typeof Client;
     private _termsStage?: any;
     private _password: string;
 
diff --git a/src/viewmodels/ChatterboxViewModel.ts b/src/viewmodels/ChatterboxViewModel.ts
index 6e4e5ba..0241eb2 100644
--- a/src/viewmodels/ChatterboxViewModel.ts
+++ b/src/viewmodels/ChatterboxViewModel.ts
@@ -1,8 +1,8 @@
 import { RoomViewModel, ViewModel, ComposerViewModel} from "hydrogen-view-sdk";
 
 export class ChatterboxViewModel extends ViewModel {
-    private _messageComposerViewModel?: ComposerViewModel;
-    private _roomViewModel?: RoomViewModel;
+    private _messageComposerViewModel?: typeof ComposerViewModel;
+    private _roomViewModel?: typeof RoomViewModel;
     private _loginPromise: Promise<void>;
 
     constructor(options) {
diff --git a/src/viewmodels/RootViewModel.ts b/src/viewmodels/RootViewModel.ts
index d696f56..5f63909 100644
--- a/src/viewmodels/RootViewModel.ts
+++ b/src/viewmodels/RootViewModel.ts
@@ -1,14 +1,14 @@
-import { ViewModel, Client, Navigation, createRouter, Platform } from "hydrogen-view-sdk";
+import { ViewModel, Client, Navigation, createRouter, Platform  } from "hydrogen-view-sdk";
 import { IChatterboxConfig } from "../types/IChatterboxConfig";
 import { ChatterboxViewModel } from "./ChatterboxViewModel";
 import "hydrogen-view-sdk/style.css";
 import { AccountSetupViewModel } from "./AccountSetupViewModel";
 
-type Options = { platform: Platform, navigation: ReturnType<Navigation>, urlCreator: ReturnType<createRouter> };
+type Options = { platform: typeof Platform, navigation: typeof Navigation, urlCreator: ReturnType<typeof createRouter> };
 
 export class RootViewModel extends ViewModel {
     private _config: IChatterboxConfig;
-    private _client: Client;
+    private _client: typeof Client;
     private _chatterBoxViewModel?: ChatterboxViewModel;
     private _accountSetupViewModel?: AccountSetupViewModel;
     private _activeSection: string = "start";
-- 
GitLab