119 lines
4.0 KiB
Swift
119 lines
4.0 KiB
Swift
|
import Foundation
|
||
|
import SwiftUI
|
||
|
import SFSafeSymbols
|
||
|
|
||
|
extension MessageResult {
|
||
|
|
||
|
var color: Color {
|
||
|
switch self {
|
||
|
|
||
|
// Initial state when not configured
|
||
|
case .noKeyAvailable:
|
||
|
return Color(red: 50/255, green: 50/255, blue: 50/255)
|
||
|
|
||
|
// All ready states
|
||
|
case .notChecked,
|
||
|
.messageAccepted,
|
||
|
.deviceAvailable:
|
||
|
return Color(red: 115/255, green: 140/255, blue: 90/255)
|
||
|
|
||
|
case .unlocked:
|
||
|
return Color(red: 65/255, green: 110/255, blue: 60/255)
|
||
|
|
||
|
// All implementation errors
|
||
|
case .textReceived,
|
||
|
.unexpectedSocketEvent,
|
||
|
.invalidMessageSizeFromDevice,
|
||
|
.invalidMessageSizeFromRemote,
|
||
|
.invalidMessageTypeFromDevice,
|
||
|
.invalidMessageTypeFromRemote,
|
||
|
.unknownMessageResultFromDevice,
|
||
|
.invalidUrlParameter,
|
||
|
.noOrInvalidBodyDataFromRemote,
|
||
|
.invalidMessageResultFromRemote,
|
||
|
.unexpectedUrlResponseType,
|
||
|
.unexpectedServerResponseCode,
|
||
|
.internalServerError,
|
||
|
.pathOnServerNotFound,
|
||
|
.missingOrInvalidAuthenticationHeaderFromRemote:
|
||
|
return Color(red: 30/255, green: 30/255, blue: 160/255)
|
||
|
|
||
|
// All security errors
|
||
|
case .invalidSignatureFromRemote,
|
||
|
.invalidServerChallengeFromDevice,
|
||
|
.invalidServerChallengeFromRemote,
|
||
|
.invalidClientChallengeFromDevice,
|
||
|
.invalidClientChallengeFromRemote,
|
||
|
.invalidSignatureFromDevice:
|
||
|
return Color(red: 160/255, green: 30/255, blue: 30/255)
|
||
|
|
||
|
// Connection errors
|
||
|
case .tooManyRequests,
|
||
|
.deviceTimedOut,
|
||
|
.deviceNotConnected,
|
||
|
.serviceBehindProxyUnavailable:
|
||
|
return Color(red: 150/255, green: 90/255, blue: 90/255)
|
||
|
|
||
|
// Configuration errors
|
||
|
case .serverUrlInvalid, .invalidServerAuthenticationFromRemote:
|
||
|
return Color(red: 100/255, green: 100/255, blue: 140/255)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
var symbol: SFSymbol {
|
||
|
switch self {
|
||
|
|
||
|
// Initial state when not configured
|
||
|
case .noKeyAvailable:
|
||
|
return .questionmarkKeyFilled // .keySlash in 5.0
|
||
|
|
||
|
// All ready states
|
||
|
case .notChecked,
|
||
|
.messageAccepted,
|
||
|
.deviceAvailable:
|
||
|
return .checkmark
|
||
|
|
||
|
case .unlocked:
|
||
|
return .lockOpen
|
||
|
|
||
|
// All implementation errors
|
||
|
case .textReceived,
|
||
|
.unexpectedSocketEvent,
|
||
|
.invalidMessageSizeFromDevice,
|
||
|
.invalidMessageSizeFromRemote,
|
||
|
.invalidMessageTypeFromDevice,
|
||
|
.invalidMessageTypeFromRemote,
|
||
|
.unknownMessageResultFromDevice,
|
||
|
.invalidUrlParameter,
|
||
|
.noOrInvalidBodyDataFromRemote,
|
||
|
.invalidMessageResultFromRemote,
|
||
|
.unexpectedUrlResponseType,
|
||
|
.unexpectedServerResponseCode,
|
||
|
.internalServerError,
|
||
|
.pathOnServerNotFound,
|
||
|
.missingOrInvalidAuthenticationHeaderFromRemote:
|
||
|
return .questionmarkDiamond
|
||
|
|
||
|
// All security errors
|
||
|
case .invalidSignatureFromRemote,
|
||
|
.invalidServerChallengeFromDevice,
|
||
|
.invalidServerChallengeFromRemote,
|
||
|
.invalidClientChallengeFromDevice,
|
||
|
.invalidClientChallengeFromRemote,
|
||
|
.invalidSignatureFromDevice:
|
||
|
return .lockTrianglebadgeExclamationmark
|
||
|
|
||
|
// Connection errors
|
||
|
case .tooManyRequests,
|
||
|
.deviceTimedOut,
|
||
|
.deviceNotConnected,
|
||
|
.serviceBehindProxyUnavailable:
|
||
|
return .antennaRadiowavesLeftAndRightSlash
|
||
|
|
||
|
// Configuration errors
|
||
|
case .serverUrlInvalid, .invalidServerAuthenticationFromRemote:
|
||
|
return .gearBadgeQuestionmark
|
||
|
}
|
||
|
}
|
||
|
}
|