-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
fix(android): RootLayout shade cover unexpected delay #10752
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(android): RootLayout shade cover unexpected delay #10752
Conversation
WalkthroughThe update refactors how linear gradient backgrounds are handled during shade cover animations on Android within the Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant RootLayout
participant NativeView
User->>RootLayout: Trigger shade cover animation
RootLayout->>NativeView: Apply initial animation state (alpha, scale, translation, rotation)
RootLayout->>RootLayout: Detect if background is linear gradient
alt Linear gradient
RootLayout->>NativeView: Set background image to parsed gradient
RootLayout->>NativeView: Clear solid background color
else Solid color
RootLayout->>NativeView: Clear background image
RootLayout->>NativeView: Set background color
end
RootLayout->>NativeView: Animate properties (translation in device pixels, etc.)
Possibly related PRs
Suggested reviewers
Poem
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 ESLint
npm error Exit handler never called! ✨ Finishing Touches
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
View your CI Pipeline Execution ↗ for commit ccad490.
☁️ Nx Cloud last updated this comment at |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (2)
packages/core/ui/layouts/root-layout/index.android.ts (2)
64-77
: Well-implemented gradient handling logic!The separation of gradient backgrounds from color animation correctly addresses the exit animation breakage issue. The mutual exclusivity between
backgroundColor
andbackgroundImage
is properly maintained.Consider using optional chaining for a more concise syntax:
-const isBackgroundGradient = options.color && options.color.startsWith('linear-gradient'); +const isBackgroundGradient = options.color?.startsWith('linear-gradient');
41-116
: Consider adding test coverage for the fixes.While the implementation correctly addresses both the initialization delay and gradient animation issues, the PR checklist indicates no new tests were added. Consider adding unit tests to verify:
- Direct property setting during initialization (no animation delay)
- Gradient backgrounds are preserved during exit animations
- Pixel conversion is applied correctly for translation values
Would you like me to help generate unit tests for these scenarios or open an issue to track this task?
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
packages/core/ui/layouts/root-layout/index.android.ts
(5 hunks)
🧰 Additional context used
🪛 Biome (1.9.4)
packages/core/ui/layouts/root-layout/index.android.ts
[error] 64-64: Change to an optional chain.
Unsafe fix: Change to an optional chain.
(lint/complexity/useOptionalChain)
⏰ Context from checks skipped due to timeout of 90000ms (2)
- GitHub Check: test-android
- GitHub Check: test-ios
🔇 Additional comments (2)
packages/core/ui/layouts/root-layout/index.android.ts (2)
41-56
: Good fix for the initialization delay issue!The direct property setting on the native view eliminates the animation during initialization, which correctly addresses the unexpected delay mentioned in the PR objectives. The pixel conversion for translation values ensures proper device-independent rendering.
103-116
: Clean refactoring of the animation set logic!The conditional array sizing and simplified background color animator logic improve code clarity. The consistent use of
layout.toDevicePixels
for translation values matches the initialization logic.
PR Checklist
What is the current behavior?
During initialization, android RootLayout shade cover animates properties instead of directly setting values.
Also, the exit animation breaks if shade cover color is a gradient as current implementation unsets it.
What is the new behavior?
Summary by CodeRabbit
New Features
Bug Fixes
Style