Skip to content

Commit

Permalink
Make UiState for SearchList section
Browse files Browse the repository at this point in the history
  • Loading branch information
chigichan24 committed Aug 17, 2023
1 parent 2788b33 commit c205a1e
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,18 +18,16 @@ import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
import androidx.navigation.compose.composable
import io.github.droidkaigi.confsched2023.model.DroidKaigi2023Day
import io.github.droidkaigi.confsched2023.model.Timetable
import io.github.droidkaigi.confsched2023.model.TimetableCategory
import io.github.droidkaigi.confsched2023.model.TimetableItem
import io.github.droidkaigi.confsched2023.model.TimetableItemId
import io.github.droidkaigi.confsched2023.sessions.SearchScreenUiState.Empty
import io.github.droidkaigi.confsched2023.sessions.SearchScreenUiState.SearchList
import io.github.droidkaigi.confsched2023.sessions.component.EmptySearchResultBody
import io.github.droidkaigi.confsched2023.sessions.component.SearchFilter
import io.github.droidkaigi.confsched2023.sessions.component.SearchFilterUiState
import io.github.droidkaigi.confsched2023.sessions.component.SearchTextFieldAppBar
import io.github.droidkaigi.confsched2023.sessions.section.SearchList
import kotlinx.collections.immutable.PersistentSet
import io.github.droidkaigi.confsched2023.sessions.section.SearchListUiState

const val searchScreenRoute = "search"
const val SearchScreenTestTag = "SearchScreen"
Expand All @@ -46,8 +44,7 @@ sealed interface SearchScreenUiState {
data class SearchList(
override val searchQuery: String,
override val searchFilterUiState: SearchFilterUiState,
val sessions: Timetable,
val bookmarkedTimetableItemIds: PersistentSet<TimetableItemId>,
val searchListUiState: SearchListUiState,
) : SearchScreenUiState
}

Expand Down Expand Up @@ -132,8 +129,7 @@ private fun SearchScreen(
bottom = innerPadding.calculateBottomPadding(),
),
scrollState = scrollState,
bookmarkedTimetableItemIds = uiState.bookmarkedTimetableItemIds,
timetableItems = uiState.sessions.timetableItems,
searchListUiState = uiState.searchListUiState,
onTimetableItemClick = onTimetableItemClick,
onBookmarkIconClick = onBookmarkClick,
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import io.github.droidkaigi.confsched2023.model.Timetable
import io.github.droidkaigi.confsched2023.model.TimetableCategory
import io.github.droidkaigi.confsched2023.model.TimetableItem
import io.github.droidkaigi.confsched2023.sessions.component.SearchFilterUiState
import io.github.droidkaigi.confsched2023.sessions.section.SearchListUiState
import io.github.droidkaigi.confsched2023.ui.UserMessageStateHolder
import io.github.droidkaigi.confsched2023.ui.buildUiState
import io.github.droidkaigi.confsched2023.ui.handleErrorAndRetry
Expand Down Expand Up @@ -69,8 +70,10 @@ class SearchScreenViewModel @Inject constructor(
SearchScreenUiState.SearchList(
searchQuery = searchQuery,
searchFilterUiState = searchFilterUiState,
sessions = searchedSessions,
bookmarkedTimetableItemIds = sessions.bookmarks,
searchListUiState = SearchListUiState(
bookmarkedTimetableItemIds = sessions.bookmarks,
timetableItems = searchedSessions.timetableItems,
),
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,22 +41,28 @@ import kotlinx.collections.immutable.PersistentList
import kotlinx.collections.immutable.PersistentSet
import java.util.Locale

data class SearchListUiState(
val bookmarkedTimetableItemIds: PersistentSet<TimetableItemId>,
val timetableItems: PersistentList<TimetableItem>,
)

@Composable
fun SearchList(
contentPaddingValues: PaddingValues,
searchListUiState: SearchListUiState,
scrollState: LazyListState,
bookmarkedTimetableItemIds: PersistentSet<TimetableItemId>,
timetableItems: PersistentList<TimetableItem>,
onTimetableItemClick: (TimetableItem) -> Unit,
onBookmarkIconClick: (TimetableItem) -> Unit,
modifier: Modifier = Modifier,
) {
LazyColumn(
state = scrollState,
contentPadding = contentPaddingValues,
modifier = modifier.imePadding().padding(end = 16.dp),
modifier = modifier
.imePadding()
.padding(end = 16.dp),
) {
itemsIndexed(timetableItems) { index, timetableItem ->
itemsIndexed(searchListUiState.timetableItems) { index, timetableItem ->
Row(modifier = Modifier.padding(top = 10.dp)) {
Column(
modifier = Modifier.width(58.dp),
Expand All @@ -81,7 +87,9 @@ fun SearchList(
}
TimetableListItem(
timetableItem = timetableItem,
isBookmarked = bookmarkedTimetableItemIds.contains(timetableItem.id),
isBookmarked = searchListUiState.bookmarkedTimetableItemIds.contains(
timetableItem.id
),
chipContent = {
// Chips
val infoChip = mutableListOf<String>()
Expand Down

0 comments on commit c205a1e

Please sign in to comment.