feat: Implement Koin for dependency injection

This commit is contained in:
Cutiful 2025-06-12 08:42:50 +07:00
parent 6111391bed
commit b5e53bda17
4 changed files with 49 additions and 2 deletions

View File

@ -1,8 +1,22 @@
package com.syaroful.agrilinkvocpro package com.syaroful.agrilinkvocpro
import android.app.Application 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() { class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
startKoin {
logger(PrintLogger(Level.DEBUG))
androidContext(this@MyApplication)
modules(appModule, dynamicFeatureModule, networkModule, viewModelModule)
}
}
} }

View File

@ -1,8 +1,10 @@
package com.syaroful.agrilinkvocpro.data.network package com.syaroful.agrilinkvocpro.data.network
import com.syaroful.agrilinkvocpro.data.model.LoginResponse import com.syaroful.agrilinkvocpro.data.model.LoginResponse
import com.syaroful.agrilinkvocpro.data.model.SensorDataResponse
import retrofit2.Response import retrofit2.Response
import retrofit2.http.Body import retrofit2.http.Body
import retrofit2.http.GET
import retrofit2.http.Header import retrofit2.http.Header
import retrofit2.http.POST import retrofit2.http.POST
@ -18,4 +20,9 @@ interface ApiService {
@Header("Authorization") authHeader: String, @Header("Authorization") authHeader: String,
@Body body: LoginRequest @Body body: LoginRequest
): Response<LoginResponse> ): Response<LoginResponse>
@GET("api/sensor/getLatest")
suspend fun getLatestSensorData(
@Header("Authorization") authHeader: String
): Response<SensorDataResponse>
} }

View File

@ -2,10 +2,12 @@ package com.syaroful.agrilinkvocpro.di
import com.syaroful.agrilinkvocpro.data.UserPreferences import com.syaroful.agrilinkvocpro.data.UserPreferences
import com.syaroful.agrilinkvocpro.data.repository.AuthRepository import com.syaroful.agrilinkvocpro.data.repository.AuthRepository
import com.syaroful.agrilinkvocpro.data.repository.SensorDataRepository
import org.koin.android.ext.koin.androidContext import org.koin.android.ext.koin.androidContext
import org.koin.dsl.module import org.koin.dsl.module
val appModule = module { val appModule = module {
single { AuthRepository(get()) } single { AuthRepository(get()) }
single { UserPreferences(androidContext()) } single { UserPreferences(androidContext()) }
single { SensorDataRepository(get()) }
} }

View File

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