diff --git a/app/src/main/java/agzam/vyatsu/AppRoot.kt b/app/src/main/java/agzam/vyatsu/AppRoot.kt index a79b208..23852d7 100644 --- a/app/src/main/java/agzam/vyatsu/AppRoot.kt +++ b/app/src/main/java/agzam/vyatsu/AppRoot.kt @@ -6,6 +6,7 @@ import agzam.vyatsu.ui.picker.PickerScreen import agzam.vyatsu.ui.picker.PickerViewModel import agzam.vyatsu.ui.schedule.ScheduleViewModel import agzam.vyatsu.ui.settings.UpdateViewModel +import agzam.vyatsu.ui.teacher.TeacherScheduleViewModel import androidx.compose.material3.AlertDialog import androidx.compose.material3.Text import androidx.compose.material3.TextButton @@ -23,9 +24,11 @@ fun AppRoot() { val container = app.container val scheduleViewModel: ScheduleViewModel = viewModel(factory = scheduleFactory(container)) + val teacherScheduleViewModel: TeacherScheduleViewModel = viewModel(factory = teacherScheduleFactory(container)) val updateViewModel: UpdateViewModel = viewModel(factory = updateFactory(container)) val state by scheduleViewModel.uiState.collectAsState() + val teacherState by teacherScheduleViewModel.uiState.collectAsState() val showFirstRunDialog by updateViewModel.showFirstRunDialog.collectAsState() if (showFirstRunDialog) { @@ -51,19 +54,21 @@ fun AppRoot() { ) } - if (state.noGroup) { + if (state.noGroup && teacherState.noTeacher) { val pickerViewModel: PickerViewModel = viewModel(factory = pickerFactory(container)) PickerScreen( viewModel = pickerViewModel, onGroupPicked = { group -> scheduleViewModel.selectGroup(group.id) }, - onTeacherPicked = { } + onTeacherPicked = { teacher -> teacherScheduleViewModel.selectTeacher(teacher.name) } ) return } HomeScreen( scheduleViewModel = scheduleViewModel, + teacherScheduleViewModel = teacherScheduleViewModel, updateViewModel = updateViewModel, - onSwitchGroup = { scheduleViewModel.switchGroup() } + onSwitchGroup = { scheduleViewModel.switchGroup() }, + onSwitchTeacher = { teacherScheduleViewModel.switchTeacher() } ) } @@ -73,6 +78,7 @@ private class SimpleFactory(private val create: () -> T) : ViewMo } private fun scheduleFactory(c: AppContainer): ViewModelProvider.Factory = SimpleFactory { ScheduleViewModel(c.scheduleRepository, c.preferencesRepository, c.groupRepository) } +private fun teacherScheduleFactory(c: AppContainer): ViewModelProvider.Factory = SimpleFactory { TeacherScheduleViewModel(c.teacherScheduleRepository, c.preferencesRepository) } private fun pickerFactory(c: AppContainer): ViewModelProvider.Factory = SimpleFactory { PickerViewModel( c.groupRepository, diff --git a/app/src/main/java/agzam/vyatsu/ui/home/HomeScreen.kt b/app/src/main/java/agzam/vyatsu/ui/home/HomeScreen.kt index 8310663..fe84eb8 100644 --- a/app/src/main/java/agzam/vyatsu/ui/home/HomeScreen.kt +++ b/app/src/main/java/agzam/vyatsu/ui/home/HomeScreen.kt @@ -6,6 +6,8 @@ import agzam.vyatsu.ui.schedule.ScheduleScreen import agzam.vyatsu.ui.schedule.ScheduleViewModel import agzam.vyatsu.ui.settings.SettingsScreen import agzam.vyatsu.ui.settings.UpdateViewModel +import agzam.vyatsu.ui.teacher.TeacherScheduleScreen +import agzam.vyatsu.ui.teacher.TeacherScheduleViewModel import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons @@ -19,6 +21,7 @@ import androidx.compose.material3.NavigationBarItem import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable @@ -35,10 +38,13 @@ private enum class HomeTab(val label: String) { @Composable fun HomeScreen( scheduleViewModel: ScheduleViewModel, + teacherScheduleViewModel: TeacherScheduleViewModel, updateViewModel: UpdateViewModel, - onSwitchGroup: () -> Unit + onSwitchGroup: () -> Unit, + onSwitchTeacher: () -> Unit ) { var tab by rememberSaveable { mutableStateOf(HomeTab.SCHEDULE) } + val teacherState by teacherScheduleViewModel.uiState.collectAsState() Scaffold( bottomBar = { @@ -70,7 +76,14 @@ fun HomeScreen( .padding(innerPadding) ) { when (tab) { - HomeTab.SCHEDULE -> ScheduleScreen(viewModel = scheduleViewModel, onSwitchGroup = onSwitchGroup) + HomeTab.SCHEDULE -> if (teacherState.teacherName != null) { + TeacherScheduleScreen( + viewModel = teacherScheduleViewModel, + onSwitchTeacher = onSwitchTeacher + ) + } else { + ScheduleScreen(viewModel = scheduleViewModel, onSwitchGroup = onSwitchGroup) + } HomeTab.CALLS -> CallsScreen() HomeTab.BUILDINGS -> BuildingsScreen() HomeTab.SETTINGS -> SettingsScreen(viewModel = updateViewModel)