KOIN 설정 적용

This commit is contained in:
2023-07-23 19:50:34 +09:00
parent 3e62c754df
commit c1054c5ede
24 changed files with 407 additions and 227 deletions

View 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)
}
}
}