// // NetworkState.swift // punchnet // // Created by 安礼成 on 2026/1/16. // import Foundation import Observation @Observable class NetworkState { // 连接状态 enum ConnectState { case waitAuth case connected case disconnected } // 展示状态 enum ShowMode { case resource case device } struct Resource { var id: Int var status: Int var name: String var schema: String } struct Device { var id: Int var status: Int var name: String var ipv4: String var ipv6: String var system: String var resources: [Resource] func hash(into hasher: inout Hasher) { hasher.combine(id) } static func == (lhs: Self, rhs: Self) -> Bool { return lhs.id == rhs.id } } struct NetworkModel { var name: String } // 状态管理 var connectState: ConnectState = .disconnected var model: NetworkModel = .init(name: "123@abc.com的网络") var showModel: ShowMode = .device // 网络连接开关 var isOn: Bool = false { didSet { if isOn { self.connectState = .connected } else { self.connectState = .disconnected } } } // 当前选中的设备 var selectedDevice: Device? var resources: [Resource] = [ .init(id: 1, status: 1, name: "OA", schema: "http://100.92.108.1:8080"), .init(id: 2, status: 0, name: "数据资源", schema: "http://100.92.108.1:8080"), .init(id: 3, status: 1, name: "OA", schema: "http://100.92.108.1:8080"), .init(id: 4, status: 0, name: "TEST", schema: "http://100.92.108.1:8080"), .init(id: 10, status: 1, name: "YES", schema: "http://100.92.108.1:8080"), .init(id: 11, status: 0, name: "DEBUG", schema: "http://100.92.108.1:8080"), ] var devices: [Device] = [ ] init() { self.devices = [ .init(id: 1, status: 1, name: "test1", ipv4: "192.168.1.1", ipv6: "fa9d.fa9d.fa9d.fa9d", system: "MacOS 12", resources: self.resources), .init(id: 2, status: 1, name: "test2", ipv4: "192.168.1.2", ipv6: "fa9d.fa9d.fa9d.fa9d", system: "MacOS 12", resources: self.resources), .init(id: 3, status: 1, name: "test3", ipv4: "192.168.1.3", ipv6: "fa9d.fa9d.fa9d.fa9d", system: "MacOS 12", resources: self.resources), .init(id: 4, status: 1, name: "阿里云1", ipv4: "192.168.1.1", ipv6: "fa9d.fa9d.fa9d.fa9d", system: "MacOS 12", resources: self.resources), .init(id: 5, status: 1, name: "阿里云1", ipv4: "192.168.1.1", ipv6: "fa9d.fa9d.fa9d.fa9d", system: "MacOS 12", resources: self.resources), .init(id: 15, status: 1, name: "阿里云1", ipv4: "192.168.1.1", ipv6: "fa9d.fa9d.fa9d.fa9d", system: "MacOS 12", resources: self.resources), .init(id: 25, status: 1, name: "阿里云1", ipv4: "192.168.1.1", ipv6: "fa9d.fa9d.fa9d.fa9d", system: "MacOS 12", resources: self.resources), .init(id: 35, status: 1, name: "阿里云1", ipv4: "192.168.1.1", ipv6: "fa9d.fa9d.fa9d.fa9d", system: "MacOS 12", resources: self.resources), .init(id: 45, status: 1, name: "阿里云1", ipv4: "192.168.1.1", ipv6: "fa9d.fa9d.fa9d.fa9d", system: "MacOS 12", resources: self.resources), .init(id: 55, status: 1, name: "阿里云1", ipv4: "192.168.1.1", ipv6: "fa9d.fa9d.fa9d.fa9d", system: "MacOS 12", resources: self.resources), ] } func changeSelectedDevice(deviceId: Int?) { if let deviceId { if let device = self.devices.first(where: { $0.id == deviceId}) { self.selectedDevice = device } } } }