From c43baae8e863399b8c7d3317aea18ef4f231aa9b Mon Sep 17 00:00:00 2001
From: Ryan Harg <3821-ryan_harg@users.noreply.dev.funkwhale.audio>
Date: Fri, 17 Jun 2022 09:50:39 +0000
Subject: [PATCH] #117: Use the same contentId when adding and removing
 downloads

---
 .../funkwhale/ffa/playback/PinService.kt      | 20 ++++++++-----------
 changes/changelog.d/117.bugfix                |  1 +
 2 files changed, 9 insertions(+), 12 deletions(-)
 create mode 100644 changes/changelog.d/117.bugfix

diff --git a/app/src/main/java/audio/funkwhale/ffa/playback/PinService.kt b/app/src/main/java/audio/funkwhale/ffa/playback/PinService.kt
index fd91becf..691d6375 100644
--- a/app/src/main/java/audio/funkwhale/ffa/playback/PinService.kt
+++ b/app/src/main/java/audio/funkwhale/ffa/playback/PinService.kt
@@ -7,13 +7,7 @@ import androidx.core.net.toUri
 import audio.funkwhale.ffa.R
 import audio.funkwhale.ffa.model.DownloadInfo
 import audio.funkwhale.ffa.model.Track
-import audio.funkwhale.ffa.utils.AppContext
-import audio.funkwhale.ffa.utils.Event
-import audio.funkwhale.ffa.utils.EventBus
-import audio.funkwhale.ffa.utils.Request
-import audio.funkwhale.ffa.utils.RequestBus
-import audio.funkwhale.ffa.utils.Response
-import audio.funkwhale.ffa.utils.mustNormalizeUrl
+import audio.funkwhale.ffa.utils.*
 import com.google.android.exoplayer2.offline.Download
 import com.google.android.exoplayer2.offline.DownloadManager
 import com.google.android.exoplayer2.offline.DownloadRequest
@@ -24,10 +18,9 @@ import com.google.gson.Gson
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers.Main
 import kotlinx.coroutines.Job
-import kotlinx.coroutines.flow.collect
 import kotlinx.coroutines.launch
 import org.koin.java.KoinJavaComponent
-import java.util.Collections
+import java.util.*
 
 class PinService : DownloadService(AppContext.NOTIFICATION_DOWNLOADS) {
 
@@ -35,6 +28,7 @@ class PinService : DownloadService(AppContext.NOTIFICATION_DOWNLOADS) {
   private val exoDownloadManager: DownloadManager by KoinJavaComponent.inject(DownloadManager::class.java)
 
   companion object {
+
     fun download(context: Context, track: Track) {
       track.bestUpload()?.let { upload ->
         val url = mustNormalizeUrl(upload.listen_url)
@@ -48,7 +42,7 @@ class PinService : DownloadService(AppContext.NOTIFICATION_DOWNLOADS) {
           )
         ).toByteArray()
 
-        val request = DownloadRequest.Builder(track.id.toString(), url.toUri())
+        val request = DownloadRequest.Builder(url.toUri().toString(), url.toUri())
           .setData(data)
           .setStreamKeys(Collections.emptyList())
           .build()
@@ -72,8 +66,10 @@ class PinService : DownloadService(AppContext.NOTIFICATION_DOWNLOADS) {
     return super.onStartCommand(intent, flags, startId)
   }
 
-  override fun getDownloadManager() = exoDownloadManager.apply {
-    addListener(DownloadListener())
+  override fun getDownloadManager(): DownloadManager {
+    return exoDownloadManager.apply {
+      addListener(DownloadListener())
+    }
   }
 
   override fun getScheduler(): Scheduler? = null
diff --git a/changes/changelog.d/117.bugfix b/changes/changelog.d/117.bugfix
new file mode 100644
index 00000000..597ab415
--- /dev/null
+++ b/changes/changelog.d/117.bugfix
@@ -0,0 +1 @@
+Fix the removal of existing downloads
\ No newline at end of file
-- 
GitLab