import Foundation enum LinkState: String { case unknown case ok case nasDown case vpnDown var title: String { switch self { case .unknown: return "Проверяю…" case .ok: return "NAS доступен" case .nasDown: return "VPN жив, NAS не отвечает" case .vpnDown: return "Офисный VPN не поднят" } } var notificationBody: String { switch self { case .unknown: return "" case .ok: return "Офисный NAS снова доступен" case .nasDown: return "Туннель поднят, но NAS не отвечает на 445" case .vpnDown: return "Офисный VPN отвалился" } } /// Shown next to the menu bar icon. Empty when healthy — a permanent label /// would be ignored within a day, which is the whole reason it is only /// drawn when something is actually wrong. var badge: String { switch self { case .unknown, .ok: return "" case .nasDown: return "NAS" case .vpnDown: return "VPN" } } var symbolName: String { switch self { case .unknown: return "externaldrive.badge.questionmark" case .ok: return "externaldrive.connected.to.line.below" case .nasDown: return "externaldrive.badge.exclamationmark" case .vpnDown: return "externaldrive.badge.xmark" } } var isTunnelUp: Bool { self == .ok || self == .nasDown } }