diff --git a/Shared/PostCollection/CollectionListView.swift b/Shared/PostCollection/CollectionListView.swift index a084f82..9dbcb22 100644 --- a/Shared/PostCollection/CollectionListView.swift +++ b/Shared/PostCollection/CollectionListView.swift @@ -1,78 +1,90 @@ import SwiftUI struct CollectionListView: View { @EnvironmentObject var model: WriteFreelyModel @FetchRequest( entity: WFACollection.entity(), sortDescriptors: [NSSortDescriptor(keyPath: \WFACollection.title, ascending: true)] ) var collections: FetchedResults var body: some View { List(selection: $model.selectedCollection) { if model.account.isLoggedIn { NavigationLink( destination: PostListView(), isActive: Binding( get: { () -> Bool in model.selectedCollection == nil && model.showAllPosts }, set: { newValue in if newValue { - self.model.selectedCollection = nil self.model.showAllPosts = true + self.model.selectedCollection = nil } else { // No-op } } - )) { + ), + label: { Text("All Posts") - } + }) NavigationLink( destination: PostListView(), isActive: Binding( get: { () -> Bool in model.selectedCollection == nil && !model.showAllPosts }, set: { newValue in if newValue { - self.model.selectedCollection = nil self.model.showAllPosts = false + self.model.selectedCollection = nil } else { // No-op } } - )) { + ), + label: { Text(model.account.server == "https://write.as" ? "Anonymous" : "Drafts") - } + }) Section(header: Text("Your Blogs")) { ForEach(collections, id: \.alias) { collection in NavigationLink( - collection.title, destination: PostListView(), - tag: collection, - selection: $model.selectedCollection + isActive: Binding( + get: { () -> Bool in + model.selectedCollection == collection && !model.showAllPosts + }, set: { newValue in + if newValue { + self.model.showAllPosts = false + self.model.selectedCollection = collection + } else { + // No-op + } + } + ), + label: { Text(collection.title) } ) } } } else { - NavigationLink(destination: PostListView(selectedCollection: nil, showAllPosts: false)) { + NavigationLink(destination: PostListView()) { Text("Drafts") } } } .navigationTitle( model.account.isLoggedIn ? "\(URL(string: model.account.server)?.host ?? "WriteFreely")" : "WriteFreely" ) .listStyle(SidebarListStyle()) } } struct CollectionListView_LoggedOutPreviews: PreviewProvider { static var previews: some View { let context = LocalStorageManager.persistentContainer.viewContext let model = WriteFreelyModel() return CollectionListView() .environment(\.managedObjectContext, context) .environmentObject(model) } }