// // SidebarExpandedContainers.swift // NetNewsWire // // Created by Maurice Parker on 6/30/20. // Copyright © 2020 Ranchero Software. All rights reserved. // import SwiftUI import Combine import Account final class SidebarExpandedContainers: ObservableObject { @Published var expandedTable = Set() var objectDidChange = PassthroughSubject() var data: Data { get { let encoder = PropertyListEncoder() encoder.outputFormat = .binary return (try? encoder.encode(expandedTable)) ?? Data() } set { let decoder = PropertyListDecoder() expandedTable = (try? decoder.decode(Set.self, from: newValue)) ?? Set() } } subscript(_ containerID: ContainerIdentifier) -> Bool { get { if expandedTable.contains(containerID) { return true } else { return false } } set(newValue) { if newValue { expandedTable.insert(containerID) } else { expandedTable.remove(containerID) } objectDidChange.send() } } }