iOS/Sources/App/WebView/Views/ConnectionSecurityLevelBlock/ConnectionSecurityLevelBlockViewModel.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)
}
}
}