Skip to content

Instantly share code, notes, and snippets.

View ifucolo's full-sized avatar
🌞
🇧🇷 ➡️ 🇳🇱

Iago Mendes Fucolo ifucolo

🌞
🇧🇷 ➡️ 🇳🇱
View GitHub Profile
class AndroidJobsRepositoryImpl(
private val jobsCacheDataSource: JobsCacheDataSource,
private val remoteDataSource: RemoteDataSource
): AndroidJobsRepository
class AndroidJobsRepositoryImpl @Inject constructor(
private val serverApi: ServerApi,
private val jobsDao: JobsDao,
@IoDispatcher
private val coroutineDispatcher: CoroutineDispatcher
): AndroidJobsRepository
package com.example.mymoduleexample.di
@Provides
fun provideServerApiWebService(
okHttpClient: OkHttpClient,
@ApplicationContext context: Context
): ServerApi {
val moshi = Moshi.Builder()
.add(AndroidJobPayloadConverter())
.addLast(KotlinJsonAdapterFactory())
.build()
class AndroidJobPayloadConverter {
@WrapperJobsResults
@FromJson
fun fromJson(json: JobsResults): List<AndroidJob> {
return json.jobs
}
@ToJson
fun toJson(@WrapperJobsResults value: List<AndroidJob>): JobsResults {
return JobsResults(value)
data class JobsResults(
@Json(name = "jobs") val jobs: List<AndroidJob>
)
@Retention(AnnotationRetention.RUNTIME)
@JsonQualifier
annotation class WrapperJobsResults
@GET("/api/android-jobs")
@WrapperJobsResults
suspend fun fetchJobs(): List<AndroidJob>
@ifucolo
ifucolo / AndroidJobCacheMapper.kt
Created July 26, 2022 12:57
AndroidJobCacheMapper.kt
fun AndroidJobCache.asExternalModel() = AndroidJob(
title = title,
experienceTimeRequired = requiredExperienceYears.toString(),
native = native,
country = country
)
fun AndroidJob.asCache() = AndroidJobCache(
title = title,
requiredExperienceYears = experienceTimeRequired.toInt(),
package com.ifucolo.di
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.Dispatchers
import javax.inject.Qualifier
@ifucolo
ifucolo / request.kt
Last active September 11, 2020 08:34
//Não esquecer de verificar se é o device utilza Android 5.0 ou mais
//se seu app tiver minSdk < 21
val request = reviewManager.requestReviewFlow()
request.addOnCompleteListener { result ->
if (request.isSuccessful) {
// We got the ReviewInfo object
val reviewInfo: ReviewInfo = result.result
val flow = reviewManager.launchReviewFlow(this, reviewInfo)