Skip to content

Impl/genre screen redesign#942

Merged
theovilardo merged 4 commits intomasterfrom
impl/genre-screen-redesign
Jan 29, 2026
Merged

Impl/genre screen redesign#942
theovilardo merged 4 commits intomasterfrom
impl/genre-screen-redesign

Conversation

@theovilardo
Copy link
Copy Markdown
Owner

No description provided.

- Removes commented-out `HorizontalDivider` from the lyrics search results list.
…onents

- **Dynamic Theming**:
    - Introduces `GenreThemeUtils` to generate custom color schemes based on genre IDs, utilizing hue-shifting to derive secondary and tertiary colors.
    - Wraps `GenreDetailScreen` in a dynamic `MaterialTheme` that reflects the current genre's color palette while preserving neutral colors for global components like bottom sheets.
- **UI & UX Improvements**:
    - Refactors `GenreSortBottomSheet` with a more modern layout, replacing simple list items with expressive cards and prominent action buttons.
    - Enhances `GenreCollapsibleTopBar` to interpolate content colors between vibrant and neutral tones during scroll-based collapse transitions.
    - Updates `GenreSortBottomSheet` to use `skipPartiallyExpanded` and adds extra bottom padding for better accessibility on devices with navigation bars.
- **Layout & Components**:
    - Adjusts list item spacing and padding within `GenreDetailScreen` to accommodate the new dynamic theme and player layout.
    - Ensures bottom sheets (Sort, Song Info, Playlist) correctly utilize base theme colors to maintain visual consistency with the rest of the application.
- **Utilities**:
    - Adds `shiftHue` helper to `GenreColors.kt` to facilitate color generation.
- **EnhancedSongListItem**:
    - Adds a `customShape` parameter to allow external control over the item's background shape.
    - Updates `surfaceShape` logic to prioritize the provided `customShape` when the song is not currently playing or loading.
- **GenreDetailScreen**:
    - Refines the album song list UI by applying dynamic `RoundedCornerShape` values based on a song's position (top, middle, bottom) within the album group.
    - Updates the album play button colors to use `onPrimary` for the icon and `primary` for the container for better contrast.
    - Adds a bottom spacer to the album song list for improved layout spacing.
- **Artist Data & Metadata**:
    - Integrates `ArtistImageRepository` into `MusicRepositoryImpl` to support artist image retrieval.
    - Enhances `getArtists` to combine MediaStore song data with cached database artists, enabling the display of remote artist images.
    - Implements an asynchronous prefetch mechanism in `MusicRepositoryImpl` to fetch missing artist images without blocking the UI.
    - Updates `ArtistImageRepository` with a `failedFetches` cache to prevent redundant API calls for non-existent artist images and improved error handling for timeouts.

- **Theming & UI**:
    - Adds a `contrastColor` utility to `GenreColors.kt` to dynamically determine the best text color (black/white) based on background luminance, improving accessibility across dynamic genre themes.
    - Updates `GenreDetailScreen` to use the standard `Rounded.Menu` icon for options and cleans up `LocalContentColor` imports.
    - Refines the vector path and attributes for `rounded_menu_24.xml` for better visual consistency.
    - Adds `rounded_bottom_drawer_24.xml` vector resource.

- **Dependency Injection**:
    - Updates `AppModule` to provide `ArtistImageRepository` to `MusicRepositoryImpl`.
@theovilardo theovilardo merged commit d3c853d into master Jan 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant