KOIN 설정 적용
This commit is contained in:
66
app/src/main/java/kr/co/vividnext/sodalive/di/AppDI.kt
Normal file
66
app/src/main/java/kr/co/vividnext/sodalive/di/AppDI.kt
Normal file
@@ -0,0 +1,66 @@
|
||||
package kr.co.vividnext.sodalive.di
|
||||
|
||||
import android.content.Context
|
||||
import com.google.gson.GsonBuilder
|
||||
import kr.co.vividnext.sodalive.BuildConfig
|
||||
import kr.co.vividnext.sodalive.network.TokenAuthenticator
|
||||
import okhttp3.OkHttpClient
|
||||
import okhttp3.logging.HttpLoggingInterceptor
|
||||
import org.koin.android.ext.koin.androidContext
|
||||
import org.koin.core.context.startKoin
|
||||
import org.koin.dsl.module
|
||||
import retrofit2.Retrofit
|
||||
import retrofit2.adapter.rxjava3.RxJava3CallAdapterFactory
|
||||
import retrofit2.converter.gson.GsonConverterFactory
|
||||
|
||||
class AppDI(private val context: Context, isDebugMode: Boolean) {
|
||||
private val baseUrl = BuildConfig.BASE_URL
|
||||
|
||||
private val otherModule = module {
|
||||
single { GsonBuilder().create() }
|
||||
}
|
||||
|
||||
private val networkModule = module {
|
||||
single {
|
||||
val logging = HttpLoggingInterceptor()
|
||||
|
||||
if (isDebugMode) {
|
||||
logging.setLevel(HttpLoggingInterceptor.Level.BODY)
|
||||
} else {
|
||||
logging.setLevel(HttpLoggingInterceptor.Level.NONE)
|
||||
}
|
||||
|
||||
OkHttpClient().newBuilder()
|
||||
.addInterceptor(logging)
|
||||
.authenticator(TokenAuthenticator(get()))
|
||||
.build()
|
||||
}
|
||||
|
||||
single {
|
||||
Retrofit.Builder()
|
||||
.baseUrl(baseUrl)
|
||||
.addConverterFactory(GsonConverterFactory.create())
|
||||
.addCallAdapterFactory(RxJava3CallAdapterFactory.create())
|
||||
.client(get())
|
||||
.build()
|
||||
}
|
||||
}
|
||||
|
||||
private val viewModelModule = module {}
|
||||
|
||||
private val repositoryModule = module {}
|
||||
|
||||
private val moduleList = listOf(
|
||||
networkModule,
|
||||
viewModelModule,
|
||||
repositoryModule,
|
||||
otherModule
|
||||
)
|
||||
|
||||
init {
|
||||
startKoin {
|
||||
androidContext(context)
|
||||
modules(moduleList)
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user