1+ package com.example.diff_utils_recyclerview_example.data.di
2+
3+ import com.example.diff_utils_recyclerview_example.data.remote.ApiService
4+ import com.example.diff_utils_recyclerview_example.data.repository.CharactersRepo
5+ import com.example.diff_utils_recyclerview_example.data.repository.CharactersRepoImpl
6+ import com.example.diff_utils_recyclerview_example.ui.BASE_URL
7+ import com.jakewharton.retrofit2.adapter.kotlin.coroutines.CoroutineCallAdapterFactory
8+ import dagger.Module
9+ import dagger.Provides
10+ import dagger.hilt.InstallIn
11+ import dagger.hilt.components.SingletonComponent
12+ import de.hdodenhof.circleimageview.BuildConfig
13+ import okhttp3.OkHttpClient
14+ import okhttp3.logging.HttpLoggingInterceptor
15+ import retrofit2.Retrofit
16+ import retrofit2.converter.gson.GsonConverterFactory
17+ import javax.inject.Singleton
18+
19+ @Module
20+ @InstallIn(SingletonComponent ::class )
21+ object AppModule {
22+
23+ @Provides
24+ fun providesOkhttp ():OkHttpClient {
25+ val okhhtp = OkHttpClient .Builder ()
26+
27+ if (BuildConfig .DEBUG ) {
28+ val logger = HttpLoggingInterceptor ()
29+ logger.setLevel(HttpLoggingInterceptor .Level .BODY )
30+
31+ okhhtp.addInterceptor(logger)
32+ }
33+ return okhhtp.build()
34+ }
35+
36+ @Provides
37+ @Singleton
38+ fun providesRetrofit (okHttpClient : OkHttpClient ):Retrofit = Retrofit
39+ .Builder ()
40+ .addConverterFactory(GsonConverterFactory .create())
41+ .addCallAdapterFactory(CoroutineCallAdapterFactory ())
42+ .client(okHttpClient)
43+ .baseUrl(BASE_URL )
44+ .build()
45+
46+ @Provides
47+ @Singleton
48+ fun apiService (retrofit : Retrofit ): ApiService = retrofit.create(ApiService ::class .java)
49+
50+ @Provides
51+ @Singleton
52+ fun providesCharactersRepo (apiService : ApiService ):CharactersRepo = CharactersRepoImpl (apiService)
53+
54+ }
0 commit comments