Conversation
…ceholders, and new statistics display
There was a problem hiding this comment.
Pull request overview
This PR redesigns the artist screen with a modernized UI featuring circular artist images, gradient backgrounds extracted from artist thumbnails, improved button layouts, statistics display, and enhanced content organization with "view all" functionality.
- Adds string resources for "view_all" and "more" in multiple languages (English, Korean, Japanese, Indonesian, French, German)
- Redesigns artist screen with circular image, mesh gradient background, parallax effects, and improved layout
- Implements palette-based gradient extraction for visual enhancement
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| app/src/main/res/values/strings.xml | Adds "view_all" and "more" string resources |
| app/src/main/res/values-ko/strings.xml | Korean translations for new strings |
| app/src/main/res/values-ja/strings.xml | Japanese translations for new strings |
| app/src/main/res/values-in-rID/strings.xml | Indonesian translations for new strings |
| app/src/main/res/values-fr/strings.xml | French translations for new strings |
| app/src/main/res/values-de-rDE/strings.xml | German translations for new strings |
| app/src/main/kotlin/moe/koiverse/archivetune/ui/screens/artist/ArtistScreen.kt | Complete redesign of artist screen UI with new visual effects, circular images, gradient backgrounds, stats display, and improved layout |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| ) | ||
| } | ||
| }, | ||
| onLongClick = {}, |
There was a problem hiding this comment.
Empty onLongClick handler serves no purpose. If long-click functionality is not needed, remove this parameter. If it's meant to prevent parent handlers from triggering, add a comment explaining this intent.
| onLongClick = {}, |
| ) | ||
| } | ||
| }, | ||
| onLongClick = {}, |
There was a problem hiding this comment.
Empty onLongClick handler serves no purpose. If long-click functionality is not needed, remove this parameter. If it's meant to prevent parent handlers from triggering, add a comment explaining this intent.
| onLongClick = {}, |
| Toast.makeText(context, R.string.link_copied, Toast.LENGTH_SHORT).show() | ||
| } | ||
| }, | ||
| onLongClick = {}, |
There was a problem hiding this comment.
Empty onLongClick handler serves no purpose. If long-click functionality is not needed, remove this parameter. If it's meant to prevent parent handlers from triggering, add a comment explaining this intent.
| onLongClick = {}, |
| } | ||
| context.startActivity(Intent.createChooser(shareIntent, null)) | ||
| }, | ||
| onLongClick = {}, |
There was a problem hiding this comment.
Empty onLongClick handler serves no purpose. If long-click functionality is not needed, remove this parameter. If it's meant to prevent parent handlers from triggering, add a comment explaining this intent.
| onLongClick = {}, |
| items( | ||
| items = filteredLibraryAlbums, | ||
| key = { "local_album_${it.id}_${filteredLibraryAlbums.indexOf(it)}" } | ||
| key = { "local_album_${it.id}" } |
There was a problem hiding this comment.
The key format was changed from \"local_album_${it.id}_${filteredLibraryAlbums.indexOf(it)}\" to \"local_album_${it.id}\". While the new format is cleaner, ensure that album IDs are guaranteed to be unique within the filtered list. If duplicate IDs are possible (e.g., from different sources), this could cause item recomposition issues.
| key = { "local_album_${it.id}" } | |
| key = { album -> "local_album_${album.id}_${filteredLibraryAlbums.indexOf(album)}" } |
| items( | ||
| items = section.items.distinctBy { it.id }, | ||
| key = { "youtube_album_${it.id}" }, | ||
| key = { "youtube_item_${it.id}" }, |
There was a problem hiding this comment.
The key format was changed from \"youtube_album_${it.id}\" to \"youtube_item_${it.id}\". This is more accurate since the section can contain various item types (albums, playlists, artists), but ensure all item types in this section have unique IDs to prevent key collisions.
| key = { "youtube_item_${it.id}" }, | |
| key = { | |
| val type = when (it) { | |
| is SongItem -> "song" | |
| is AlbumItem -> "album" | |
| is ArtistItem -> "artist" | |
| is PlaylistItem -> "playlist" | |
| else -> "item" | |
| } | |
| "youtube_${type}_${it.id}" | |
| }, |
No description provided.