Skip to content

Conversation

@kaylendog
Copy link
Contributor

@kaylendog kaylendog commented Nov 3, 2025

Shows a banner above the message composer whenever a user opens a room with non-join history visibility, which they can dismiss.

  • Whenever a user opens an encrypted room with non-join history visibility, show them a banner, unless we have already marked it as dismissed.
  • Whenever a user opens an encrypted room with joined history visibility, we unmark it as dismissed.

Issue: element-hq/element-meta#2875

Checklist

@kaylendog
Copy link
Contributor Author

I'm wondering if this would be better off as a floating alert above the UI - would conflict less with the identity reset dialog.

@florianduros
Copy link
Member

@kaylendog this is a question for the design team. Where are the figma design for this banner?

@kaylendog
Copy link
Contributor Author

@kaylendog this is a question for the design team. Where are the figma design for this banner?

Here (for EW)!

@kaylendog
Copy link
Contributor Author

Opening this up for review, since I can't make any headway on the CI failures:

  • The Playwright tests need their snapshots updating, which I can't do locally since this (apparently) needs rootful docker;
  • The Jest unit tests are failing for an unknown reason which I can't replicate locally - we suspect this may be cache related?

@kaylendog kaylendog marked this pull request as ready for review November 4, 2025 17:04
@kaylendog kaylendog requested a review from a team as a code owner November 4, 2025 17:04
Copy link
Member

@florianduros florianduros left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Each components in shared component has its own folder. imo RoomStatusBarHistoryVisible should be in packages/shared-components/src/room/RoomStatusBarHistoryVisible.

The RoomStatusBarHistoryVisible is missing at least a render test and a check that onClose is correctly binded.

return (
<Tooltip open={isTooltipOpen} description={formatTimeLeft(secondsLeft)} placement="bottom">
<div className={classes} ref={this.ref} role="region" aria-label={_t("a11y|message_composer")}>
<HistoryVisibleBannerView vm={new HistoryVisibleBannerViewModel({ room: this.props.room })} />
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

At every render of the MessageComposer, the vm will be recreated. We want to avoid that.
You can:

  1. Create the vm in the message component (constructor/componentDidMount), put in the state, dispose the vm in componentWillUnMount
  2. Create a functional component where you create the vm with Introduce a hook to auto dispose view models #31178 and render the view

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed in 50b5785

Comment on lines 26 to 27
private readonly featureWatcher: string;
private readonly acknowledgedWatcher: string;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

missing tsdoc

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed in b6b65b0

@kaylendog kaylendog enabled auto-merge December 10, 2025 10:19
@kaylendog kaylendog added this pull request to the merge queue Dec 10, 2025
Merged via the queue into element-hq:develop with commit cff9119 Dec 10, 2025
32 checks passed
@kaylendog kaylendog deleted the kaylendog/history-sharing/status branch December 10, 2025 10:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants