diff --git a/app/src/main/java/org/lineageos/twelve/fragments/MainFragment.kt b/app/src/main/java/org/lineageos/twelve/fragments/MainFragment.kt
index b9d0016..66a35f6 100644
--- a/app/src/main/java/org/lineageos/twelve/fragments/MainFragment.kt
+++ b/app/src/main/java/org/lineageos/twelve/fragments/MainFragment.kt
@@ -22,6 +22,7 @@
 import kotlinx.coroutines.launch
 import org.lineageos.twelve.R
 import org.lineageos.twelve.ext.getViewProperty
+import org.lineageos.twelve.models.RequestStatus
 import org.lineageos.twelve.ui.views.NowPlayingBar
 import org.lineageos.twelve.viewmodels.NowPlayingViewModel
 
@@ -116,6 +117,24 @@
                         nowPlayingBar.updateMediaMetadata(it)
                     }
                 }
+
+                launch {
+                    viewModel.mediaArtwork.collectLatest {
+                        when (it) {
+                            is RequestStatus.Loading -> {
+                                // Do nothing
+                            }
+
+                            is RequestStatus.Success -> {
+                                nowPlayingBar.updateMediaArtwork(it.data)
+                            }
+
+                            is RequestStatus.Error -> throw Exception(
+                                "Error while getting media artwork"
+                            )
+                        }
+                    }
+                }
             }
         }
     }
diff --git a/app/src/main/java/org/lineageos/twelve/ui/views/NowPlayingBar.kt b/app/src/main/java/org/lineageos/twelve/ui/views/NowPlayingBar.kt
index d680f6c..12df33f 100644
--- a/app/src/main/java/org/lineageos/twelve/ui/views/NowPlayingBar.kt
+++ b/app/src/main/java/org/lineageos/twelve/ui/views/NowPlayingBar.kt
@@ -6,7 +6,6 @@
 package org.lineageos.twelve.ui.views
 
 import android.content.Context
-import android.graphics.BitmapFactory
 import android.graphics.ImageDecoder
 import android.util.AttributeSet
 import android.widget.FrameLayout
@@ -21,6 +20,7 @@
 import org.lineageos.twelve.R
 import org.lineageos.twelve.ext.slideDown
 import org.lineageos.twelve.ext.slideUp
+import org.lineageos.twelve.models.Thumbnail
 
 class NowPlayingBar @JvmOverloads constructor(
     context: Context, attrs: AttributeSet? = null
@@ -64,23 +64,6 @@
     }
 
     fun updateMediaMetadata(mediaMetadata: MediaMetadata) {
-        mediaMetadata.artworkData?.also { artworkData ->
-            BitmapFactory.decodeByteArray(
-                artworkData, 0, artworkData.size
-            )?.let { bitmap ->
-                thumbnailImageView.setImageBitmap(bitmap)
-            }
-        } ?: mediaMetadata.artworkUri?.also { artworkUri ->
-            ImageDecoder.createSource(
-                context.contentResolver,
-                artworkUri
-            ).let { source ->
-                ImageDecoder.decodeBitmap(source)
-            }.also { bitmap ->
-                thumbnailImageView.setImageBitmap(bitmap)
-            }
-        } ?: thumbnailImageView.setImageResource(R.drawable.ic_music_note)
-
         mediaMetadata.title?.also {
             titleTextView.text = it
             titleTextView.isVisible = true
@@ -103,6 +86,21 @@
         }
     }
 
+    fun updateMediaArtwork(artwork: Thumbnail?) {
+        artwork?.bitmap?.also { bitmap ->
+            thumbnailImageView.setImageBitmap(bitmap)
+        } ?: artwork?.uri?.also { artworkUri ->
+            ImageDecoder.createSource(
+                context.contentResolver,
+                artworkUri
+            ).let { source ->
+                ImageDecoder.decodeBitmap(source)
+            }.also { bitmap ->
+                thumbnailImageView.setImageBitmap(bitmap)
+            }
+        } ?: thumbnailImageView.setImageResource(R.drawable.ic_music_note)
+    }
+
     fun updateDurationCurrentPositionMs(durationMs: Long?, currentPositionMs: Long?) {
         val currentPositionSecs = currentPositionMs?.let { it / 1000 }?.toInt() ?: 0
         val durationSecs = durationMs?.let { it / 1000 }?.toInt()?.takeIf { it != 0 } ?: 1
