Skip to content

Instantly share code, notes, and snippets.

@sberoch
Created July 12, 2020 22:46
Show Gist options
  • Save sberoch/739478bc7aefb281dbd892099b05a048 to your computer and use it in GitHub Desktop.
Save sberoch/739478bc7aefb281dbd892099b05a048 to your computer and use it in GitHub Desktop.
@Module
@InstallIn(ApplicationComponent::class)
object AppModule {
@Singleton
@Provides
fun provideRetrofit(gson: Gson) : Retrofit = Retrofit.Builder()
.baseUrl("https://rickandmortyapi.com/api/")
.addConverterFactory(GsonConverterFactory.create(gson))
.build()
@Provides
fun provideGson(): Gson = GsonBuilder().create()
@Provides
fun provideCharacterService(retrofit: Retrofit): CharacterService = retrofit.create(CharacterService::class.java)
@Singleton
@Provides
fun provideCharacterRemoteDataSource(characterService: CharacterService) = CharacterRemoteDataSource(characterService)
@Singleton
@Provides
fun provideDatabase(@ApplicationContext appContext: Context) = AppDatabase.getDatabase(appContext)
@Singleton
@Provides
fun provideCharacterDao(db: AppDatabase) = db.characterDao()
@Singleton
@Provides
fun provideRepository(remoteDataSource: CharacterRemoteDataSource,
localDataSource: CharacterDao) =
CharacterRepository(remoteDataSource, localDataSource)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment