@@ -23,14 +23,13 @@ import androidx.compose.runtime.getValue
23
23
import androidx.compose.runtime.rememberCoroutineScope
24
24
import androidx.compose.ui.Modifier
25
25
import androidx.compose.ui.platform.LocalContext
26
- import androidx.compose.ui.res.stringResource
27
26
import androidx.compose.ui.tooling.preview.Preview
28
27
import androidx.compose.ui.util.fastForEachIndexed
29
28
import androidx.hilt.navigation.compose.hiltViewModel
30
29
import androidx.lifecycle.compose.collectAsStateWithLifecycle
31
30
import app.opass.ccip.android.R
31
+ import app.opass.ccip.android.ui.composable.SearchAppBarComposable
32
32
import app.opass.ccip.android.ui.composable.SessionComposable
33
- import app.opass.ccip.android.ui.composable.TopAppBarComposable
34
33
import app.opass.ccip.android.ui.screens.event.EventViewModel
35
34
import app.opass.ccip.network.models.schedule.Session
36
35
import kotlinx.coroutines.launch
@@ -44,6 +43,7 @@ fun ScheduleScreen(
44
43
) {
45
44
val context = LocalContext .current
46
45
val schedule by viewModel.schedule.collectAsStateWithLifecycle()
46
+ val searchResult by viewModel.searchResult.collectAsStateWithLifecycle()
47
47
48
48
LaunchedEffect (key1 = Unit ) { viewModel.getSchedule(eventId) }
49
49
@@ -55,8 +55,10 @@ fun ScheduleScreen(
55
55
DateUtils .FORMAT_SHOW_DATE
56
56
)
57
57
} ? : emptyMap(),
58
+ searchResult = searchResult,
58
59
onNavigateUp = onNavigateUp,
59
60
onNavigateToSession = onNavigateToSession,
61
+ onSearch = { query -> viewModel.search(query) },
60
62
onFormatDateTime = { time ->
61
63
DateUtils .formatDateTime(
62
64
context,
@@ -70,17 +72,33 @@ fun ScheduleScreen(
70
72
@Composable
71
73
private fun ScreenContent (
72
74
sessions : Map <String , List <Session >> = emptyMap(),
75
+ searchResult : List <Session > = emptyList(),
73
76
onNavigateUp : () -> Unit = {},
74
77
onNavigateToSession : (sessionId: String ) -> Unit = {},
75
- onFormatDateTime : (time: String ) -> String = { "" }
78
+ onFormatDateTime : (time: String ) -> String = { "" },
79
+ onSearch : (query: String ) -> Unit = {},
76
80
) {
77
81
Scaffold (
78
82
modifier = Modifier .fillMaxSize(),
79
83
topBar = {
80
- TopAppBarComposable (
81
- title = stringResource(id = R .string.schedule),
82
- onNavigate = onNavigateUp
83
- )
84
+ SearchAppBarComposable (
85
+ searchHint = R .string.search_session,
86
+ isEnabled = sessions.isNotEmpty(),
87
+ onSearch = onSearch,
88
+ onNavigateUp = onNavigateUp
89
+ ) {
90
+ LazyColumn {
91
+ items(items = searchResult, key = { s -> s.id }) { session ->
92
+ SessionComposable (
93
+ title = session.title,
94
+ startTime = onFormatDateTime(session.start),
95
+ endTime = onFormatDateTime(session.end),
96
+ room = session.room,
97
+ onClicked = { onNavigateToSession(session.id) }
98
+ )
99
+ }
100
+ }
101
+ }
84
102
}
85
103
) { paddingValues ->
86
104
val tabData = sessions.keys.toList()
0 commit comments