From ba31a4efcf66e6f3e56a66d38d101e2574eed081 Mon Sep 17 00:00:00 2001 From: Antoine POPINEAU Date: Sat, 11 Jul 2020 21:01:09 +0200 Subject: [PATCH] Some tracks do not have album, this fixes a crash trying to retrieve their album cover. Changed the placeholder album cover to be less aggressive to the eye. --- .../apognu/otter/activities/MainActivity.kt | 8 ++++---- .../apognu/otter/adapters/FavoritesAdapter.kt | 2 +- .../otter/adapters/PlaylistTracksAdapter.kt | 2 +- .../apognu/otter/adapters/TracksAdapter.kt | 2 +- .../apognu/otter/fragments/AlbumsFragment.kt | 6 +++++- .../otter/fragments/PlaylistTracksFragment.kt | 2 +- .../fragments/TrackInfoDetailsFragment.kt | 2 +- .../otter/playback/MediaControlsManager.kt | 2 +- .../apognu/otter/playback/PlayerService.kt | 2 +- .../com/github/apognu/otter/utils/Models.kt | 4 ++-- app/src/main/res/drawable/cover.png | Bin 12252 -> 12176 bytes 11 files changed, 18 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/com/github/apognu/otter/activities/MainActivity.kt b/app/src/main/java/com/github/apognu/otter/activities/MainActivity.kt index af09cce..b1f5298 100644 --- a/app/src/main/java/com/github/apognu/otter/activities/MainActivity.kt +++ b/app/src/main/java/com/github/apognu/otter/activities/MainActivity.kt @@ -358,14 +358,14 @@ class MainActivity : AppCompatActivity() { now_playing_details_toggle.icon = getDrawable(R.drawable.pause) Picasso.get() - .maybeLoad(maybeNormalizeUrl(track.album.cover.original)) + .maybeLoad(maybeNormalizeUrl(track.album?.cover?.original)) .fit() .centerCrop() .into(now_playing_cover) now_playing_details_cover?.let { now_playing_details_cover -> Picasso.get() - .maybeLoad(maybeNormalizeUrl(track.album.cover.original)) + .maybeLoad(maybeNormalizeUrl(track.album?.cover?.original)) .fit() .centerCrop() .transform(RoundedCornersTransformation(16, 0)) @@ -379,7 +379,7 @@ class MainActivity : AppCompatActivity() { }.widthPixels val backgroundCover = Picasso.get() - .maybeLoad(maybeNormalizeUrl(track.album.cover.original)) + .maybeLoad(maybeNormalizeUrl(track.album?.cover?.original)) .get() .run { Bitmap.createScaledBitmap(this, width, width, false).toDrawable(resources) } .apply { @@ -410,7 +410,7 @@ class MainActivity : AppCompatActivity() { setOnMenuItemClickListener { when (it.itemId) { - R.id.track_info_artist -> ArtistsFragment.openAlbums(this@MainActivity, track.artist, art = track.album.cover.original) + R.id.track_info_artist -> ArtistsFragment.openAlbums(this@MainActivity, track.artist, art = track.album?.cover?.original) R.id.track_info_album -> AlbumsFragment.openTracks(this@MainActivity, track.album) R.id.track_info_details -> TrackInfoDetailsFragment.new(track).show(supportFragmentManager, "dialog") } diff --git a/app/src/main/java/com/github/apognu/otter/adapters/FavoritesAdapter.kt b/app/src/main/java/com/github/apognu/otter/adapters/FavoritesAdapter.kt index 1dc3826..3922856 100644 --- a/app/src/main/java/com/github/apognu/otter/adapters/FavoritesAdapter.kt +++ b/app/src/main/java/com/github/apognu/otter/adapters/FavoritesAdapter.kt @@ -44,7 +44,7 @@ class FavoritesAdapter(private val context: Context?, private val favoriteListen val favorite = data[position] Picasso.get() - .maybeLoad(maybeNormalizeUrl(favorite.album.cover.original)) + .maybeLoad(maybeNormalizeUrl(favorite.album?.cover?.original)) .fit() .placeholder(R.drawable.cover) .transform(RoundedCornersTransformation(16, 0)) diff --git a/app/src/main/java/com/github/apognu/otter/adapters/PlaylistTracksAdapter.kt b/app/src/main/java/com/github/apognu/otter/adapters/PlaylistTracksAdapter.kt index 3d006bf..a5536b9 100644 --- a/app/src/main/java/com/github/apognu/otter/adapters/PlaylistTracksAdapter.kt +++ b/app/src/main/java/com/github/apognu/otter/adapters/PlaylistTracksAdapter.kt @@ -56,7 +56,7 @@ class PlaylistTracksAdapter(private val context: Context?, private val favoriteL val track = data[position] Picasso.get() - .maybeLoad(maybeNormalizeUrl(track.track.album.cover.original)) + .maybeLoad(maybeNormalizeUrl(track.track.album?.cover?.original)) .fit() .placeholder(R.drawable.cover) .transform(RoundedCornersTransformation(16, 0)) diff --git a/app/src/main/java/com/github/apognu/otter/adapters/TracksAdapter.kt b/app/src/main/java/com/github/apognu/otter/adapters/TracksAdapter.kt index f1402c4..5b970c1 100644 --- a/app/src/main/java/com/github/apognu/otter/adapters/TracksAdapter.kt +++ b/app/src/main/java/com/github/apognu/otter/adapters/TracksAdapter.kt @@ -52,7 +52,7 @@ class TracksAdapter(private val context: Context?, private val favoriteListener: val track = data[position] Picasso.get() - .maybeLoad(maybeNormalizeUrl(track.album.cover.original)) + .maybeLoad(maybeNormalizeUrl(track.album?.cover?.original)) .fit() .transform(RoundedCornersTransformation(8, 0)) .into(holder.cover) diff --git a/app/src/main/java/com/github/apognu/otter/fragments/AlbumsFragment.kt b/app/src/main/java/com/github/apognu/otter/fragments/AlbumsFragment.kt index e1ace47..7115ece 100644 --- a/app/src/main/java/com/github/apognu/otter/fragments/AlbumsFragment.kt +++ b/app/src/main/java/com/github/apognu/otter/fragments/AlbumsFragment.kt @@ -54,7 +54,11 @@ class AlbumsFragment : OtterFragment() { } } - fun openTracks(context: Context?, album: Album, fragment: Fragment? = null) { + fun openTracks(context: Context?, album: Album?, fragment: Fragment? = null) { + if (album == null) { + return + } + (context as? MainActivity)?.let { fragment?.let { fragment -> fragment.onViewPager { diff --git a/app/src/main/java/com/github/apognu/otter/fragments/PlaylistTracksFragment.kt b/app/src/main/java/com/github/apognu/otter/fragments/PlaylistTracksFragment.kt index 11fa03e..2593bbd 100644 --- a/app/src/main/java/com/github/apognu/otter/fragments/PlaylistTracksFragment.kt +++ b/app/src/main/java/com/github/apognu/otter/fragments/PlaylistTracksFragment.kt @@ -126,7 +126,7 @@ class PlaylistTracksFragment : OtterFragment) { - data.map { it.track.album }.toSet().map { it.cover.original }.take(4).forEachIndexed { index, url -> + data.map { it.track.album }.toSet().map { it?.cover?.original }.take(4).forEachIndexed { index, url -> val imageView = when (index) { 0 -> cover_top_left 1 -> cover_top_right diff --git a/app/src/main/java/com/github/apognu/otter/fragments/TrackInfoDetailsFragment.kt b/app/src/main/java/com/github/apognu/otter/fragments/TrackInfoDetailsFragment.kt index 0dceaaf..927a7aa 100644 --- a/app/src/main/java/com/github/apognu/otter/fragments/TrackInfoDetailsFragment.kt +++ b/app/src/main/java/com/github/apognu/otter/fragments/TrackInfoDetailsFragment.kt @@ -22,7 +22,7 @@ class TrackInfoDetailsFragment : DialogFragment() { return TrackInfoDetailsFragment().apply { arguments = bundleOf( "artistName" to track.artist.name, - "albumTitle" to track.album.title, + "albumTitle" to track.album?.title, "trackTitle" to track.title, "trackCopyright" to track.copyright, "trackLicense" to track.license, diff --git a/app/src/main/java/com/github/apognu/otter/playback/MediaControlsManager.kt b/app/src/main/java/com/github/apognu/otter/playback/MediaControlsManager.kt index 53cc04f..eb197c2 100644 --- a/app/src/main/java/com/github/apognu/otter/playback/MediaControlsManager.kt +++ b/app/src/main/java/com/github/apognu/otter/playback/MediaControlsManager.kt @@ -41,7 +41,7 @@ class MediaControlsManager(val context: Service, private val scope: CoroutineSco val openIntent = Intent(context, MainActivity::class.java).apply { action = NOTIFICATION_ACTION_OPEN_QUEUE.toString() } val openPendingIntent = PendingIntent.getActivity(context, 0, openIntent, 0) - val coverUrl = maybeNormalizeUrl(track.album.cover.original) + val coverUrl = maybeNormalizeUrl(track.album?.cover?.original) notification = NotificationCompat.Builder( context, diff --git a/app/src/main/java/com/github/apognu/otter/playback/PlayerService.kt b/app/src/main/java/com/github/apognu/otter/playback/PlayerService.kt index 3a1ceaa..84ec263 100644 --- a/app/src/main/java/com/github/apognu/otter/playback/PlayerService.kt +++ b/app/src/main/java/com/github/apognu/otter/playback/PlayerService.kt @@ -342,7 +342,7 @@ class PlayerService : Service() { private fun buildTrackMetadata(track: Track?): MediaMetadataCompat { track?.let { - val coverUrl = maybeNormalizeUrl(track.album.cover.original) + val coverUrl = maybeNormalizeUrl(track.album?.cover?.original) return mediaMetadataBuilder.apply { putString(MediaMetadataCompat.METADATA_KEY_TITLE, track.title) diff --git a/app/src/main/java/com/github/apognu/otter/utils/Models.kt b/app/src/main/java/com/github/apognu/otter/utils/Models.kt index a83d4cf..955f627 100644 --- a/app/src/main/java/com/github/apognu/otter/utils/Models.kt +++ b/app/src/main/java/com/github/apognu/otter/utils/Models.kt @@ -99,7 +99,7 @@ data class Track( val id: Int = 0, val title: String, val artist: Artist, - val album: Album, + val album: Album?, val position: Int = 0, val uploads: List = listOf(), val copyright: String? = null, @@ -143,7 +143,7 @@ data class Track( } } - override fun cover() = album.cover.original + override fun cover() = album?.cover?.original override fun title() = title override fun subtitle() = artist.name } diff --git a/app/src/main/res/drawable/cover.png b/app/src/main/res/drawable/cover.png index e1b7511b6b4e444488b1d4e4264aae3bac72d470..c9c1f21866631e29821399a938609388ae2dfb6c 100644 GIT binary patch literal 12176 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 WZ08ih?J!%|AtM8G{c2s8yZ;A8T8oze literal 12252 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