add di
This commit is contained in:
parent
d87059a190
commit
31f6ead9fe
@ -53,6 +53,8 @@ dependencies {
|
|||||||
implementation("com.squareup.okhttp3:okhttp:4.7.2")
|
implementation("com.squareup.okhttp3:okhttp:4.7.2")
|
||||||
|
|
||||||
|
|
||||||
|
implementation("io.insert-koin:koin-compose:4.1.0-Beta5")
|
||||||
|
implementation("io.insert-koin:koin-compose-viewmodel:4.1.0-Beta5")
|
||||||
|
|
||||||
implementation(libs.androidx.core.ktx)
|
implementation(libs.androidx.core.ktx)
|
||||||
implementation(libs.androidx.lifecycle.runtime.ktx)
|
implementation(libs.androidx.lifecycle.runtime.ktx)
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
xmlns:tools="http://schemas.android.com/tools">
|
xmlns:tools="http://schemas.android.com/tools">
|
||||||
<uses-permission android:name="android.permission.INTERNET"/>
|
<uses-permission android:name="android.permission.INTERNET"/>
|
||||||
<application
|
<application
|
||||||
|
android:name=".MainApplication"
|
||||||
android:usesCleartextTraffic="true"
|
android:usesCleartextTraffic="true"
|
||||||
android:allowBackup="true"
|
android:allowBackup="true"
|
||||||
android:dataExtractionRules="@xml/data_extraction_rules"
|
android:dataExtractionRules="@xml/data_extraction_rules"
|
||||||
|
@ -21,8 +21,10 @@ import com.example.netwrok_datastore.domain.usecase.AuthUseCase
|
|||||||
import com.example.netwrok_datastore.ui.screen.ProfileScreen
|
import com.example.netwrok_datastore.ui.screen.ProfileScreen
|
||||||
import com.example.netwrok_datastore.ui.screen.SplashScreen
|
import com.example.netwrok_datastore.ui.screen.SplashScreen
|
||||||
import com.example.netwrok_datastore.ui.screen.registration.RegistrationScreen
|
import com.example.netwrok_datastore.ui.screen.registration.RegistrationScreen
|
||||||
|
import com.example.netwrok_datastore.ui.screen.registration.RegistrationViewModel
|
||||||
import com.example.netwrok_datastore.ui.theme.NetwrokDatastoreTheme
|
import com.example.netwrok_datastore.ui.theme.NetwrokDatastoreTheme
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
import org.koin.androidx.viewmodel.ext.android.viewModel
|
||||||
|
|
||||||
class MainActivity : ComponentActivity() {
|
class MainActivity : ComponentActivity() {
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
@ -33,6 +35,7 @@ class MainActivity : ComponentActivity() {
|
|||||||
val localStorage = LocalStorage(applicationContext)
|
val localStorage = LocalStorage(applicationContext)
|
||||||
val authUseCase = AuthUseCase(localStorage, authRepository)
|
val authUseCase = AuthUseCase(localStorage, authRepository)
|
||||||
|
|
||||||
|
val registrationViewModel: RegistrationViewModel by viewModel()
|
||||||
setContent {
|
setContent {
|
||||||
val navController = rememberNavController()
|
val navController = rememberNavController()
|
||||||
NetwrokDatastoreTheme {
|
NetwrokDatastoreTheme {
|
||||||
@ -48,7 +51,7 @@ class MainActivity : ComponentActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
composable<Registration> {
|
composable<Registration> {
|
||||||
RegistrationScreen(authUseCase){
|
RegistrationScreen(registrationViewModel){
|
||||||
navController.navigate(route = Profile)
|
navController.navigate(route = Profile)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,16 @@
|
|||||||
|
package com.example.netwrok_datastore
|
||||||
|
|
||||||
|
import android.app.Application
|
||||||
|
import com.example.netwrok_datastore.di.appModules
|
||||||
|
import org.koin.android.ext.koin.androidContext
|
||||||
|
import org.koin.core.context.startKoin
|
||||||
|
|
||||||
|
class MainApplication: Application() {
|
||||||
|
override fun onCreate() {
|
||||||
|
super.onCreate()
|
||||||
|
startKoin {
|
||||||
|
androidContext(applicationContext)
|
||||||
|
modules(appModules)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
package com.example.netwrok_datastore.di
|
||||||
|
|
||||||
|
import com.example.netwrok_datastore.data.AuthRepository
|
||||||
|
import com.example.netwrok_datastore.data.local.LocalStorage
|
||||||
|
import com.example.netwrok_datastore.data.remote.RetrofitSettings
|
||||||
|
import com.example.netwrok_datastore.data.remote.auth.AuthApi
|
||||||
|
import com.example.netwrok_datastore.domain.usecase.AuthUseCase
|
||||||
|
import com.example.netwrok_datastore.ui.screen.registration.RegistrationViewModel
|
||||||
|
import org.koin.core.module.dsl.viewModel
|
||||||
|
import org.koin.dsl.module
|
||||||
|
|
||||||
|
val appModules = module {
|
||||||
|
single { LocalStorage(get()) }
|
||||||
|
single<AuthApi> { RetrofitSettings.authApi }
|
||||||
|
single<AuthRepository> { AuthRepository(get()) }
|
||||||
|
single { AuthUseCase(get(), get()) }
|
||||||
|
viewModel { RegistrationViewModel(get()) }
|
||||||
|
}
|
@ -31,8 +31,7 @@ import kotlinx.coroutines.delay
|
|||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun RegistrationScreen(authUseCase: AuthUseCase, onNavigationToProfile: ()-> Unit){
|
fun RegistrationScreen(viewModel: RegistrationViewModel, onNavigationToProfile: ()-> Unit){
|
||||||
val viewModel = RegistrationViewModel(authUseCase)
|
|
||||||
val snackBarHostState = remember { SnackbarHostState() }
|
val snackBarHostState = remember { SnackbarHostState() }
|
||||||
|
|
||||||
Scaffold(
|
Scaffold(
|
||||||
|
Loading…
Reference in New Issue
Block a user