MVVM - Boilerplate
Type Converter
class Converter {
@TypeConverter
fun fromListOfStringsToString(value: List<String>): String {
val gson = Gson()
val type = object : TypeToken<List<String>>() {}.type
return gson.toJson(value, type)
}
@TypeConverter
fun fromStringToListOfStrings(value: String): List<String> {
val gson = Gson()
val type = object : TypeToken<List<String>>() {}.type
return gson.fromJson(value, type)
}
}Network Module
@Module
@InstallIn(SingletonComponent::class)
class NetworkModule {
@Provides
@Singleton
fun provideOkHttpClient(): OkHttpClient {
return OkHttpClient.Builder()
.connectTimeout(30, TimeUnit.SECONDS)
.readTimeout(30, TimeUnit.SECONDS)
.writeTimeout(30, TimeUnit.SECONDS)
.build()
}
@Provides
@Singleton
fun provideRetrofit(client: OkHttpClient): Retrofit {
return Retrofit.Builder()
.baseUrl(BASE_URL)
.client(client)
.addConverterFactory(MoshiConverterFactory.create())
.build()
}
@Provides
@Singleton
fun provideService(retrofit: Retrofit): PostApi {
return retrofit.create(PostApi::class.java)
}
}Handle Internet Connection
Check Response Data
Coroutine Scope And Exception Handler
AsynListDiffer - DifferCallback
Network Bound Resource
ViewBinding Delegate
Network Resource
Last updated