From 3f2cfdee4548549c1bd44ede16bf71fa1cddeef2 Mon Sep 17 00:00:00 2001 From: Nymos Date: Tue, 18 Feb 2025 18:30:41 +0300 Subject: [PATCH] Init login screen Hook up view model TODO: domain logic + make composable components --- .../nto/presentation/composable/Navigation.kt | 3 ++- .../screens/loginScreen/LoginScreen.kt | 18 ++++++++++++++++++ .../screens/loginScreen/LoginScreenState.kt | 8 ++++++++ .../screens/loginScreen/LoginViewModel.kt | 16 ++++++++++++++++ 4 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 presentation/src/main/java/com/nto/presentation/screens/loginScreen/LoginScreen.kt create mode 100644 presentation/src/main/java/com/nto/presentation/screens/loginScreen/LoginScreenState.kt create mode 100644 presentation/src/main/java/com/nto/presentation/screens/loginScreen/LoginViewModel.kt diff --git a/presentation/src/main/java/com/nto/presentation/composable/Navigation.kt b/presentation/src/main/java/com/nto/presentation/composable/Navigation.kt index c2adf9f..f56222c 100644 --- a/presentation/src/main/java/com/nto/presentation/composable/Navigation.kt +++ b/presentation/src/main/java/com/nto/presentation/composable/Navigation.kt @@ -6,6 +6,7 @@ import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import com.nto.data.utils.Destinations +import com.nto.presentation.screens.loginScreen.LoginScreen @Composable fun Navigation(navController: NavHostController, modifier: Modifier = Modifier) { @@ -15,7 +16,7 @@ fun Navigation(navController: NavHostController, modifier: Modifier = Modifier) startDestination = Destinations.Login.toString() ) { composable(Destinations.Login.toString()) { - //TODO + LoginScreen(navController) } composable(Destinations.Profile.toString()){ //TODO diff --git a/presentation/src/main/java/com/nto/presentation/screens/loginScreen/LoginScreen.kt b/presentation/src/main/java/com/nto/presentation/screens/loginScreen/LoginScreen.kt new file mode 100644 index 0000000..4b93e24 --- /dev/null +++ b/presentation/src/main/java/com/nto/presentation/screens/loginScreen/LoginScreen.kt @@ -0,0 +1,18 @@ +package com.nto.presentation.screens.loginScreen + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState +import androidx.compose.ui.Modifier +import androidx.hilt.navigation.compose.hiltViewModel +import androidx.navigation.NavHostController + +@Composable +fun LoginScreen( + navController: NavHostController, + modifier: Modifier = Modifier, + viewModel: LoginViewModel = hiltViewModel(), +) { + val state = viewModel.state.collectAsState() + + +} \ No newline at end of file diff --git a/presentation/src/main/java/com/nto/presentation/screens/loginScreen/LoginScreenState.kt b/presentation/src/main/java/com/nto/presentation/screens/loginScreen/LoginScreenState.kt new file mode 100644 index 0000000..ad3adf7 --- /dev/null +++ b/presentation/src/main/java/com/nto/presentation/screens/loginScreen/LoginScreenState.kt @@ -0,0 +1,8 @@ +package com.nto.presentation.screens.loginScreen + + +data class LoginScreenState( + var email: String = "", + var password: String = "", + var disabled: Boolean = true +) diff --git a/presentation/src/main/java/com/nto/presentation/screens/loginScreen/LoginViewModel.kt b/presentation/src/main/java/com/nto/presentation/screens/loginScreen/LoginViewModel.kt new file mode 100644 index 0000000..894cde1 --- /dev/null +++ b/presentation/src/main/java/com/nto/presentation/screens/loginScreen/LoginViewModel.kt @@ -0,0 +1,16 @@ +package com.nto.presentation.screens.loginScreen + +import androidx.lifecycle.ViewModel +import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.asStateFlow +import javax.inject.Inject + +@HiltViewModel +class LoginViewModel @Inject constructor(): ViewModel(){ + private val _state = MutableStateFlow(LoginScreenState()) + + val state: StateFlow + get() = _state.asStateFlow() +} \ No newline at end of file