private fun makeHomeSections(home: HomePage, showLocationOnboarding: Boolean): List<Component> {
val list = mutableListOf<Component>()
list.addAll(generateBrowseEventsComponents())
if (shouldShowSpotifyConnect()) {
analytics.log(
AnalyticsEvent.Event.Spotify.ConnectViewed(
location = AnalyticsEvent.Event.Spotify.Location.FEED
)
)
list.add(generateSpotifyConnectComponent())
}
if (shouldShowTicketWalletOnboarding()) {
list.add(generateTicketWalletOnboarding())
} else if (showLocationOnboarding) {
list.add(generateLocationOnboarding())
}
if (home.feedItems.isEmpty().not()) {
// Required for analytics
feedStartPosition = list.size
for (item in home.feedItems) {
val position = list.size
when (item) {
is FeedItem.EventCollectionFeedItem,
is FeedItem.ThumbnailWithUrlFeedItem,
is FeedItem.BlogFeedItem -> {
item as ThumbnailFeedItem
list.add(
FeedItemComponent(
item.id,
item.title,
item.subtitle,
item.imageUrl,
item.status == FeedItemStatus.Preview,
item.apiType,
item.id
) { onFeedItemTap(item, position) }
)
}
is FeedItem.GroupFeedItem -> {
if (item.items.isNotEmpty()) {
val subtitle = item.subtitle
val events = item.items.take(NUM_ITEMS_CARD).mapToEventComponents()
val showMore = item.items.size > NUM_ITEMS_CARD
list.add(
CardItemGroupComponent(
id = item.id,
title = RawText(item.title),
subtitle = if (subtitle != null) RawText(subtitle) else null,
clickText = ResText(R.string.see_all),
preview = item.status == FeedItemStatus.Preview,
items = events,
onClick = { onFeedItemTap(item, position) },
showMore = showMore,
apiType = item.apiType,
titleAnalytics = item.title,
adapterProvider = componentAdapterProvider
)
)
}
}
}
}
}
if (home.eventsFromFollowedArtists.isEmpty().not()) {
val events = home.eventsFromFollowedArtists.take(3)
.mapEventToEventComponentsFromFollowedArtists()
val showMore = home.eventsFromFollowedArtists.size > 3
list.add(
CardItemGroupComponent(
id = "EVENTS_FROM_YOUR_ARTISTS",
title = ResText(R.string.feed_events_from_followed_artists_title),
subtitle = ResText(R.string.feed_events_from_followed_artists_subtitle),
clickText = ResText(R.string.see_all),
items = events,
showMore = showMore,
onClick = { view?.goToFollowedArtistsEvents() },
apiType = "",
titleAnalytics = "",
adapterProvider = componentAdapterProvider
)
)
}
return list
}