Files
recipe/composeApp
ulfrxdev 88f489800d feat(02-07): implement auth screens, ViewModels, and App auth gate
- Replace template App() body with RecipeTheme + when over AuthSession.state
  rendering SplashScreen / LoginScreen / PostLoginPlaceholderScreen
- LaunchedEffect kicks AuthSession.initialize() once at composition start so
  the persisted-session restore actually progresses Loading -> Auth/Unauth
- LoginViewModel.onSignInClick() returns the launched Job and maps
  Cancelled/NetworkError/Failed to auth_error_cancelled/network/unknown
- LoginScreenState clears the previous error and sets isLoading=true before
  awaiting AuthSession.login(), per UI-SPEC inline-error rules
- PostLoginViewModel.onSignOutClick() delegates to AuthSession.logout()
- Screens use Material 3 stdlib only (Surface, Button, OutlinedButton,
  CircularProgressIndicator); no Scaffold, no Haze, all strings via
  stringResource(Res.string.*)
- Register LoginViewModel + PostLoginViewModel in authModule via
  org.koin.core.module.dsl.viewModel
2026-04-28 17:36:48 +02:00
..