Conversation
The ringing designs give answering and declining a button no StreamButtonSize names. CallControlButton gains a themeStyle pass-through to carry the size: it resolves after the ambient theme, where a nested StreamButtonTheme would be dropped for the positive tone, which already brings one of its own. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Both are now an avatar over a name and a status line with the controls below, built on the design system. The incoming screen sits on the app surface; the outgoing one is drawn on the caller's own camera, blurred behind a scrim, opened by a controller that hands the track to the call so answering does not open the camera a second time. The outgoing screen keeps its simpler button layout rather than the design's in-call bars, and the incoming one keeps the microphone and camera toggles the design drops. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The full-screen activity follows the redesigned ringing screen: the app surface rather than the blue default, a 104dp avatar, and 64dp accept and decline buttons centred 80dp apart above the bottom. The text colour no longer defaults to white, so the caller's name, the handle and the action labels each take the colour the design gives them; an integrator's own colour still paints all four. A malformed colour is logged rather than silently ignored. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The internal pieces took a StreamRingingCallStyle, whose every field is nullable, and force-unwrapped what the screen had already resolved. They take the resolved defaults instead, so nothing can hand them a style full of nulls. RingingCallBackground stays public and resolves its own, since a callBackgroundWidgetBuilder has no resolved style to pass. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The 104px sizes added to stream_core_flutter stop 10.4.0 compiling, whose switches over the size enums are exhaustive. Only the dogfooding app pulls chat in, so the SDK packages and CI were unaffected — the app was not. Drop the override once a chat release carries the fix. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The restyle gave IncomingCallActivity resource defaults to fall back to, but Call.kt still defaulted fullScreenBackgroundColor to #0955fa and fullScreenTextColor to white, so the bundle always carried a colour and the resources were never reached — the full-screen UI stayed blue. They default to empty now, which is what the activity reads as "unset". Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
3 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🎯 Goal
Rebuild the incoming and outgoing ringing screens on the design system, and bring the Android full-screen incoming call in line with them.
🛠 Implementation details
The Flutter screens. Both are an avatar over a name and a status line, with the call controls below. The incoming screen sits on the app surface and keeps the microphone and camera toggles the design drops; the outgoing one is drawn on top of the caller's own camera, blurred behind a scrim, and falls back to the flat scrim when the camera is off. It keeps its simpler button layout rather than the design's in-call bars.
StreamRingingCameraControlleropens the camera the outgoing screen previews and hands it to the call asTrackOption.provided, so answering carries on with that camera rather than opening a second one.CallRingingButtonis the 64px round button answering, declining and cancelling are drawn with — a size noStreamButtonSizenames.CallControlButtongains athemeStylepass-through to carry it: it resolves after the ambientStreamButtonTheme, where a nested one would be dropped for thepositivetone, which already brings a theme of its own.Theming.
StreamIncomingCallThemeDataandStreamOutgoingCallThemeDataland onStreamVideoTheme, each carrying aStreamRingingCallStylethatStreamIncomingCallContent.styleandStreamOutgoingCallContent.styleoverride per call site. The internal pieces take the resolved defaults rather than the all-nullable style, so nothing can hand them a style full of nulls.Localization. The ringing screens' text was hardcoded English; it now comes from the localizations, in English and Dutch.
Android full-screen incoming call. The activity follows the same design: the app surface rather than the blue default, a 104dp avatar, 64dp accept and decline buttons centred 80dp apart above the bottom.
Call.ktno longer defaultsfullScreenBackgroundColorandfullScreenTextColor, so the resource defaults are actually reached — the bundle always carried a colour before, and the full-screen UI stayed blue whatever the resources said. An integrator's own colour still paints all four labels, and a malformed colour is logged rather than silently ignored.🚧 Blocked on two other repos
The root
pubspec.yamlpins both by SHA. Both pins come off before this merges:🎨 UI Changes
🧪 Testing
Golden tests cover both screens; the committed
goldens/ci/*.pngare updated in this branch. The Android activity is not covered by tests — try it by ringing the dogfooding app with the screen locked.🤖 Generated with Claude Code