-
Notifications
You must be signed in to change notification settings - Fork 26
Expand file tree
/
Copy pathIDXMessage.swift
More file actions
77 lines (66 loc) · 2.77 KB
/
Copy pathIDXMessage.swift
File metadata and controls
77 lines (66 loc) · 2.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
//
// Copyright (c) 2021-Present, Okta, Inc. and/or its affiliates. All rights reserved.
// The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
//
// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//
// See the License for the specific language governing permissions and limitations under the License.
//
import Foundation
#if !COCOAPODS
import CommonSupport
#endif
#if !COCOAPODS
import CommonSupport
#endif
extension Response {
/// Represents messages sent from the server to indicate error or warning conditions related to responses or form values.
public final class Message: Sendable, Equatable, Hashable {
/// Enumeration describing the type of message.
public enum Severity: Sendable, Equatable, Hashable {
case error
case info
case unknown
}
/// The type of message received from the server
public let type: Severity
/// A localization key representing this message.
///
/// This allows the text represented by this message to be customized or localized as needed.
public let localizationKey: String?
/// The default text for this message.
public let message: String
/// The field where this error occurred, or `nil` if this message is not scoped to a particular field.
public internal(set) var field: Remediation.Form.Field? {
get { lock.withLock { _field } }
set { lock.withLock { _field = newValue } }
}
@_documentation(visibility: internal)
public static func == (lhs: Response.Message, rhs: Response.Message) -> Bool {
lhs.type == rhs.type &&
lhs.localizationKey == rhs.localizationKey &&
lhs.message == rhs.message &&
lhs.field === rhs.field
}
@_documentation(visibility: internal)
public func hash(into hasher: inout Hasher) {
hasher.combine(type)
hasher.combine(localizationKey)
hasher.combine(message)
hasher.combine(field?.name)
}
nonisolated(unsafe) private weak var _field: Remediation.Form.Field?
private let lock = Lock()
internal init(type: String,
localizationKey: String?,
message: String)
{
self.type = Severity(string: type)
self.localizationKey = localizationKey
self.message = message
}
}
}