funkwhale-app-android/app/src/main/java/audio/funkwhale/ffa/repositories/ArtistTracksRepository.kt

33 lines
1.1 KiB
Kotlin
Raw Normal View History

package audio.funkwhale.ffa.repositories
import android.content.Context
import audio.funkwhale.ffa.model.FFAResponse
import audio.funkwhale.ffa.model.Track
import audio.funkwhale.ffa.model.TracksCache
import audio.funkwhale.ffa.model.TracksResponse
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
2021-07-23 14:10:13 +02:00
class ArtistTracksRepository(override val context: Context?, private val artistId: Int) :
Repository<Track, TracksCache>() {
private val oAuth: OAuth by inject(OAuth::class.java)
2021-07-30 10:57:49 +02:00
2020-06-11 00:01:39 +02:00
override val cacheId = "tracks-artist-$artistId"
2021-07-23 14:10:13 +02:00
override val upstream = HttpUpstream<Track, FFAResponse<Track>>(
2021-07-23 14:10:13 +02:00
context,
HttpUpstream.Behavior.AtOnce,
"/api/v1/tracks/?playable=true&artist=$artistId",
2021-07-30 10:57:49 +02:00
object : TypeToken<TracksResponse>() {}.type,
oAuth
2021-07-23 14:10:13 +02:00
)
override fun cache(data: List<Track>) = TracksCache(data)
2021-07-23 14:10:13 +02:00
override fun uncache(reader: BufferedReader) =
gsonDeserializerOf(TracksCache::class.java).deserialize(reader)
2021-07-02 13:55:49 +02:00
}