feat: Implement Koin for dependency injection
This commit is contained in:
parent
6111391bed
commit
b5e53bda17
|
|
@ -1,8 +1,22 @@
|
|||
package com.syaroful.agrilinkvocpro
|
||||
|
||||
import android.app.Application
|
||||
import dagger.hilt.android.HiltAndroidApp
|
||||
import com.syaroful.agrilinkvocpro.di.appModule
|
||||
import com.syaroful.agrilinkvocpro.di.dynamicFeatureModule
|
||||
import com.syaroful.agrilinkvocpro.di.networkModule
|
||||
import com.syaroful.agrilinkvocpro.di.viewModelModule
|
||||
import org.koin.android.ext.koin.androidContext
|
||||
import org.koin.core.context.GlobalContext.startKoin
|
||||
import org.koin.core.logger.Level
|
||||
import org.koin.core.logger.PrintLogger
|
||||
|
||||
@HiltAndroidApp
|
||||
class MyApplication : Application() {
|
||||
override fun onCreate() {
|
||||
super.onCreate()
|
||||
startKoin {
|
||||
logger(PrintLogger(Level.DEBUG))
|
||||
androidContext(this@MyApplication)
|
||||
modules(appModule, dynamicFeatureModule, networkModule, viewModelModule)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,8 +1,10 @@
|
|||
package com.syaroful.agrilinkvocpro.data.network
|
||||
|
||||
import com.syaroful.agrilinkvocpro.data.model.LoginResponse
|
||||
import com.syaroful.agrilinkvocpro.data.model.SensorDataResponse
|
||||
import retrofit2.Response
|
||||
import retrofit2.http.Body
|
||||
import retrofit2.http.GET
|
||||
import retrofit2.http.Header
|
||||
import retrofit2.http.POST
|
||||
|
||||
|
|
@ -18,4 +20,9 @@ interface ApiService {
|
|||
@Header("Authorization") authHeader: String,
|
||||
@Body body: LoginRequest
|
||||
): Response<LoginResponse>
|
||||
|
||||
@GET("api/sensor/getLatest")
|
||||
suspend fun getLatestSensorData(
|
||||
@Header("Authorization") authHeader: String
|
||||
): Response<SensorDataResponse>
|
||||
}
|
||||
|
|
@ -2,10 +2,12 @@ package com.syaroful.agrilinkvocpro.di
|
|||
|
||||
import com.syaroful.agrilinkvocpro.data.UserPreferences
|
||||
import com.syaroful.agrilinkvocpro.data.repository.AuthRepository
|
||||
import com.syaroful.agrilinkvocpro.data.repository.SensorDataRepository
|
||||
import org.koin.android.ext.koin.androidContext
|
||||
import org.koin.dsl.module
|
||||
|
||||
val appModule = module {
|
||||
single { AuthRepository(get()) }
|
||||
single { UserPreferences(androidContext()) }
|
||||
single { SensorDataRepository(get()) }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,24 @@
|
|||
package com.syaroful.agrilinkvocpro.di
|
||||
|
||||
import com.syaroful.agrilinkvocpro.data.network.ApiService
|
||||
import okhttp3.OkHttpClient
|
||||
import org.koin.dsl.module
|
||||
import retrofit2.Retrofit
|
||||
import retrofit2.converter.gson.GsonConverterFactory
|
||||
|
||||
val networkModule = module {
|
||||
single {
|
||||
OkHttpClient.Builder()
|
||||
.build()
|
||||
}
|
||||
|
||||
single {
|
||||
Retrofit.Builder()
|
||||
.baseUrl("http://labai.polinema.ac.id:3042/")
|
||||
.client(get())
|
||||
.addConverterFactory(GsonConverterFactory.create())
|
||||
.build()
|
||||
}
|
||||
|
||||
single<ApiService> { get<Retrofit>().create(ApiService::class.java) }
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user