Skip to content

Instantly share code, notes, and snippets.

@jamesrochabrun
Last active January 27, 2021 17:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jamesrochabrun/c64114e607d7ef9db4c4f48448fe1fb7 to your computer and use it in GitHub Desktop.
Save jamesrochabrun/c64114e607d7ef9db4c4f48448fe1fb7 to your computer and use it in GitHub Desktop.
import SwiftUI
import CompositionalList
struct FeedView: View {
@ObservedObject private var remote = ItunesRemote()
@State var selectedItem: FeedItemViewModel?
var body: some View {
NavigationView {
/// 5
if remote.feedItems.isEmpty {
ActivityIndicator()
} else {
CompositionalList(remote.feedItems) { model, indexPath in
/// 1
Group {
switch indexPath.section {
case 0, 2, 3:
TileInfo(artworkViewModel: model)
case 1:
ListItem(artworkViewModel: model)
default:
ArtWork(artworkViewModel: model)
}
}
}.sectionHeader { sectionIdentifier, kind, indexPath in
/// 2
TitleHeaderView(title: sectionIdentifier.rawValue)
}
.selectedItem {
/// 3
selectedItem = $0
}
/// 4
.customLayout(.composed())
.sheet(item: $selectedItem) { item in
ItunesFeedItemDetailView(viewModel: item)
}
.navigationBarTitle("Apple Music")
}
}
.onAppear {
remote.fetchItems(.appleMusic(feedType: .topSongs(genre: .all), limit: 200))
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment