1+ package com.xpeho.xpeapp.ui.page
2+
3+ import androidx.compose.foundation.layout.fillMaxSize
4+ import androidx.compose.foundation.layout.padding
5+ import androidx.compose.foundation.lazy.LazyColumn
6+ import androidx.compose.runtime.Composable
7+ import androidx.compose.runtime.LaunchedEffect
8+ import androidx.compose.ui.Modifier
9+ import androidx.compose.ui.res.stringResource
10+ import androidx.compose.ui.unit.dp
11+ import androidx.lifecycle.viewmodel.compose.viewModel
12+ import com.xpeho.xpeapp.R
13+ import com.xpeho.xpeapp.ui.components.CustomDialog
14+ import com.xpeho.xpeapp.ui.components.agenda.AgendaBirthdayItem
15+ import com.xpeho.xpeapp.ui.components.agenda.AgendaCardList
16+ import com.xpeho.xpeapp.ui.components.agenda.AgendaEventItem
17+ import com.xpeho.xpeapp.ui.components.layout.Title
18+ import com.xpeho.xpeapp.ui.sendAnalyticsEvent
19+ import com.xpeho.xpeapp.ui.uiState.AgendaUiState
20+ import com.xpeho.xpeapp.ui.uiState.QvstUiState
21+ import com.xpeho.xpeapp.ui.viewModel.agenda.AgendaViewModel
22+ import com.xpeho.xpeapp.ui.viewModel.viewModelFactory
23+
24+ @Composable
25+ fun AgendaPage () {
26+ val agendaViewModel = viewModel<AgendaViewModel >(
27+ factory = viewModelFactory {
28+ AgendaViewModel ()
29+ }
30+ )
31+
32+ sendAnalyticsEvent(" agenda_page" )
33+
34+ LaunchedEffect (Unit ) {
35+ agendaViewModel.updateState()
36+ }
37+
38+ LazyColumn (
39+ modifier = Modifier
40+ .padding(horizontal = 24 .dp, vertical = 10 .dp)
41+ .fillMaxSize(),
42+ ) {
43+ when (agendaViewModel.state) {
44+ is AgendaUiState .SUCCESS -> {
45+ item {
46+ Title (label = " Agenda" )
47+ val state = agendaViewModel.state as AgendaUiState .SUCCESS
48+ val events = state.agendaEvent.map { AgendaEventItem (it) }
49+ val birthdays = state.agendaBirthday.map { AgendaBirthdayItem (it) }
50+ val items = (events + birthdays).sortedBy { it.date }
51+ AgendaCardList (
52+ items = items,
53+ eventsTypes = state.agendaEventType,
54+ collapsable = true
55+ )
56+ }
57+ }
58+ is AgendaUiState .ERROR -> {
59+ item {
60+ CustomDialog (
61+ title = stringResource(id = R .string.login_page_error_title),
62+ message = (agendaViewModel.state as QvstUiState .ERROR ).error,
63+ ) {
64+ agendaViewModel.resetState()
65+ }
66+ }
67+ }
68+ }
69+ }
70+ }
0 commit comments