-
-
Notifications
You must be signed in to change notification settings - Fork 44
✨ animated-app-icon #145
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
✨ animated-app-icon #145
Conversation
WalkthroughThe changes update dependency configurations and resource usage across platforms. The SQLite bundled library is now desktop-specific, and database initialization is refactored into platform-specific DI modules. Multiple UI icons are switched from raster images to FontAwesome vector icons. A new animated splash drawable is introduced and referenced in splash screen themes. Changes
Sequence Diagram(s)sequenceDiagram
participant App
participant DI_Module_Common
participant DI_Module_Android
participant DI_Module_Desktop
participant DatabaseFactory
participant BundledSQLiteDriver
App->>DI_Module_Android: Initialize Koin (Android)
DI_Module_Android->>DatabaseFactory: get()
DatabaseFactory->>DatabaseFactory: create()
DatabaseFactory->>DatabaseFactory: build()
DI_Module_Android->>App: Provide database singleton
App->>DI_Module_Desktop: Initialize Koin (Desktop)
DI_Module_Desktop->>DatabaseFactory: get()
DatabaseFactory->>DatabaseFactory: create()
DI_Module_Desktop->>BundledSQLiteDriver: get()
DatabaseFactory->>DatabaseFactory: setDriver(BundledSQLiteDriver)
DatabaseFactory->>DatabaseFactory: build()
DI_Module_Desktop->>App: Provide database singleton
Poem
✨ 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 (
|
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
♻️ Duplicate comments (1)
app/src/androidMain/res/values-v31/splash.xml (1)
5-5: LGTM: Consistent splash screen resource change.The change maintains consistency with other splash screen configurations by using the same
@drawable/rush_splashreference. This ensures uniform behavior across different Android API levels.
🧹 Nitpick comments (3)
app/src/commonMain/kotlin/com/shub39/rush/core/presentation/ArtFromUrl.kt (1)
22-22: Remove unused import to avoidUNUSED_IMPORTwarning
geniusis referenced throughRes.drawable.genius, so this explicit import is redundant.- import rush.app.generated.resources.geniusapp/src/androidMain/res/drawable/rush_splash.xml (2)
18-20:strokeWidthwithoutstrokeColoris ignoredA
strokeWidthof1is declared but nostrokeColoris provided. Android VectorDrawable silently drops the stroke if the colour is missing, which yields the same pixels as omittingstrokeWidthaltogether and may trigger lint warnings.- android:strokeWidth="1" + <!-- Either remove the width or specify a colour --> + android:strokeWidth="1" + android:strokeColor="#f2e2b1"If a stroke is not required, simply delete the attribute.
27-42: Consider finishing the animation in view state to avoid splash flickerThe scale animation runs for 500 ms after a 200 ms delay, but there is no
fillAfter="true"/android:fillEnabled="true"in thisanimated-vector. Without it, some OEM skins briefly snap the layer back to its pre-animated (scale 0) state when the animation ends, causing a visible flicker before the activity launches.<set> + <!-- Persist end state --> + <objectAnimator + android:propertyName="scaleX" + android:fillAfter="true" + .../>Apply to both animators or wrap them in a
<set android:fillAfter="true"/>.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (23)
app/src/androidMain/res/mipmap-hdpi/ic_launcher.pngis excluded by!**/*.pngapp/src/androidMain/res/mipmap-hdpi/ic_launcher_background.pngis excluded by!**/*.pngapp/src/androidMain/res/mipmap-hdpi/ic_launcher_foreground.pngis excluded by!**/*.pngapp/src/androidMain/res/mipmap-hdpi/ic_launcher_monochrome.pngis excluded by!**/*.pngapp/src/androidMain/res/mipmap-mdpi/ic_launcher.pngis excluded by!**/*.pngapp/src/androidMain/res/mipmap-mdpi/ic_launcher_background.pngis excluded by!**/*.pngapp/src/androidMain/res/mipmap-mdpi/ic_launcher_foreground.pngis excluded by!**/*.pngapp/src/androidMain/res/mipmap-mdpi/ic_launcher_monochrome.pngis excluded by!**/*.pngapp/src/androidMain/res/mipmap-xhdpi/ic_launcher.pngis excluded by!**/*.pngapp/src/androidMain/res/mipmap-xhdpi/ic_launcher_background.pngis excluded by!**/*.pngapp/src/androidMain/res/mipmap-xhdpi/ic_launcher_foreground.pngis excluded by!**/*.pngapp/src/androidMain/res/mipmap-xhdpi/ic_launcher_monochrome.pngis excluded by!**/*.pngapp/src/androidMain/res/mipmap-xxhdpi/ic_launcher.pngis excluded by!**/*.pngapp/src/androidMain/res/mipmap-xxhdpi/ic_launcher_background.pngis excluded by!**/*.pngapp/src/androidMain/res/mipmap-xxhdpi/ic_launcher_foreground.pngis excluded by!**/*.pngapp/src/androidMain/res/mipmap-xxhdpi/ic_launcher_monochrome.pngis excluded by!**/*.pngapp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.pngis excluded by!**/*.pngapp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_background.pngis excluded by!**/*.pngapp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_foreground.pngis excluded by!**/*.pngapp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_monochrome.pngis excluded by!**/*.pngapp/src/commonMain/composeResources/drawable/rush_transparent.pngis excluded by!**/*.pngfastlane/metadata/android/en-US/images/icon.pngis excluded by!**/*.pngfastlane/metadata/android/en-US/images/icon200x200.pngis excluded by!**/*.png
📒 Files selected for processing (13)
app/build.gradle.kts(1 hunks)app/src/androidMain/kotlin/com/shub39/rush/di/RushModules.android.kt(1 hunks)app/src/androidMain/kotlin/com/shub39/rush/onboarding/OnBoardingDialog.kt(2 hunks)app/src/androidMain/res/drawable/rush_splash.xml(1 hunks)app/src/androidMain/res/values-night-v31/splash.xml(1 hunks)app/src/androidMain/res/values-night/splash.xml(1 hunks)app/src/androidMain/res/values-v31/splash.xml(1 hunks)app/src/androidMain/res/values/splash.xml(1 hunks)app/src/commonMain/kotlin/com/shub39/rush/core/presentation/ArtFromUrl.kt(2 hunks)app/src/commonMain/kotlin/com/shub39/rush/di/RushModules.kt(0 hunks)app/src/commonMain/kotlin/com/shub39/rush/lyrics/presentation/lyrics/component/ActionsRow.kt(2 hunks)app/src/commonMain/kotlin/com/shub39/rush/lyrics/presentation/saved/SavedPage.kt(2 hunks)app/src/desktopMain/kotlin/com/shub39/rush/di/RushModules.desktop.kt(2 hunks)
💤 Files with no reviewable changes (1)
- app/src/commonMain/kotlin/com/shub39/rush/di/RushModules.kt
🔇 Additional comments (15)
app/src/commonMain/kotlin/com/shub39/rush/core/presentation/ArtFromUrl.kt (1)
50-50: Ensure thegeniusdrawable exists for every targetThe placeholder swap looks fine; just double-check that
geniusis generated for all supported platforms (Android, iOS, desktop). A missing resource will break the build at link time.app/build.gradle.kts (1)
177-177: LGTM: Proper platform-specific dependency management.Moving the SQLite bundled dependency from commonMain to desktopMain correctly aligns with the platform-specific database driver usage in the DI modules.
app/src/desktopMain/kotlin/com/shub39/rush/di/RushModules.desktop.kt (2)
3-3: LGTM: Proper import addition.The import for
BundledSQLiteDriveris correctly added to support the desktop-specific database configuration.
24-28: LGTM: Correct database singleton implementation.The database singleton is properly implemented using the builder pattern and correctly integrates with the existing
DatabaseFactorysingleton. TheBundledSQLiteDriveris appropriately used for the desktop platform.app/src/androidMain/kotlin/com/shub39/rush/di/RushModules.android.kt (1)
19-19: LGTM: Correct Android database singleton implementation.The database singleton is properly implemented for Android, correctly using the platform's default SQLite driver by not specifying an explicit driver.
app/src/androidMain/res/values/splash.xml (1)
4-4: Splash drawable resource verifiedThe
rush_splash.xmldrawable was found atapp/src/androidMain/res/drawable/rush_splash.xml. No missing resources—this change is safe to merge.app/src/androidMain/res/values-night-v31/splash.xml (1)
5-5: Good improvement to animated splash screen.The change from mipmap resource to drawable resource enables the use of animated vector drawables for the splash screen, which provides better scalability and animation capabilities.
app/src/androidMain/res/values-night/splash.xml (1)
4-4: Consistent splash screen update across theme variants.The change maintains consistency with other splash theme files by using the same animated drawable resource across different Android theme variants.
app/src/commonMain/kotlin/com/shub39/rush/lyrics/presentation/lyrics/component/ActionsRow.kt (2)
28-28: Good addition of FontAwesome vector icon.Adding the FontAwesome Meteor icon import enables the use of scalable vector icons instead of raster images.
189-191: Excellent replacement of raster icon with vector icon.The changes improve the codebase by:
- Replacing raster image (
rush_transparent) with scalable FontAwesome vector icon- Adjusting icon size to 20.dp for better visual consistency
- Using semantically appropriate Meteor icon for "Rush Mode" functionality
Vector icons provide better scalability and consistent appearance across different screen densities.
app/src/commonMain/kotlin/com/shub39/rush/lyrics/presentation/saved/SavedPage.kt (2)
60-60: Good addition of FontAwesome vector icon import.Adding the FontAwesome Meteor icon import supports the transition to scalable vector icons.
167-169: Excellent improvements to icon and accessibility.The changes provide multiple improvements:
- Replacing raster image with scalable FontAwesome vector icon
- Improving content description from "App Icon" to "Rush Mode" for better accessibility
- Adjusting icon size to 24.dp for visual consistency
The more descriptive content description is particularly valuable for users with accessibility needs.
app/src/androidMain/kotlin/com/shub39/rush/onboarding/OnBoardingDialog.kt (2)
45-45: Good addition of FontAwesome vector icon import.Adding the FontAwesome Meteor icon import enables consistent iconography across the app.
165-166: Excellent icon replacement with improved accessibility.The changes provide valuable improvements:
- Replacing raster image with scalable FontAwesome vector icon
- Adding descriptive content description "Rush Mode" for better accessibility
- Maintaining appropriate icon size for the onboarding context
The addition of content description where there wasn't one before is particularly beneficial for users with accessibility needs.
app/src/androidMain/res/drawable/rush_splash.xml (1)
13-14: Unusual pivot outside the viewport – double-check the visual outcome
pivotX="288"and especiallypivotY="-144"place the scaling origin on the right edge and 144 px above the top of the 288 × 288 viewport.
That is perfectly legal, but it makes the initial scale-from-zero animation look like a slide-in rather than a pure zoom. If the splash should expand symmetrically from its centre, set the pivot to half the viewport (144,144). Otherwise, keep as is but verify on devices with different DPIs that the graphic does not jump or clip.
Summary by CodeRabbit
New Features
Improvements
Bug Fixes
Chores