From 70d9ba241b667158cfb0e0aea081f0382bd5d92b Mon Sep 17 00:00:00 2001 From: Ryan Harg <3821-ryan_harg@users.noreply.dev.funkwhale.audio> Date: Sun, 12 Jun 2022 12:48:32 +0000 Subject: [PATCH] Fix "A resource failed to call close." warnings. --- app/src/main/java/audio/funkwhale/ffa/FFA.kt | 2 +- .../funkwhale/ffa/activities/MainActivity.kt | 29 ++++++------- .../ffa/activities/SettingsActivity.kt | 2 +- .../ffa/fragments/AddToPlaylistDialog.kt | 2 +- .../funkwhale/ffa/fragments/FFAFragment.kt | 2 +- .../funkwhale/ffa/playback/PlayerService.kt | 12 +++--- .../funkwhale/ffa/playback/QueueManager.kt | 8 ++-- .../funkwhale/ffa/playback/RadioPlayer.kt | 16 ++++---- .../ffa/repositories/AlbumsRepository.kt | 5 +-- .../repositories/ArtistTracksRepository.kt | 5 +-- .../ffa/repositories/ArtistsRepository.kt | 4 +- .../ffa/repositories/FavoritesRepository.kt | 10 ++--- .../repositories/PlaylistTracksRepository.kt | 4 +- .../ffa/repositories/PlaylistsRepository.kt | 8 ++-- .../ffa/repositories/RadiosRepository.kt | 4 +- .../funkwhale/ffa/repositories/Repository.kt | 6 +-- .../ffa/repositories/SearchRepository.kt | 12 +++--- .../ffa/repositories/TracksRepository.kt | 4 +- .../audio/funkwhale/ffa/utils/FFACache.kt | 41 ++++++++++++++----- changes/changelog.d/119.bugfix | 1 + 20 files changed, 98 insertions(+), 79 deletions(-) create mode 100644 changes/changelog.d/119.bugfix diff --git a/app/src/main/java/audio/funkwhale/ffa/FFA.kt b/app/src/main/java/audio/funkwhale/ffa/FFA.kt index e529940..0b8fe9d 100644 --- a/app/src/main/java/audio/funkwhale/ffa/FFA.kt +++ b/app/src/main/java/audio/funkwhale/ffa/FFA.kt @@ -83,7 +83,7 @@ class FFA : Application() { builder.appendLine(e.toString()) - FFACache.set(this@FFA, "crashdump", builder.toString().toByteArray()) + FFACache.set(this@FFA, "crashdump", builder.toString()) } } diff --git a/app/src/main/java/audio/funkwhale/ffa/activities/MainActivity.kt b/app/src/main/java/audio/funkwhale/ffa/activities/MainActivity.kt index fc01c5b..71add7a 100644 --- a/app/src/main/java/audio/funkwhale/ffa/activities/MainActivity.kt +++ b/app/src/main/java/audio/funkwhale/ffa/activities/MainActivity.kt @@ -160,17 +160,17 @@ class MainActivity : AppCompatActivity() { } binding.nowPlayingContainer?.nowPlayingDetailsProgress?.setOnSeekBarChangeListener(object : - SeekBar.OnSeekBarChangeListener { - override fun onStopTrackingTouch(view: SeekBar?) {} + SeekBar.OnSeekBarChangeListener { + override fun onStopTrackingTouch(view: SeekBar?) {} - override fun onStartTrackingTouch(view: SeekBar?) {} + override fun onStartTrackingTouch(view: SeekBar?) {} - override fun onProgressChanged(view: SeekBar?, progress: Int, fromUser: Boolean) { - if (fromUser) { - CommandBus.send(Command.Seek(progress)) - } + override fun onProgressChanged(view: SeekBar?, progress: Int, fromUser: Boolean) { + if (fromUser) { + CommandBus.send(Command.Seek(progress)) } - }) + } + }) landscapeQueue?.let { supportFragmentManager.beginTransaction() @@ -379,7 +379,8 @@ class MainActivity : AppCompatActivity() { when (message.playing) { true -> { binding.nowPlayingContainer?.nowPlayingToggle?.icon = getDrawable(R.drawable.pause) - binding.nowPlayingContainer?.nowPlayingDetailsToggle?.icon = getDrawable(R.drawable.pause) + binding.nowPlayingContainer?.nowPlayingDetailsToggle?.icon = + getDrawable(R.drawable.pause) } false -> { @@ -529,10 +530,10 @@ class MainActivity : AppCompatActivity() { } binding.nowPlayingContainer?.nowPlayingDetailsRepeat?.let { now_playing_details_repeat -> - changeRepeatMode(FFACache.get(this@MainActivity, "repeat")?.readLine()?.toInt() ?: 0) + changeRepeatMode(FFACache.getLine(this@MainActivity, "repeat")?.toInt() ?: 0) now_playing_details_repeat.setOnClickListener { - val current = FFACache.get(this@MainActivity, "repeat")?.readLine()?.toInt() ?: 0 + val current = FFACache.getLine(this@MainActivity, "repeat")?.toInt() ?: 0 changeRepeatMode((current + 1) % 3) } @@ -612,7 +613,7 @@ class MainActivity : AppCompatActivity() { when (index) { // From no repeat to repeat all 0 -> { - FFACache.set(this@MainActivity, "repeat", "0".toByteArray()) + FFACache.set(this@MainActivity, "repeat", "0") binding.nowPlayingContainer?.nowPlayingDetailsRepeat?.setImageResource(R.drawable.repeat) binding.nowPlayingContainer?.nowPlayingDetailsRepeat?.setColorFilter( @@ -628,7 +629,7 @@ class MainActivity : AppCompatActivity() { // From repeat all to repeat one 1 -> { - FFACache.set(this@MainActivity, "repeat", "1".toByteArray()) + FFACache.set(this@MainActivity, "repeat", "1") binding.nowPlayingContainer?.nowPlayingDetailsRepeat?.setImageResource(R.drawable.repeat) binding.nowPlayingContainer?.nowPlayingDetailsRepeat?.setColorFilter( @@ -644,7 +645,7 @@ class MainActivity : AppCompatActivity() { // From repeat one to no repeat 2 -> { - FFACache.set(this@MainActivity, "repeat", "2".toByteArray()) + FFACache.set(this@MainActivity, "repeat", "2") binding.nowPlayingContainer?.nowPlayingDetailsRepeat?.setImageResource(R.drawable.repeat_one) binding.nowPlayingContainer?.nowPlayingDetailsRepeat?.setColorFilter( ContextCompat.getColor( diff --git a/app/src/main/java/audio/funkwhale/ffa/activities/SettingsActivity.kt b/app/src/main/java/audio/funkwhale/ffa/activities/SettingsActivity.kt index 4b0d072..b24fbda 100644 --- a/app/src/main/java/audio/funkwhale/ffa/activities/SettingsActivity.kt +++ b/app/src/main/java/audio/funkwhale/ffa/activities/SettingsActivity.kt @@ -66,7 +66,7 @@ class SettingsFragment : "crash" -> { activity?.let { activity -> (activity.getSystemService(Context.CLIPBOARD_SERVICE) as? ClipboardManager)?.also { clip -> - FFACache.get(activity, "crashdump")?.readLines()?.joinToString("\n").also { + FFACache.getLines(activity, "crashdump")?.joinToString("\n").also { clip.setPrimaryClip(ClipData.newPlainText("Funkwhale logs", it)) Toast.makeText( diff --git a/app/src/main/java/audio/funkwhale/ffa/fragments/AddToPlaylistDialog.kt b/app/src/main/java/audio/funkwhale/ffa/fragments/AddToPlaylistDialog.kt index 2c01cbb..fee6330 100644 --- a/app/src/main/java/audio/funkwhale/ffa/fragments/AddToPlaylistDialog.kt +++ b/app/src/main/java/audio/funkwhale/ffa/fragments/AddToPlaylistDialog.kt @@ -124,7 +124,7 @@ object AddToPlaylistDialog { FFACache.set( context, cacheId, - Gson().toJson(cache(adapter.data)).toByteArray() + Gson().toJson(cache(adapter.data)).toString() ) } catch (e: ConcurrentModificationException) { } diff --git a/app/src/main/java/audio/funkwhale/ffa/fragments/FFAFragment.kt b/app/src/main/java/audio/funkwhale/ffa/fragments/FFAFragment.kt index 60cc066..0303c87 100644 --- a/app/src/main/java/audio/funkwhale/ffa/fragments/FFAFragment.kt +++ b/app/src/main/java/audio/funkwhale/ffa/fragments/FFAFragment.kt @@ -150,7 +150,7 @@ abstract class FFAFragment>() : Fragment() { FFACache.set( context, cacheId, - Gson().toJson(repository.cache(adapter.data)).toByteArray() + Gson().toJson(repository.cache(adapter.data)).toString() ) } } catch (e: ConcurrentModificationException) { diff --git a/app/src/main/java/audio/funkwhale/ffa/playback/PlayerService.kt b/app/src/main/java/audio/funkwhale/ffa/playback/PlayerService.kt index ab8b556..d82db35 100644 --- a/app/src/main/java/audio/funkwhale/ffa/playback/PlayerService.kt +++ b/app/src/main/java/audio/funkwhale/ffa/playback/PlayerService.kt @@ -153,8 +153,8 @@ class PlayerService : Service() { if (queue.current > -1) { player.prepare(queue.dataSources) - FFACache.get(this, "progress")?.let { progress -> - player.seekTo(queue.current, progress.readLine().toLong()) + FFACache.getLine(this, "progress")?.let { + player.seekTo(queue.current, it.toLong()) val (current, duration, percent) = getProgress(true) @@ -303,7 +303,7 @@ class PlayerService : Service() { if (!state) { val (progress, _, _) = getProgress() - FFACache.set(this@PlayerService, "progress", progress.toString().toByteArray()) + FFACache.set(this@PlayerService, "progress", progress.toString()) } if (state && player.playbackState == Player.STATE_IDLE) { @@ -332,7 +332,7 @@ class PlayerService : Service() { private fun skipToNextTrack() { player.next() - FFACache.set(this@PlayerService, "progress", "0".toByteArray()) + FFACache.set(this@PlayerService, "progress", "0") ProgressBus.send(0, 0, 0) } @@ -481,7 +481,7 @@ class PlayerService : Service() { } if (queue.get().isNotEmpty() && queue.current() == queue.get() - .last() && radioPlayer.isActive() + .last() && radioPlayer.isActive() ) { scope.launch(IO) { if (radioPlayer.lock.tryAcquire()) { @@ -491,7 +491,7 @@ class PlayerService : Service() { } } - FFACache.set(this@PlayerService, "current", queue.current.toString().toByteArray()) + FFACache.set(this@PlayerService, "current", queue.current.toString()) CommandBus.send(Command.RefreshTrack(queue.current())) } diff --git a/app/src/main/java/audio/funkwhale/ffa/playback/QueueManager.kt b/app/src/main/java/audio/funkwhale/ffa/playback/QueueManager.kt index 211928d..d771f1b 100644 --- a/app/src/main/java/audio/funkwhale/ffa/playback/QueueManager.kt +++ b/app/src/main/java/audio/funkwhale/ffa/playback/QueueManager.kt @@ -28,7 +28,7 @@ class QueueManager(val context: Context) { var current = -1 init { - FFACache.get(context, "queue")?.let { json -> + FFACache.getLine(context, "queue")?.let { json -> gsonDeserializerOf(QueueCache::class.java).deserialize(json)?.let { cache -> metadata = cache.data.toMutableList() @@ -45,8 +45,8 @@ class QueueManager(val context: Context) { } } - FFACache.get(context, "current")?.let { string -> - current = string.readLine().toInt() + FFACache.getLine(context, "current")?.let { + current = it.toInt() } } @@ -54,7 +54,7 @@ class QueueManager(val context: Context) { FFACache.set( context, "queue", - Gson().toJson(QueueCache(metadata)).toByteArray() + Gson().toJson(QueueCache(metadata)).toString() ) } diff --git a/app/src/main/java/audio/funkwhale/ffa/playback/RadioPlayer.kt b/app/src/main/java/audio/funkwhale/ffa/playback/RadioPlayer.kt index b9f3ce4..bb18ca5 100644 --- a/app/src/main/java/audio/funkwhale/ffa/playback/RadioPlayer.kt +++ b/app/src/main/java/audio/funkwhale/ffa/playback/RadioPlayer.kt @@ -53,10 +53,10 @@ class RadioPlayer(val context: Context, val scope: CoroutineScope) { private val favoritedRepository = FavoritedRepository(context) init { - FFACache.get(context, "radio_type")?.readLine()?.let { radio_type -> - FFACache.get(context, "radio_id")?.readLine()?.toInt()?.let { radio_id -> - FFACache.get(context, "radio_session")?.readLine()?.toInt()?.let { radio_session -> - val cachedCookie = FFACache.get(context, "radio_cookie")?.readLine() + FFACache.getLine(context, "radio_type")?.let { radio_type -> + FFACache.getLine(context, "radio_id")?.toInt()?.let { radio_id -> + FFACache.getLine(context, "radio_session")?.toInt()?.let { radio_session -> + val cachedCookie = FFACache.getLine(context, "radio_cookie") currentRadio = Radio(radio_id, radio_type, "", "") session = radio_session @@ -107,10 +107,10 @@ class RadioPlayer(val context: Context, val scope: CoroutineScope) { session = result.get().id cookie = response.header("set-cookie").joinToString(";") - FFACache.set(context, "radio_type", radio.radio_type.toByteArray()) - FFACache.set(context, "radio_id", radio.id.toString().toByteArray()) - FFACache.set(context, "radio_session", session.toString().toByteArray()) - FFACache.set(context, "radio_cookie", cookie.toString().toByteArray()) + FFACache.set(context, "radio_type", radio.radio_type) + FFACache.set(context, "radio_id", radio.id.toString()) + FFACache.set(context, "radio_session", session.toString()) + FFACache.set(context, "radio_cookie", cookie.toString()) prepareNextTrack(true) } catch (e: Exception) { diff --git a/app/src/main/java/audio/funkwhale/ffa/repositories/AlbumsRepository.kt b/app/src/main/java/audio/funkwhale/ffa/repositories/AlbumsRepository.kt index 37df6e7..b335a32 100644 --- a/app/src/main/java/audio/funkwhale/ffa/repositories/AlbumsRepository.kt +++ b/app/src/main/java/audio/funkwhale/ffa/repositories/AlbumsRepository.kt @@ -8,7 +8,6 @@ import audio.funkwhale.ffa.utils.OAuth import com.github.kittinunf.fuel.gson.gsonDeserializerOf import com.google.gson.reflect.TypeToken import org.koin.java.KoinJavaComponent.inject -import java.io.BufferedReader class AlbumsRepository(override val context: Context?, artistId: Int? = null) : Repository() { @@ -35,6 +34,6 @@ class AlbumsRepository(override val context: Context?, artistId: Int? = null) : } override fun cache(data: List) = AlbumsCache(data) - override fun uncache(reader: BufferedReader) = - gsonDeserializerOf(AlbumsCache::class.java).deserialize(reader) + override fun uncache(json: String) = + gsonDeserializerOf(AlbumsCache::class.java).deserialize(json) } diff --git a/app/src/main/java/audio/funkwhale/ffa/repositories/ArtistTracksRepository.kt b/app/src/main/java/audio/funkwhale/ffa/repositories/ArtistTracksRepository.kt index 46f9dd9..d4b420c 100644 --- a/app/src/main/java/audio/funkwhale/ffa/repositories/ArtistTracksRepository.kt +++ b/app/src/main/java/audio/funkwhale/ffa/repositories/ArtistTracksRepository.kt @@ -9,7 +9,6 @@ import audio.funkwhale.ffa.utils.OAuth import com.github.kittinunf.fuel.gson.gsonDeserializerOf import com.google.gson.reflect.TypeToken import org.koin.java.KoinJavaComponent.inject -import java.io.BufferedReader class ArtistTracksRepository(override val context: Context?, private val artistId: Int) : Repository() { @@ -27,6 +26,6 @@ class ArtistTracksRepository(override val context: Context?, private val artistI ) override fun cache(data: List) = TracksCache(data) - override fun uncache(reader: BufferedReader) = - gsonDeserializerOf(TracksCache::class.java).deserialize(reader) + override fun uncache(json: String) = + gsonDeserializerOf(TracksCache::class.java).deserialize(json) } diff --git a/app/src/main/java/audio/funkwhale/ffa/repositories/ArtistsRepository.kt b/app/src/main/java/audio/funkwhale/ffa/repositories/ArtistsRepository.kt index 3a108d7..ecb5aef 100644 --- a/app/src/main/java/audio/funkwhale/ffa/repositories/ArtistsRepository.kt +++ b/app/src/main/java/audio/funkwhale/ffa/repositories/ArtistsRepository.kt @@ -26,6 +26,6 @@ class ArtistsRepository(override val context: Context?) : Repository) = ArtistsCache(data) - override fun uncache(reader: BufferedReader) = - gsonDeserializerOf(ArtistsCache::class.java).deserialize(reader) + override fun uncache(json: String) = + gsonDeserializerOf(ArtistsCache::class.java).deserialize(json) } diff --git a/app/src/main/java/audio/funkwhale/ffa/repositories/FavoritesRepository.kt b/app/src/main/java/audio/funkwhale/ffa/repositories/FavoritesRepository.kt index 46cc2a2..3f7b34e 100644 --- a/app/src/main/java/audio/funkwhale/ffa/repositories/FavoritesRepository.kt +++ b/app/src/main/java/audio/funkwhale/ffa/repositories/FavoritesRepository.kt @@ -46,8 +46,8 @@ class FavoritesRepository(override val context: Context?) : Repository) = TracksCache(data) - override fun uncache(reader: BufferedReader) = - gsonDeserializerOf(TracksCache::class.java).deserialize(reader) + override fun uncache(json: String) = + gsonDeserializerOf(TracksCache::class.java).deserialize(json) private val favoritedRepository = FavoritedRepository(context!!) @@ -127,12 +127,12 @@ class FavoritedRepository(override val context: Context?) : Repository) = FavoritedCache(data) - override fun uncache(reader: BufferedReader) = - gsonDeserializerOf(FavoritedCache::class.java).deserialize(reader) + override fun uncache(json: String) = + gsonDeserializerOf(FavoritedCache::class.java).deserialize(json) fun update(context: Context?, scope: CoroutineScope) { fetch(Origin.Network.origin).untilNetwork(scope, IO) { favorites, _, _, _ -> - FFACache.set(context, cacheId, Gson().toJson(cache(favorites)).toByteArray()) + FFACache.set(context, cacheId, Gson().toJson(cache(favorites)).toString()) } } } diff --git a/app/src/main/java/audio/funkwhale/ffa/repositories/PlaylistTracksRepository.kt b/app/src/main/java/audio/funkwhale/ffa/repositories/PlaylistTracksRepository.kt index e8802ac..c0a6430 100644 --- a/app/src/main/java/audio/funkwhale/ffa/repositories/PlaylistTracksRepository.kt +++ b/app/src/main/java/audio/funkwhale/ffa/repositories/PlaylistTracksRepository.kt @@ -30,8 +30,8 @@ class PlaylistTracksRepository(override val context: Context?, playlistId: Int) ) override fun cache(data: List) = PlaylistTracksCache(data) - override fun uncache(reader: BufferedReader) = - gsonDeserializerOf(PlaylistTracksCache::class.java).deserialize(reader) + override fun uncache(json: String) = + gsonDeserializerOf(PlaylistTracksCache::class.java).deserialize(json) override fun onDataFetched(data: List): List = runBlocking { val favorites = FavoritedRepository(context).fetch(Origin.Network.origin) diff --git a/app/src/main/java/audio/funkwhale/ffa/repositories/PlaylistsRepository.kt b/app/src/main/java/audio/funkwhale/ffa/repositories/PlaylistsRepository.kt index 8b426d1..519f185 100644 --- a/app/src/main/java/audio/funkwhale/ffa/repositories/PlaylistsRepository.kt +++ b/app/src/main/java/audio/funkwhale/ffa/repositories/PlaylistsRepository.kt @@ -38,8 +38,8 @@ class PlaylistsRepository(override val context: Context?) : Repository) = PlaylistsCache(data) - override fun uncache(reader: BufferedReader) = - gsonDeserializerOf(PlaylistsCache::class.java).deserialize(reader) + override fun uncache(json: String) = + gsonDeserializerOf(PlaylistsCache::class.java).deserialize(json) } class ManagementPlaylistsRepository(override val context: Context?) : @@ -58,8 +58,8 @@ class ManagementPlaylistsRepository(override val context: Context?) : ) override fun cache(data: List) = PlaylistsCache(data) - override fun uncache(reader: BufferedReader) = - gsonDeserializerOf(PlaylistsCache::class.java).deserialize(reader) + override fun uncache(json: String) = + gsonDeserializerOf(PlaylistsCache::class.java).deserialize(json) suspend fun new(name: String): Int? { context?.let { diff --git a/app/src/main/java/audio/funkwhale/ffa/repositories/RadiosRepository.kt b/app/src/main/java/audio/funkwhale/ffa/repositories/RadiosRepository.kt index cf70f53..142af55 100644 --- a/app/src/main/java/audio/funkwhale/ffa/repositories/RadiosRepository.kt +++ b/app/src/main/java/audio/funkwhale/ffa/repositories/RadiosRepository.kt @@ -26,8 +26,8 @@ class RadiosRepository(override val context: Context?) : Repository) = RadiosCache(data) - override fun uncache(reader: BufferedReader) = - gsonDeserializerOf(RadiosCache::class.java).deserialize(reader) + override fun uncache(json: String) = + gsonDeserializerOf(RadiosCache::class.java).deserialize(json) override fun onDataFetched(data: List): List { return data diff --git a/app/src/main/java/audio/funkwhale/ffa/repositories/Repository.kt b/app/src/main/java/audio/funkwhale/ffa/repositories/Repository.kt index 6ff56dd..2d9e2c3 100644 --- a/app/src/main/java/audio/funkwhale/ffa/repositories/Repository.kt +++ b/app/src/main/java/audio/funkwhale/ffa/repositories/Repository.kt @@ -34,7 +34,7 @@ abstract class Repository> { abstract val upstream: Upstream open fun cache(data: List): C? = null - protected open fun uncache(reader: BufferedReader): C? = null + protected open fun uncache(json: String): C? = null fun fetch( upstreams: Int = Origin.Cache.origin and Origin.Network.origin, @@ -46,8 +46,8 @@ abstract class Repository> { private fun fromCache() = flow { cacheId?.let { cacheId -> - FFACache.get(context, cacheId)?.let { reader -> - uncache(reader)?.let { cache -> + FFACache.getLine(context, cacheId)?.let { line -> + uncache(line)?.let { cache -> return@flow emit( Response( Origin.Cache, diff --git a/app/src/main/java/audio/funkwhale/ffa/repositories/SearchRepository.kt b/app/src/main/java/audio/funkwhale/ffa/repositories/SearchRepository.kt index e473c42..17a0873 100644 --- a/app/src/main/java/audio/funkwhale/ffa/repositories/SearchRepository.kt +++ b/app/src/main/java/audio/funkwhale/ffa/repositories/SearchRepository.kt @@ -42,8 +42,8 @@ class TracksSearchRepository(override val context: Context?, var query: String) ) override fun cache(data: List) = TracksCache(data) - override fun uncache(reader: BufferedReader) = - gsonDeserializerOf(TracksCache::class.java).deserialize(reader) + override fun uncache(json: String) = + gsonDeserializerOf(TracksCache::class.java).deserialize(json) override fun onDataFetched(data: List): List = runBlocking { val favorites = FavoritedRepository(context).fetch(Origin.Cache.origin) @@ -84,8 +84,8 @@ class ArtistsSearchRepository(override val context: Context?, var query: String) ) override fun cache(data: List) = ArtistsCache(data) - override fun uncache(reader: BufferedReader) = - gsonDeserializerOf(ArtistsCache::class.java).deserialize(reader) + override fun uncache(json: String) = + gsonDeserializerOf(ArtistsCache::class.java).deserialize(json) } class AlbumsSearchRepository(override val context: Context?, var query: String) : @@ -104,6 +104,6 @@ class AlbumsSearchRepository(override val context: Context?, var query: String) ) override fun cache(data: List) = AlbumsCache(data) - override fun uncache(reader: BufferedReader) = - gsonDeserializerOf(AlbumsCache::class.java).deserialize(reader) + override fun uncache(json: String) = + gsonDeserializerOf(AlbumsCache::class.java).deserialize(json) } diff --git a/app/src/main/java/audio/funkwhale/ffa/repositories/TracksRepository.kt b/app/src/main/java/audio/funkwhale/ffa/repositories/TracksRepository.kt index c247869..4ae67f4 100644 --- a/app/src/main/java/audio/funkwhale/ffa/repositories/TracksRepository.kt +++ b/app/src/main/java/audio/funkwhale/ffa/repositories/TracksRepository.kt @@ -38,8 +38,8 @@ class TracksRepository(override val context: Context?, albumId: Int) : ) override fun cache(data: List) = TracksCache(data) - override fun uncache(reader: BufferedReader) = - gsonDeserializerOf(TracksCache::class.java).deserialize(reader) + override fun uncache(json: String) = + gsonDeserializerOf(TracksCache::class.java).deserialize(json) companion object { fun getDownloadedIds(exoDownloadManager: DownloadManager): List? { diff --git a/app/src/main/java/audio/funkwhale/ffa/utils/FFACache.kt b/app/src/main/java/audio/funkwhale/ffa/utils/FFACache.kt index 2d4bbca..dd06e49 100644 --- a/app/src/main/java/audio/funkwhale/ffa/utils/FFACache.kt +++ b/app/src/main/java/audio/funkwhale/ffa/utils/FFACache.kt @@ -12,16 +12,41 @@ object FFACache { val md = MessageDigest.getInstance("SHA-1") val digest = md.digest(key.toByteArray(Charset.defaultCharset())) - return digest.fold("", { acc, it -> acc + "%02x".format(it) }) + return digest.fold("") { acc, it -> acc + "%02x".format(it) } } - fun set(context: Context?, key: String, value: ByteArray) = context?.let { - with(File(it.cacheDir, key(key))) { - writeBytes(value) + fun set(context: Context?, key:String, value: String){ + set(context, key, value.toByteArray()) + } + + fun set(context: Context?, key: String, value: ByteArray) { + context?.let { + with(File(it.cacheDir, key(key))) { + writeBytes(value) + } } } - fun get(context: Context?, key: String): BufferedReader? = context?.let { + fun getLine(context: Context?, key: String): String? = get(context, key)?.let { + val line = it.readLine() + it.close() + line + } + + fun getLines(context: Context?, key: String): List? = get(context, key) + ?.let { reader -> + val lines = reader.readLines() + reader.close() + lines + } + + fun delete(context: Context?, key: String) = context?.let { + with(File(it.cacheDir, key(key))) { + delete() + } + } + + private fun get(context: Context?, key: String): BufferedReader? = context?.let { try { with(File(it.cacheDir, key(key))) { bufferedReader() @@ -30,10 +55,4 @@ object FFACache { return null } } - - fun delete(context: Context?, key: String) = context?.let { - with(File(it.cacheDir, key(key))) { - delete() - } - } } diff --git a/changes/changelog.d/119.bugfix b/changes/changelog.d/119.bugfix new file mode 100644 index 0000000..db2122b --- /dev/null +++ b/changes/changelog.d/119.bugfix @@ -0,0 +1 @@ +Fix warnings in log output due to leaked BufferedReader resource (thanks @hdash) \ No newline at end of file