-
+
implements HistoryVisibleBannerViewModelInterface
@@ -34,6 +64,12 @@ export class HistoryVisibleBannerViewModel
*/
private readonly acknowledgedWatcher: string;
+ /**
+ * Computes the latest banner snapshot given the VM's props.
+ * @param room - The room the banner will be shown in.
+ * @param threadId - The thread ID passed in from the parent {@link MessageComposer}.
+ * @returns The latest snapshot. See {@link HistoryVisibleBannerViewSnapshot}.
+ */
private static readonly computeSnapshot = (
room: Room,
threadId?: string | null,
@@ -51,6 +87,10 @@ export class HistoryVisibleBannerViewModel
};
};
+ /**
+ * Creates a new view model instance.
+ * @param props - Properties for this view model. See {@link Props}.
+ */
public constructor(props: Props) {
super(props, HistoryVisibleBannerViewModel.computeSnapshot(props.room, props.threadId));
@@ -69,6 +109,10 @@ export class HistoryVisibleBannerViewModel
);
}
+ /**
+ * Recompute and update this VM instance's snapshot. This will update the `acknowledgedHistoryVisibility`
+ * store entry if necessary.
+ */
private setSnapshot(): void {
const acknowledged = SettingsStore.getValue("acknowledgedHistoryVisibility", this.props.room.roomId);
@@ -109,6 +153,9 @@ export class HistoryVisibleBannerViewModel
);
}
+ /**
+ * Dispose of the viewmodel and its settings listeners.
+ */
public dispose(): void {
super.dispose();
SettingsStore.unwatchSetting(this.featureWatcher);
diff --git a/test/unit-tests/components/viewmodels/composer/HistoryVisibleBannerViewModel-test.tsx b/test/unit-tests/components/viewmodels/composer/HistoryVisibleBannerViewModel-test.tsx
index 0c2670636a..764376aba3 100644
--- a/test/unit-tests/components/viewmodels/composer/HistoryVisibleBannerViewModel-test.tsx
+++ b/test/unit-tests/components/viewmodels/composer/HistoryVisibleBannerViewModel-test.tsx
@@ -54,7 +54,7 @@ describe("HistoryVisibleBannerViewModel", () => {
});
it("should not show the banner in unencrypted rooms", () => {
- const vm = new HistoryVisibleBannerViewModel({ room });
+ const vm = new HistoryVisibleBannerViewModel({ room, threadId: null });
expect(vm.getSnapshot().visible).toBe(false);
});
@@ -76,7 +76,7 @@ describe("HistoryVisibleBannerViewModel", () => {
}),
]);
- const vm = new HistoryVisibleBannerViewModel({ room });
+ const vm = new HistoryVisibleBannerViewModel({ room, threadId: null });
expect(vm.getSnapshot().visible).toBe(false);
});
@@ -99,7 +99,7 @@ describe("HistoryVisibleBannerViewModel", () => {
}),
]);
- const vm = new HistoryVisibleBannerViewModel({ room });
+ const vm = new HistoryVisibleBannerViewModel({ room, threadId: null });
expect(vm.getSnapshot().visible).toBe(false);
vm.dispose();
});
@@ -145,7 +145,7 @@ describe("HistoryVisibleBannerViewModel", () => {
}),
]);
- const vm = new HistoryVisibleBannerViewModel({ room });
+ const vm = new HistoryVisibleBannerViewModel({ room, threadId: null });
expect(vm.getSnapshot().visible).toBe(true);
await vm.onClose();
expect(vm.getSnapshot().visible).toBe(false);