@@ -43,6 +43,7 @@ import com.cornellappdev.transit.ui.theme.robotoFamily
4343import com.cornellappdev.transit.ui.viewmodels.EcosystemFavoritesUiState
4444import com.cornellappdev.transit.ui.viewmodels.FavoritesFilterSheetState
4545import com.cornellappdev.transit.ui.viewmodels.FilterState
46+ import com.cornellappdev.transit.ui.viewmodels.LibraryCardUiState
4647import com.cornellappdev.transit.util.TimeUtils.isOpenAnnotatedStringFromOperatingHours
4748import com.cornellappdev.transit.util.ecosystem.capacityPercentAnnotatedString
4849import com.cornellappdev.transit.ui.viewmodels.PrinterCardUiState
@@ -65,6 +66,7 @@ fun EcosystemBottomSheetContent(
6566 activeFilter : FilterState ,
6667 onFilterClick : (FilterState ) -> Unit ,
6768 staticPlaces : StaticPlaces ,
69+ libraryCardsApiResponse : ApiResponse <List <LibraryCardUiState >>,
6870 favorites : Set <Place >,
6971 favoritesUiState : EcosystemFavoritesUiState ,
7072 modifier : Modifier = Modifier ,
@@ -119,6 +121,7 @@ fun EcosystemBottomSheetContent(
119121 BottomSheetFilteredContent (
120122 currentFilter = activeFilter,
121123 staticPlaces = staticPlaces,
124+ libraryCardsApiResponse = libraryCardsApiResponse,
122125 favorites = favorites,
123126 favoritesUiState = favoritesUiState,
124127 navigateToPlace = navigateToPlace,
@@ -153,6 +156,7 @@ fun EcosystemBottomSheetContent(
153156private fun BottomSheetFilteredContent (
154157 currentFilter : FilterState ,
155158 staticPlaces : StaticPlaces ,
159+ libraryCardsApiResponse : ApiResponse <List <LibraryCardUiState >>,
156160 favorites : Set <Place >,
157161 favoritesUiState : EcosystemFavoritesUiState ,
158162 navigateToPlace : (Place ) -> Unit ,
@@ -200,7 +204,7 @@ private fun BottomSheetFilteredContent(
200204 favorites = favorites,
201205 filteredFavorites = favoritesUiState.filteredSortedFavorites,
202206 eateryByPlace = favoritesUiState.eateryByPlace,
203- libraryByPlace = favoritesUiState.libraryByPlace ,
207+ libraryCardByPlace = favoritesUiState.libraryCardByPlace ,
204208 gymByPlace = favoritesUiState.gymByPlace,
205209 printerByPlace = favoritesUiState.printerByPlace,
206210 navigateToPlace = navigateToPlace,
@@ -248,7 +252,7 @@ private fun BottomSheetFilteredContent(
248252
249253 FilterState .LIBRARIES -> {
250254 libraryList(
251- staticPlaces ,
255+ libraryCardsApiResponse ,
252256 navigateToPlace,
253257 onDetailsClick,
254258 favorites,
@@ -269,7 +273,7 @@ private fun LazyListScope.favoriteList(
269273 favorites : Set <Place >,
270274 filteredFavorites : List <Place >,
271275 eateryByPlace : Map <Place , Eatery >,
272- libraryByPlace : Map <Place , Library >,
276+ libraryCardByPlace : Map <Place , LibraryCardUiState >,
273277 gymByPlace : Map <Place , UpliftGym >,
274278 printerByPlace : Map <Place , PrinterCardUiState >,
275279 navigateToPlace : (Place ) -> Unit ,
@@ -319,18 +323,22 @@ private fun LazyListScope.favoriteList(
319323 }
320324
321325 PlaceType .LIBRARY -> {
322- val matchingLibrary = libraryByPlace[place]
323- if (matchingLibrary != null ) {
326+ val matchingLibraryCard = libraryCardByPlace[place]
327+ if (matchingLibraryCard != null ) {
328+ val matchingLibrary = matchingLibraryCard.library
324329 RoundedImagePlaceCard (
325330 title = matchingLibrary.location,
326331 subtitle = matchingLibrary.address + distanceStringToPlace(
327332 matchingLibrary.latitude,
328333 matchingLibrary.longitude
329334 ),
330335 isFavorite = true ,
331- onFavoriteClick = { onFavoriteStarClick(place) }
336+ onFavoriteClick = { onFavoriteStarClick(place) },
337+ placeholderRes = matchingLibraryCard.placeholderRes
332338 ) {
333- onDetailsClick(matchingLibrary)
339+ // Use detailed content sheet when backend is updated
340+ // onDetailsClick(matchingLibrary)
341+ navigateToPlace(matchingLibrary.toPlace())
334342 }
335343 } else {
336344 StandardCard (
@@ -564,32 +572,35 @@ private fun LazyListScope.eateryList(
564572 * LazyList scoped enumeration of libraries for bottom sheet
565573 */
566574private fun LazyListScope.libraryList (
567- staticPlaces : StaticPlaces ,
575+ libraryCardsApiResponse : ApiResponse < List < LibraryCardUiState >> ,
568576 navigateToPlace : (Place ) -> Unit ,
569577 navigateToDetails : (DetailedEcosystemPlace ) -> Unit ,
570578 favorites : Set <Place >,
571579 onFavoriteStarClick : (Place ) -> Unit ,
572580 distanceStringToPlace : (Double? , Double? ) -> String ,
573581) {
574- when (staticPlaces.libraries ) {
582+ when (libraryCardsApiResponse ) {
575583 is ApiResponse .Error -> {
576584 }
577585
578586 is ApiResponse .Pending -> {
579587 }
580588
581589 is ApiResponse .Success -> {
582- items(staticPlaces.libraries.data) {
590+ items(libraryCardsApiResponse.data) {
591+ val library = it.library
583592 RoundedImagePlaceCard (
584- placeholderRes = R .drawable.olin_library ,
585- title = it .location,
586- subtitle = it .address + distanceStringToPlace(it .latitude, it .longitude),
587- isFavorite = it .toPlace() in favorites,
593+ placeholderRes = it.placeholderRes ,
594+ title = library .location,
595+ subtitle = library .address + distanceStringToPlace(library .latitude, library .longitude),
596+ isFavorite = library .toPlace() in favorites,
588597 onFavoriteClick = {
589- onFavoriteStarClick(it .toPlace())
598+ onFavoriteStarClick(library .toPlace())
590599 }
591600 ) {
592- navigateToDetails(it)
601+ // Use detailed content sheet when backend is updated
602+ // navigateToDetails(library)
603+ navigateToPlace(library.toPlace())
593604 }
594605 }
595606 }
@@ -635,6 +646,7 @@ private fun PreviewEcosystemBottomSheet() {
635646 ApiResponse .Pending ,
636647 ApiResponse .Pending
637648 ),
649+ libraryCardsApiResponse = ApiResponse .Pending ,
638650 favorites = emptySet(),
639651 favoritesUiState = EcosystemFavoritesUiState (),
640652 modifier = Modifier ,
@@ -716,6 +728,14 @@ private fun PreviewBottomSheetFilteredContentFavorites() {
716728 eateries = ApiResponse .Success (listOf (mockEatery)),
717729 gyms = ApiResponse .Success (listOf (mockGym))
718730 ),
731+ libraryCardsApiResponse = ApiResponse .Success (
732+ listOf (
733+ LibraryCardUiState (
734+ library = mockLibrary,
735+ placeholderRes = R .drawable.olin_library
736+ )
737+ )
738+ ),
719739 favorites = setOf (
720740 Place (
721741 latitude = 42.4488 ,
@@ -792,7 +812,12 @@ private fun PreviewBottomSheetFilteredContentFavorites() {
792812 )
793813 ),
794814 eateryByPlace = listOf (mockEatery).associateBy { it.toPlace() },
795- libraryByPlace = listOf (mockLibrary).associateBy { it.toPlace() },
815+ libraryCardByPlace = mapOf (
816+ mockLibrary.toPlace() to LibraryCardUiState (
817+ library = mockLibrary,
818+ placeholderRes = R .drawable.olin_library
819+ )
820+ ),
796821 gymByPlace = listOf (mockGym).associateBy { it.toPlace() },
797822 printerByPlace = mapOf (
798823 mockPrinter.toPlace() to PrinterCardUiState (
0 commit comments