90 lines
3.3 KiB
Swift
90 lines
3.3 KiB
Swift
//
|
|
// 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: Equatable, Hashable {
|
|
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 = .connected
|
|
var model: NetworkModel = .init(name: "123@abc.com的网络")
|
|
|
|
var showModel: ShowMode = .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: "阿里云1", ipv4: "192.168.1.1", ipv6: "fa9d.fa9d.fa9d.fa9d", system: "MacOS 12", resources: self.resources),
|
|
.init(id: 2, status: 1, name: "阿里云1", ipv4: "192.168.1.1", ipv6: "fa9d.fa9d.fa9d.fa9d", system: "MacOS 12", resources: self.resources),
|
|
.init(id: 3, status: 1, name: "阿里云1", ipv4: "192.168.1.1", 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),
|
|
]
|
|
}
|
|
|
|
}
|