Skip to content

Implement ongoing call tiles #34188

Draft
MidhunSureshR wants to merge 26 commits into
developfrom
midhun/call/ongoing
Draft

Implement ongoing call tiles #34188
MidhunSureshR wants to merge 26 commits into
developfrom
midhun/call/ongoing

Conversation

@MidhunSureshR

@MidhunSureshR MidhunSureshR commented Jul 8, 2026

Copy link
Copy Markdown
Member

Figma : https://www.figma.com/design/rTaQE2nIUSLav4Tg3nozq7/Compound-Web-Components?node-id=11218-5021&t=oRWAGiwV5pUV4OFF-4

Screenshots in #33970

#34141 added the tombstone tiles, this PR adds the ongoing tile views.
There's no foolproof way to associate a given call to a rtc notification event (which is what we render as tiles) so the basic idea is to treat the last notification tile in the timeline as an ongoing call tile if there's a call in the room.

The following changes are made:

  • There's two main views:DmOngoingCallTileView and RoomOngoingCallTileView which implements the designs of the tile. They share some common state and this is extracted as CommonOngoingCallTileViewSnapshot. There's a BaseOngoingCallTileViewModel that provides the shared snapshot content. DmOngoingCallTileViewModel and RoomOngoingCallTileViewModel both extend this base view model to provide the part of the snapshot that is not common.
  • It is now possible to render face piles in shared components via FacePileView and FacePileViewModel.
  • It is now possible to render member avatars in shared components via MemberAvatarView and MemberAvatarViewModel.

The following common components are used by both the dm and room ongoing call tile views:

  • TileContainer provides the same outer container style and layout.
  • JoinButton is the common join button shown in these tiles
  • CallIcon shows the square call icon rendered in the tile.
  • DurationView/DurationViewModel renders a clock which outputs the duration of the call. This updates every second.

There's a new store, LatestRtcNotificationEventStore, that tracks the latest notification event in a given room. This is necessary because the call store tells you about a new call as soon as a call membership event comes through but the timeline only renders rtc notification events. The problem arises when there's a delay between receiving the call membership event and the notification event. As a result, CallStore tells us that a call is ongoing in the room but the corresponding rtc notification event hasn't arrived, so we incorrectly show the last call tile (which in reality relates to a call that is already over) as ongoing.

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.

1 participant