From 28c2c0b25df106b01297fbcefcf83dcffaefbdb6 Mon Sep 17 00:00:00 2001 From: Barnabas Balogh Date: Tue, 3 Mar 2026 15:24:08 +0100 Subject: [PATCH] feat: show content title in download notification Store the movie/episode title as UTF-8 bytes in DownloadRequest.data when building each download request. PurefinDownloadService reads it back in getForegroundNotification() so the notification shows the actual title (e.g. "Inception") instead of the generic "Downloading". For multiple simultaneous downloads the existing "Downloading N files" text is kept. The title is persisted by Media3 alongside the request, so it survives app restarts. --- .../purefin/feature/download/MediaDownloadManager.kt | 8 ++++++-- .../purefin/feature/download/PurefinDownloadService.kt | 5 ++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/feature/download/src/main/java/hu/bbara/purefin/feature/download/MediaDownloadManager.kt b/feature/download/src/main/java/hu/bbara/purefin/feature/download/MediaDownloadManager.kt index e7a03a5..a68f9b5 100644 --- a/feature/download/src/main/java/hu/bbara/purefin/feature/download/MediaDownloadManager.kt +++ b/feature/download/src/main/java/hu/bbara/purefin/feature/download/MediaDownloadManager.kt @@ -164,7 +164,9 @@ class MediaDownloadManager @Inject constructor( offlineDataSource.saveMovies(listOf(movie)) Log.d(TAG, "Starting download for '${movie.title}' from: $url") - val request = DownloadRequest.Builder(movieId.toString(), url.toUri()).build() + val request = DownloadRequest.Builder(movieId.toString(), url.toUri()) + .setData(movie.title.toByteArray(Charsets.UTF_8)) + .build() PurefinDownloadService.sendAddDownload(context, request) Log.d(TAG, "Download request sent for $movieId") } catch (e: Exception) { @@ -226,7 +228,9 @@ class MediaDownloadManager @Inject constructor( offlineDataSource.saveEpisode(episode) Log.d(TAG, "Starting download for episode '${episode.title}' from: $url") - val request = DownloadRequest.Builder(episodeId.toString(), url.toUri()).build() + val request = DownloadRequest.Builder(episodeId.toString(), url.toUri()) + .setData(episode.title.toByteArray(Charsets.UTF_8)) + .build() PurefinDownloadService.sendAddDownload(context, request) Log.d(TAG, "Download request sent for episode $episodeId") } catch (e: Exception) { diff --git a/feature/download/src/main/java/hu/bbara/purefin/feature/download/PurefinDownloadService.kt b/feature/download/src/main/java/hu/bbara/purefin/feature/download/PurefinDownloadService.kt index 3b511d6..7018cd2 100644 --- a/feature/download/src/main/java/hu/bbara/purefin/feature/download/PurefinDownloadService.kt +++ b/feature/download/src/main/java/hu/bbara/purefin/feature/download/PurefinDownloadService.kt @@ -79,7 +79,10 @@ class PurefinDownloadService : DownloadService( } val title = if (activeDownloads.size == 1) { - "Downloading" + activeDownloads[0].request.data + ?.toString(Charsets.UTF_8) + ?.takeIf { it.isNotBlank() } + ?: "Downloading" } else { "Downloading ${activeDownloads.size} files" }