mirror of
https://github.com/home-assistant/iOS.git
synced 2026-02-04 21:15:17 -06:00
63 lines
1.9 KiB
Swift
63 lines
1.9 KiB
Swift
import Foundation
|
|
import SFSafeSymbols
|
|
import Shared
|
|
|
|
final class ConnectionSecurityLevelBlockViewModel: ObservableObject {
|
|
enum Requirement {
|
|
case homeNetworkMissing
|
|
case notOnHomeNetwork
|
|
case locationPermission
|
|
|
|
var title: String {
|
|
switch self {
|
|
case .homeNetworkMissing:
|
|
return L10n.ConnectionSecurityLevelBlock.Requirement.HomeNetworkMissing.title
|
|
case .notOnHomeNetwork:
|
|
return L10n.ConnectionSecurityLevelBlock.Requirement.NotOnHomeNetwork.title
|
|
case .locationPermission:
|
|
return L10n.ConnectionSecurityLevelBlock.Requirement.LocationPermissionMissing.title
|
|
}
|
|
}
|
|
|
|
var systemSymbol: SFSymbol {
|
|
switch self {
|
|
case .homeNetworkMissing:
|
|
return .wifi
|
|
case .notOnHomeNetwork:
|
|
return .wifiSlash
|
|
case .locationPermission:
|
|
return .location
|
|
}
|
|
}
|
|
}
|
|
|
|
@Published var requirements: [Requirement] = []
|
|
|
|
private let server: Server
|
|
|
|
init(server: Server) {
|
|
self.server = server
|
|
}
|
|
|
|
func loadRequirements() {
|
|
requirements = []
|
|
|
|
// Check if home network is defined
|
|
if server.info.connection.internalSSIDs?.isEmpty ?? true,
|
|
server.info.connection.internalHardwareAddresses?.isEmpty ?? true {
|
|
requirements.append(.homeNetworkMissing)
|
|
} else {
|
|
// Check if user is on home network
|
|
if !server.info.connection.isOnInternalNetwork {
|
|
requirements.append(.notOnHomeNetwork)
|
|
}
|
|
}
|
|
|
|
// Check location permission
|
|
let currentPermission = Current.locationManager.currentPermissionState
|
|
if currentPermission != .authorizedAlways, currentPermission != .authorizedWhenInUse {
|
|
requirements.append(.locationPermission)
|
|
}
|
|
}
|
|
}
|