Skip to content

feat: handle call moderation actions [WPB-3185]#4691

Merged
saleniuk merged 8 commits intodevelopfrom
feat/handle-call-moderation-actions
Apr 10, 2026
Merged

feat: handle call moderation actions [WPB-3185]#4691
saleniuk merged 8 commits intodevelopfrom
feat/handle-call-moderation-actions

Conversation

@saleniuk
Copy link
Copy Markdown
Contributor

@saleniuk saleniuk commented Apr 3, 2026

https://wearezeta.atlassian.net/browse/WPB-3185


PR Submission Checklist for internal contributors

  • The PR Title

    • conforms to the style of semantic commits messages¹ supported in Wire's Github Workflow²
    • contains a reference JIRA issue number like SQPIT-764
    • answers the question: If merged, this PR will: ... ³
  • The PR Description

    • is free of optional paragraphs and you have filled the relevant parts to the best of your ability

What's new in this PR?

User needs to be informed of the actions taken towards them by the moderator/admin during the call.
Managing and storing these events has been added in kalium, along with the use case to observe them.
This PR includes changes needed to display them correctly:

  • Added two methods to ExpiringMap to be able to add item which expires in a given custom period and to add one without expiration
  • Added new InCallToast model which currently has two main types:
    • ModerationAction to show all actions done by the moderators/admins
    • Fullscreen which handles already existing labels informing about how to open or close the fullscreen
  • Added logic of observing and expiring toasts in OngoingCallViewModel - toasts are stored by their ID, but currently toasts of the same type share the same ID, thanks to that there is always only one toast of a given type on the screen, and when a new one appears, it overwrites the existing one of the same type
  • Created dedicated composable and panel to show these in-call toasts chronologically and animate adding and removing them
  • Removed old DoubleTapToast and its usages in FullscreenTile and OngoingCallScreen as it’s now handled by the InCallToast

Dependencies (Optional)

Needs releases with:

Testing

Test Coverage (Optional)

  • I have added automated test to this contribution

How to Test

Join a call, unmute and let moderator/admin to mute you remotely.
Open and close fullscreen.

Attachments (Optional)

Screen.Recording.2026-04-03.at.15.55.36.mov

PR Post Submission Checklist for internal contributors (Optional)

  • Wire's Github Workflow has automatically linked the PR to a JIRA issue

PR Post Merge Checklist for internal contributors

  • If any soft of configuration variable was introduced by this PR, it has been added to the relevant documents and the CI jobs have been updated.

References
  1. https://sparkbox.com/foundry/semantic_commit_messages
  2. https://github.com/wireapp/.github#usage
  3. E.g. feat(conversation-list): Sort conversations by most emojis in the title #SQPIT-764.

@codecov
Copy link
Copy Markdown

codecov bot commented Apr 3, 2026

Codecov Report

❌ Patch coverage is 97.14286% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 49.88%. Comparing base (7111b69) to head (5d7cee0).
⚠️ Report is 1 commits behind head on develop.

Files with missing lines Patch % Lines
...android/ui/calling/ongoing/OngoingCallViewModel.kt 95.74% 0 Missing and 2 partials ⚠️
Additional details and impacted files
@@             Coverage Diff             @@
##           develop    #4691      +/-   ##
===========================================
+ Coverage    49.72%   49.88%   +0.16%     
===========================================
  Files          602      602              
  Lines        20605    20643      +38     
  Branches      3288     3290       +2     
===========================================
+ Hits         10245    10298      +53     
+ Misses        9396     9379      -17     
- Partials       964      966       +2     
Files with missing lines Coverage Δ
...ire/android/ui/calling/ongoing/OngoingCallState.kt 100.00% <ø> (ø)
...id/ui/calling/ongoing/fullscreen/FullScreenTile.kt 0.00% <ø> (ø)
...re/android/ui/calling/ongoing/toast/InCallToast.kt 100.00% <100.00%> (ø)
...c/main/kotlin/com/wire/android/util/ExpiringMap.kt 100.00% <100.00%> (ø)
...android/ui/calling/ongoing/OngoingCallViewModel.kt 94.55% <95.74%> (+9.88%) ⬆️

Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 7111b69...5d7cee0. Read the comment docs.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@saleniuk saleniuk requested review from ohassine and yamilmedina April 9, 2026 13:30
Copy link
Copy Markdown
Contributor

@yamilmedina yamilmedina left a comment

Choose a reason for hiding this comment

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

Amazing to have now this unified toast component. 🚀
Just left a small suggestion/question if we might be able to avoid the hardcoded IDs for the Toast Keys/ IDs.

@sonarqubecloud
Copy link
Copy Markdown

@saleniuk saleniuk added this pull request to the merge queue Apr 10, 2026
Merged via the queue into develop with commit e352c6c Apr 10, 2026
19 checks passed
@saleniuk saleniuk deleted the feat/handle-call-moderation-actions branch April 10, 2026 13:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants