Merge branch 'bugfix/119-implement-string-deserialization-on-gson-deserializer' into 'develop'
#119: Default deserializer has no string deserialization implementation See merge request funkwhale/funkwhale-android!173
This commit is contained in:
commit
b9401d75a9
|
@ -5,7 +5,7 @@ import audio.funkwhale.ffa.model.Album
|
|||
import audio.funkwhale.ffa.model.AlbumsCache
|
||||
import audio.funkwhale.ffa.model.AlbumsResponse
|
||||
import audio.funkwhale.ffa.utils.OAuth
|
||||
import com.github.kittinunf.fuel.gson.gsonDeserializerOf
|
||||
import audio.funkwhale.ffa.utils.gsonDeserializerOf
|
||||
import com.google.gson.reflect.TypeToken
|
||||
import org.koin.java.KoinJavaComponent.inject
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ 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 audio.funkwhale.ffa.utils.gsonDeserializerOf
|
||||
import com.google.gson.reflect.TypeToken
|
||||
import org.koin.java.KoinJavaComponent.inject
|
||||
|
||||
|
|
|
@ -6,10 +6,9 @@ import audio.funkwhale.ffa.model.ArtistsCache
|
|||
import audio.funkwhale.ffa.model.ArtistsResponse
|
||||
import audio.funkwhale.ffa.model.FFAResponse
|
||||
import audio.funkwhale.ffa.utils.OAuth
|
||||
import com.github.kittinunf.fuel.gson.gsonDeserializerOf
|
||||
import audio.funkwhale.ffa.utils.gsonDeserializerOf
|
||||
import com.google.gson.reflect.TypeToken
|
||||
import org.koin.java.KoinJavaComponent.inject
|
||||
import java.io.BufferedReader
|
||||
|
||||
class ArtistsRepository(override val context: Context?) : Repository<Artist, ArtistsCache>() {
|
||||
|
||||
|
|
|
@ -1,22 +1,10 @@
|
|||
package audio.funkwhale.ffa.repositories
|
||||
|
||||
import android.content.Context
|
||||
import audio.funkwhale.ffa.model.FFAResponse
|
||||
import audio.funkwhale.ffa.model.FavoritedCache
|
||||
import audio.funkwhale.ffa.model.FavoritedResponse
|
||||
import audio.funkwhale.ffa.model.Track
|
||||
import audio.funkwhale.ffa.model.TracksCache
|
||||
import audio.funkwhale.ffa.model.TracksResponse
|
||||
import audio.funkwhale.ffa.utils.FFACache
|
||||
import audio.funkwhale.ffa.utils.OAuth
|
||||
import audio.funkwhale.ffa.utils.Settings
|
||||
import audio.funkwhale.ffa.utils.authorize
|
||||
import audio.funkwhale.ffa.utils.maybeNormalizeUrl
|
||||
import audio.funkwhale.ffa.utils.mustNormalizeUrl
|
||||
import audio.funkwhale.ffa.utils.untilNetwork
|
||||
import audio.funkwhale.ffa.model.*
|
||||
import audio.funkwhale.ffa.utils.*
|
||||
import com.github.kittinunf.fuel.Fuel
|
||||
import com.github.kittinunf.fuel.coroutines.awaitByteArrayResponseResult
|
||||
import com.github.kittinunf.fuel.gson.gsonDeserializerOf
|
||||
import com.google.android.exoplayer2.offline.DownloadManager
|
||||
import com.google.android.exoplayer2.upstream.cache.Cache
|
||||
import com.google.gson.Gson
|
||||
|
@ -27,7 +15,6 @@ import kotlinx.coroutines.launch
|
|||
import kotlinx.coroutines.runBlocking
|
||||
import org.koin.core.qualifier.named
|
||||
import org.koin.java.KoinJavaComponent.inject
|
||||
import java.io.BufferedReader
|
||||
|
||||
class FavoritesRepository(override val context: Context?) : Repository<Track, TracksCache>() {
|
||||
|
||||
|
|
|
@ -6,13 +6,12 @@ import audio.funkwhale.ffa.model.PlaylistTrack
|
|||
import audio.funkwhale.ffa.model.PlaylistTracksCache
|
||||
import audio.funkwhale.ffa.model.PlaylistTracksResponse
|
||||
import audio.funkwhale.ffa.utils.OAuth
|
||||
import com.github.kittinunf.fuel.gson.gsonDeserializerOf
|
||||
import audio.funkwhale.ffa.utils.gsonDeserializerOf
|
||||
import com.google.gson.reflect.TypeToken
|
||||
import kotlinx.coroutines.flow.map
|
||||
import kotlinx.coroutines.flow.toList
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import org.koin.java.KoinJavaComponent.inject
|
||||
import java.io.BufferedReader
|
||||
|
||||
class PlaylistTracksRepository(override val context: Context?, playlistId: Int) :
|
||||
Repository<PlaylistTrack, PlaylistTracksCache>() {
|
||||
|
|
|
@ -1,25 +1,16 @@
|
|||
package audio.funkwhale.ffa.repositories
|
||||
|
||||
import android.content.Context
|
||||
import audio.funkwhale.ffa.model.FFAResponse
|
||||
import audio.funkwhale.ffa.model.Playlist
|
||||
import audio.funkwhale.ffa.model.PlaylistsCache
|
||||
import audio.funkwhale.ffa.model.PlaylistsResponse
|
||||
import audio.funkwhale.ffa.model.Track
|
||||
import audio.funkwhale.ffa.utils.OAuth
|
||||
import audio.funkwhale.ffa.utils.Settings
|
||||
import audio.funkwhale.ffa.utils.authorize
|
||||
import audio.funkwhale.ffa.utils.mustNormalizeUrl
|
||||
import audio.funkwhale.ffa.model.*
|
||||
import audio.funkwhale.ffa.utils.*
|
||||
import com.github.kittinunf.fuel.Fuel
|
||||
import com.github.kittinunf.fuel.coroutines.awaitByteArrayResponseResult
|
||||
import com.github.kittinunf.fuel.coroutines.awaitObjectResponseResult
|
||||
import com.github.kittinunf.fuel.gson.gsonDeserializerOf
|
||||
import com.google.gson.Gson
|
||||
import com.google.gson.reflect.TypeToken
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import org.koin.java.KoinJavaComponent.inject
|
||||
import java.io.BufferedReader
|
||||
|
||||
data class PlaylistAdd(val tracks: List<Int>, val allow_duplicates: Boolean)
|
||||
|
||||
|
|
|
@ -6,10 +6,9 @@ import audio.funkwhale.ffa.model.Radio
|
|||
import audio.funkwhale.ffa.model.RadiosCache
|
||||
import audio.funkwhale.ffa.model.RadiosResponse
|
||||
import audio.funkwhale.ffa.utils.OAuth
|
||||
import com.github.kittinunf.fuel.gson.gsonDeserializerOf
|
||||
import audio.funkwhale.ffa.utils.gsonDeserializerOf
|
||||
import com.google.gson.reflect.TypeToken
|
||||
import org.koin.java.KoinJavaComponent.inject
|
||||
import java.io.BufferedReader
|
||||
|
||||
class RadiosRepository(override val context: Context?) : Repository<Radio, RadiosCache>() {
|
||||
|
||||
|
|
|
@ -1,18 +1,10 @@
|
|||
package audio.funkwhale.ffa.repositories
|
||||
|
||||
import android.content.Context
|
||||
import audio.funkwhale.ffa.model.Album
|
||||
import audio.funkwhale.ffa.model.AlbumsCache
|
||||
import audio.funkwhale.ffa.model.AlbumsResponse
|
||||
import audio.funkwhale.ffa.model.Artist
|
||||
import audio.funkwhale.ffa.model.ArtistsCache
|
||||
import audio.funkwhale.ffa.model.ArtistsResponse
|
||||
import audio.funkwhale.ffa.model.Track
|
||||
import audio.funkwhale.ffa.model.TracksCache
|
||||
import audio.funkwhale.ffa.model.TracksResponse
|
||||
import audio.funkwhale.ffa.model.*
|
||||
import audio.funkwhale.ffa.utils.OAuth
|
||||
import audio.funkwhale.ffa.utils.gsonDeserializerOf
|
||||
import audio.funkwhale.ffa.utils.mustNormalizeUrl
|
||||
import com.github.kittinunf.fuel.gson.gsonDeserializerOf
|
||||
import com.google.android.exoplayer2.offline.DownloadManager
|
||||
import com.google.android.exoplayer2.upstream.cache.Cache
|
||||
import com.google.gson.reflect.TypeToken
|
||||
|
@ -21,7 +13,6 @@ import kotlinx.coroutines.flow.toList
|
|||
import kotlinx.coroutines.runBlocking
|
||||
import org.koin.core.qualifier.named
|
||||
import org.koin.java.KoinJavaComponent.inject
|
||||
import java.io.BufferedReader
|
||||
|
||||
class TracksSearchRepository(override val context: Context?, var query: String) :
|
||||
Repository<Track, TracksCache>() {
|
||||
|
|
|
@ -7,8 +7,8 @@ import audio.funkwhale.ffa.model.TracksCache
|
|||
import audio.funkwhale.ffa.model.TracksResponse
|
||||
import audio.funkwhale.ffa.utils.OAuth
|
||||
import audio.funkwhale.ffa.utils.getMetadata
|
||||
import audio.funkwhale.ffa.utils.gsonDeserializerOf
|
||||
import audio.funkwhale.ffa.utils.mustNormalizeUrl
|
||||
import com.github.kittinunf.fuel.gson.gsonDeserializerOf
|
||||
import com.google.android.exoplayer2.offline.Download
|
||||
import com.google.android.exoplayer2.offline.DownloadManager
|
||||
import com.google.android.exoplayer2.upstream.cache.Cache
|
||||
|
@ -18,7 +18,6 @@ import kotlinx.coroutines.flow.toList
|
|||
import kotlinx.coroutines.runBlocking
|
||||
import org.koin.core.qualifier.named
|
||||
import org.koin.java.KoinJavaComponent.inject
|
||||
import java.io.BufferedReader
|
||||
|
||||
class TracksRepository(override val context: Context?, albumId: Int) :
|
||||
Repository<Track, TracksCache>() {
|
||||
|
|
|
@ -10,20 +10,22 @@ import audio.funkwhale.ffa.model.DownloadInfo
|
|||
import audio.funkwhale.ffa.repositories.Repository
|
||||
import com.github.kittinunf.fuel.core.FuelError
|
||||
import com.github.kittinunf.fuel.core.Request
|
||||
import com.github.kittinunf.fuel.core.ResponseDeserializable
|
||||
import com.google.android.exoplayer2.offline.Download
|
||||
import com.google.gson.Gson
|
||||
import com.google.gson.reflect.TypeToken
|
||||
import com.squareup.picasso.Picasso
|
||||
import com.squareup.picasso.RequestCreator
|
||||
import kotlinx.coroutines.CompletableDeferred
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers.Main
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.collect
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import net.openid.appauth.ClientSecretPost
|
||||
import java.io.Reader
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.Date
|
||||
import java.util.*
|
||||
import kotlin.coroutines.CoroutineContext
|
||||
|
||||
inline fun <D> Flow<Repository.Response<D>>.untilNetwork(
|
||||
|
@ -113,3 +115,15 @@ val ISO_8601_DATE_TIME_FORMAT = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ")
|
|||
fun Date.format(): String {
|
||||
return ISO_8601_DATE_TIME_FORMAT.format(this)
|
||||
}
|
||||
|
||||
inline fun <reified T : Any> gsonDeserializerOf(clazz: Class<T>) = gsonDeserializer<T>()
|
||||
|
||||
inline fun <reified T : Any> gsonDeserializer(gson: Gson = Gson()) = object :
|
||||
ResponseDeserializable<T> {
|
||||
|
||||
override fun deserialize(content: String): T? =
|
||||
gson.fromJson<T>(content, object : TypeToken<T>() {}.type)
|
||||
|
||||
override fun deserialize(reader: Reader): T? =
|
||||
gson.fromJson<T>(reader, object : TypeToken<T>() {}.type)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue