Move EventTile to shared components - #2 (#33828)

* Add pure sender render inputs to EventTileViewModel

* Move sender/avatar normalization to EventTile

* Split sender and avatar adapters into focused leaf components

* Add tests for the sender and avatar adapters

* Fix sonar issues

* Make sender profile consume pure member info

* Collapse sender adapter onto snapshot-driven props

* Share current-member resolution for event and reply tiles

* Fix Prettier issues

* Keep settings preview on historical sender profiles

* Update the proprty name to reflect the use of the event-time sender data instead of resolving the current room member

* Fix Sonar issue

* Tighten member to MemberInfo | null in the view model
This commit is contained in:
rbondesson
2026-07-27 09:26:06 +00:00
committed by GitHub
parent c82bddf1b0
commit 4decd338fb
15 changed files with 477 additions and 67 deletions
@@ -62,6 +62,9 @@ describe("EventTileViewModel", () => {
...overrides.interaction,
},
sender: {
senderId: "@alice:example.org",
member: null,
isEmote: false,
...overrides.sender,
},
timestamp: {
@@ -307,6 +310,20 @@ describe("EventTileViewModel", () => {
expect(snapshot.sender.viewUserOnClick).toBe(true);
});
it("carries pure sender render inputs", () => {
const snapshot = EventTileViewModel.createSnapshot(
makeProps({
sender: {
senderId: "@moderator:example.org",
isEmote: true,
},
}),
);
expect(snapshot.sender.senderId).toBe("@moderator:example.org");
expect(snapshot.sender.isEmote).toBe(true);
});
it("marks room member avatars as historical", () => {
const snapshot = EventTileViewModel.createSnapshot(
makeProps({