Updated on 2026-08-14

This commit is contained in:
Tangem 2024-04-12 20:29:29 +08:00
parent 7907c61101
commit 861f650cd4
8 changed files with 56 additions and 91 deletions

View file

@ -0,0 +1,32 @@
package com.tangem.datasource.config.models
import com.squareup.moshi.Json
/** Config provider model */
sealed class ProviderModel {
/**
* Example,
* {
* "type": "public",
* "url": "https://example.com"
* }
*/
data class Public(
@Json(name = "url") val url: String,
) : ProviderModel()
/**
* Example,
* {
* "type": "private",
* "name": "nownodes"
* }
*/
data class Private(
@Json(name = "name") val name: String,
) : ProviderModel()
/** Unsupported type */
data object UnsupportedType : ProviderModel()
}

View file

@ -1,11 +1,13 @@
package com.tangem.datasource.di
import com.squareup.moshi.Moshi
import com.squareup.moshi.adapters.PolymorphicJsonAdapterFactory
import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory
import com.tangem.common.json.MoshiJsonConverter
import com.tangem.datasource.api.common.BigDecimalAdapter
import com.tangem.datasource.api.common.DateTimeAdapter
import com.tangem.datasource.api.common.LocalDateAdapter
import com.tangem.datasource.config.models.ProviderModel
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
@ -21,6 +23,12 @@ class MoshiModule {
@NetworkMoshi
fun provideNetworkMoshi(): Moshi {
return Moshi.Builder()
.add(
PolymorphicJsonAdapterFactory.of(ProviderModel::class.java, "type")
.withSubtype(ProviderModel.Public::class.java, "public")
.withSubtype(ProviderModel.Private::class.java, "private")
.withDefaultValue(ProviderModel.UnsupportedType),
)
.add(BigDecimalAdapter())
.add(LocalDateAdapter())
.add(DateTimeAdapter())