NetNewsWire/Multiplatform/Shared/Sidebar/SidebarView.swift

52 lines
1.4 KiB
Swift
Raw Normal View History

2020-06-28 21:21:43 +02:00
//
// SidebarView.swift
// NetNewsWire
//
// Created by Maurice Parker on 6/29/20.
2020-06-28 21:21:43 +02:00
// Copyright © 2020 Ranchero Software. All rights reserved.
//
import SwiftUI
import Account
2020-06-28 21:21:43 +02:00
struct SidebarView: View {
@SceneStorage("expandedContainers") private var expandedContainerData = Data()
@StateObject private var expandedContainers = SidebarExpandedContainers()
@EnvironmentObject private var sidebarModel: SidebarModel
// @State private var selected = Set<FeedIdentifier>()
var body: some View {
List() {
ForEach(sidebarModel.sidebarItems) { sidebarItem in
if let containerID = sidebarItem.containerID {
DisclosureGroup(isExpanded: $expandedContainers[containerID]) {
ForEach(sidebarItem.children) { sidebarItem in
if let containerID = sidebarItem.containerID {
DisclosureGroup(isExpanded: $expandedContainers[containerID]) {
ForEach(sidebarItem.children) { sidebarItem in
SidebarItemView(sidebarItem: sidebarItem)
}
} label: {
SidebarItemView(sidebarItem: sidebarItem)
}
} else {
SidebarItemView(sidebarItem: sidebarItem)
}
}
} label: {
SidebarItemView(sidebarItem: sidebarItem)
}
}
}
2020-06-29 13:16:48 +02:00
}
.onAppear {
expandedContainers.data = expandedContainerData
}
.onReceive(expandedContainers.objectDidChange) {
expandedContainerData = expandedContainers.data
}
}
2020-06-28 21:21:43 +02:00
}