From 2497fa87022fb4cd1ea309eb93d095b56a40afe8 Mon Sep 17 00:00:00 2001 From: FineFindus Date: Thu, 13 Mar 2025 15:53:14 +0100 Subject: [PATCH] refactor(MediaServiceRepository): use lists for SponsorBlock categories According to the SponsorBlock API documentation categories and actionTypes are string arrays. --- .../github/libretube/api/MediaServiceRepository.kt | 4 ++-- .../libretube/api/PipedMediaServiceRepository.kt | 11 ++++++++--- .../github/libretube/services/OnlinePlayerService.kt | 4 ++-- .../libretube/ui/dialogs/SubmitSegmentDialog.kt | 2 +- 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/github/libretube/api/MediaServiceRepository.kt b/app/src/main/java/com/github/libretube/api/MediaServiceRepository.kt index c3123e2ae..f50707a16 100644 --- a/app/src/main/java/com/github/libretube/api/MediaServiceRepository.kt +++ b/app/src/main/java/com/github/libretube/api/MediaServiceRepository.kt @@ -17,8 +17,8 @@ interface MediaServiceRepository { suspend fun getComments(videoId: String): CommentsPage suspend fun getSegments( videoId: String, - category: String, - actionType: String? = null + category: List, + actionType: List? = null ): SegmentData suspend fun getDeArrowContent(videoIds: String): Map diff --git a/app/src/main/java/com/github/libretube/api/PipedMediaServiceRepository.kt b/app/src/main/java/com/github/libretube/api/PipedMediaServiceRepository.kt index c1b9c1a92..77d45fb4e 100644 --- a/app/src/main/java/com/github/libretube/api/PipedMediaServiceRepository.kt +++ b/app/src/main/java/com/github/libretube/api/PipedMediaServiceRepository.kt @@ -13,6 +13,7 @@ import com.github.libretube.api.obj.StreamItem import com.github.libretube.api.obj.Streams import com.github.libretube.constants.PreferenceKeys import com.github.libretube.helpers.PreferenceHelper +import kotlinx.serialization.encodeToString import retrofit2.HttpException open class PipedMediaServiceRepository : MediaServiceRepository { @@ -36,9 +37,13 @@ open class PipedMediaServiceRepository : MediaServiceRepository { override suspend fun getSegments( videoId: String, - category: String, - actionType: String? - ): SegmentData = api.getSegments(videoId, category, actionType) + category: List, + actionType: List? + ): SegmentData = api.getSegments( + videoId, + JsonHelper.json.encodeToString(category), + JsonHelper.json.encodeToString(actionType) + ) override suspend fun getDeArrowContent(videoIds: String): Map = api.getDeArrowContent(videoIds) diff --git a/app/src/main/java/com/github/libretube/services/OnlinePlayerService.kt b/app/src/main/java/com/github/libretube/services/OnlinePlayerService.kt index 59fc5f8bc..938220638 100644 --- a/app/src/main/java/com/github/libretube/services/OnlinePlayerService.kt +++ b/app/src/main/java/com/github/libretube/services/OnlinePlayerService.kt @@ -209,8 +209,8 @@ open class OnlinePlayerService : AbstractPlayerService() { if (sponsorBlockConfig.isEmpty()) return@runCatching sponsorBlockSegments = MediaServiceRepository.instance.getSegments( videoId, - JsonHelper.json.encodeToString(sponsorBlockConfig.keys), - """["skip","mute","full","poi","chapter"]""" + sponsorBlockConfig.keys.toList(), + listOf("skip","mute","full","poi","chapter") ).segments withContext(Dispatchers.Main) { diff --git a/app/src/main/java/com/github/libretube/ui/dialogs/SubmitSegmentDialog.kt b/app/src/main/java/com/github/libretube/ui/dialogs/SubmitSegmentDialog.kt index ce5fb7061..70d7349c3 100644 --- a/app/src/main/java/com/github/libretube/ui/dialogs/SubmitSegmentDialog.kt +++ b/app/src/main/java/com/github/libretube/ui/dialogs/SubmitSegmentDialog.kt @@ -147,7 +147,7 @@ class SubmitSegmentDialog : DialogFragment() { private suspend fun fetchSegments() { val categories = resources.getStringArray(R.array.sponsorBlockSegments).toList() segments = try { - MediaServiceRepository.instance.getSegments(videoId, JsonHelper.json.encodeToString(categories)).segments + MediaServiceRepository.instance.getSegments(videoId, categories).segments } catch (e: Exception) { Log.e(TAG(), e.toString()) return