-
+
{
+ private static readonly computeSnapshot = (
+ room: Room,
+ threadId?: string | null,
+ ): HistoryVisibleBannerViewSnapshot => {
const featureEnabled = SettingsStore.getValue("feature_share_history_on_invite");
const acknowledged = SettingsStore.getValue("acknowledgedHistoryVisibility", room.roomId);
return {
visible:
featureEnabled &&
+ !threadId &&
room.hasEncryptionStateEvent() &&
room.getHistoryVisibility() !== HistoryVisibility.Joined &&
!acknowledged,
@@ -47,7 +52,7 @@ export class HistoryVisibleBannerViewModel
};
public constructor(props: Props) {
- super(props, HistoryVisibleBannerViewModel.computeSnapshot(props.room));
+ super(props, HistoryVisibleBannerViewModel.computeSnapshot(props.room, props.threadId));
this.disposables.trackListener(props.room, RoomStateEvent.Update, () => this.setSnapshot());
@@ -77,7 +82,7 @@ export class HistoryVisibleBannerViewModel
);
}
- this.snapshot.set(HistoryVisibleBannerViewModel.computeSnapshot(this.props.room));
+ this.snapshot.set(HistoryVisibleBannerViewModel.computeSnapshot(this.props.room, this.props.threadId));
}
/**
diff --git a/test/unit-tests/components/viewmodels/composer/HistoryVisibleBannerViewModel-test.tsx b/test/unit-tests/components/viewmodels/composer/HistoryVisibleBannerViewModel-test.tsx
index 12b7edc6f4..0c2670636a 100644
--- a/test/unit-tests/components/viewmodels/composer/HistoryVisibleBannerViewModel-test.tsx
+++ b/test/unit-tests/components/viewmodels/composer/HistoryVisibleBannerViewModel-test.tsx
@@ -104,6 +104,29 @@ describe("HistoryVisibleBannerViewModel", () => {
vm.dispose();
});
+ it("should not show the banner in threads", () => {
+ upsertRoomStateEvents(room, [
+ mkEvent({
+ event: true,
+ type: "m.room.encryption",
+ user: "@user1:server",
+ content: {},
+ }),
+ mkEvent({
+ event: true,
+ type: "m.room.history_visibility",
+ user: "@user1:server",
+ content: {
+ history_visibility: "shared",
+ },
+ }),
+ ]);
+
+ const vm = new HistoryVisibleBannerViewModel({ room, threadId: "some thread ID" });
+ expect(vm.getSnapshot().visible).toBe(false);
+ vm.dispose();
+ });
+
it("should show the banner in encrypted rooms with non-joined history visibility", async () => {
upsertRoomStateEvents(room, [
mkEvent({