One of these days, I'll settle on a project structure

This commit is contained in:
Z. Charles Dziura 2024-08-21 11:54:47 -04:00
parent 1637d058b1
commit 59c7bdbb78
7 changed files with 21 additions and 41 deletions

View file

@ -9,12 +9,13 @@ import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController import androidx.navigation.compose.rememberNavController
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import software.makeshift.debtpirate.screens.auth.SignUpScreen import software.makeshift.debtpirate.screens.auth.AuthScreen
import software.makeshift.debtpirate.screens.auth.signup.SignUpScreenViewModel import software.makeshift.debtpirate.screens.auth.signup.SignUpScreenViewModel
import software.makeshift.debtpirate.ui.theme.DebtPirateTheme import software.makeshift.debtpirate.ui.theme.DebtPirateTheme
@Serializable @Serializable
object LoginRoute object AuthRoute
class MainActivity : ComponentActivity() { class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
@ -24,10 +25,10 @@ class MainActivity : ComponentActivity() {
val navController = rememberNavController() val navController = rememberNavController()
DebtPirateTheme { DebtPirateTheme {
NavHost(navController = navController, startDestination = LoginRoute) { NavHost(navController = navController, startDestination = AuthRoute) {
composable<LoginRoute> { composable<AuthRoute> {
SignUpScreen( AuthScreen(
viewModel = viewModel<SignUpScreenViewModel>() signUpViewModel = viewModel<SignUpScreenViewModel>()
) )
} }
} }

View file

@ -20,19 +20,17 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import software.makeshift.debtpirate.R import software.makeshift.debtpirate.R
import software.makeshift.debtpirate.screens.auth.signup.SignUpScreen
import software.makeshift.debtpirate.screens.auth.signup.SignUpScreenViewModel
@SuppressLint("UnusedMaterial3ScaffoldPaddingParameter") @SuppressLint("UnusedMaterial3ScaffoldPaddingParameter")
@Composable @Composable
fun SignUpScreen( fun AuthScreen(
viewModel: SignUpScreenViewModel viewModel: AuthScreenViewModel
) { ) {
Scaffold( Scaffold(
modifier = Modifier.fillMaxSize() modifier = Modifier.fillMaxSize()
) { innerPadding -> ) { innerPadding ->
Column { Column {
LoginTopBar( AuthScreenTopAppBar(
innerPadding, innerPadding,
modifier = Modifier modifier = Modifier
.fillMaxWidth() .fillMaxWidth()
@ -55,7 +53,7 @@ fun SignUpScreen(
} }
@Composable @Composable
private fun LoginTopBar(innerPadding: PaddingValues, modifier: Modifier = Modifier) { private fun AuthScreenTopAppBar(innerPadding: PaddingValues, modifier: Modifier = Modifier) {
Box(modifier = modifier.background(Color.Green)) { Box(modifier = modifier.background(Color.Green)) {
Text( Text(
text = "Hello from Login! I'm in a box!", text = "Hello from Login! I'm in a box!",

View file

@ -1,10 +1,10 @@
package software.makeshift.debtpirate.screens.auth.signup package software.makeshift.debtpirate.screens.auth
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.asStateFlow
class SignUpScreenViewModel : ViewModel() { class AuthScreenViewModel : ViewModel() {
private val _displayName = MutableStateFlow("") private val _displayName = MutableStateFlow("")
val displayName = _displayName.asStateFlow() val displayName = _displayName.asStateFlow()
@ -18,8 +18,4 @@ class SignUpScreenViewModel : ViewModel() {
fun updateEmailAddress(emailAddress: String) { fun updateEmailAddress(emailAddress: String) {
_emailAddress.value = emailAddress _emailAddress.value = emailAddress
} }
fun isValidPassword() {
}
} }

View file

@ -1,4 +1,4 @@
package software.makeshift.debtpirate.screens.auth.signin package software.makeshift.debtpirate.screens.auth
import android.util.Log import android.util.Log
import androidx.compose.foundation.interaction.FocusInteraction import androidx.compose.foundation.interaction.FocusInteraction

View file

@ -1,4 +1,4 @@
package software.makeshift.debtpirate.screens.auth.signup package software.makeshift.debtpirate.screens.auth
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.PaddingValues

View file

@ -1,21 +0,0 @@
package software.makeshift.debtpirate.screens.auth.signin
import androidx.lifecycle.ViewModel
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow
class SignInViewModel : ViewModel() {
private val _username = MutableStateFlow("")
val username = _username.asStateFlow()
private val _password = MutableStateFlow("")
val password = _password.asStateFlow()
fun updateUsername(username: String) {
_username.value = username
}
fun updateLoginPassword(password: String) {
_password.value = password
}
}

View file

@ -0,0 +1,6 @@
package software.makeshift.debtpirate.types
sealed class Either<out A, out B> {
class Left<A>(val value: A) : Either<A, Nothing>()
class Right<B>(val value: B) : Either<Nothing, B>()
}