Skip to content

Commit fa11de7

Browse files
committed
ObservableWebSocketClientError -> CodableError
1 parent f82c8d5 commit fa11de7

File tree

5 files changed

+19
-17
lines changed

5 files changed

+19
-17
lines changed

Sources/ObservableWebSocketClient/Extensions/ObservableWebSocketClient+Codable.swift

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
//
77

88
import Foundation
9+
import Toolbox
910

1011
/// Required for encoding/decoding an observable object class. Refer to:
1112
/// https://www.hackingwithswift.com/books/ios-swiftui/encoding-an-observableobject-class
@@ -14,7 +15,7 @@ extension ObservableWebSocketClient {
1415
case id
1516
case websocketURL
1617
case message
17-
case error
18+
case codableError
1819
}
1920

2021
// MARK: - Encode
@@ -24,7 +25,7 @@ extension ObservableWebSocketClient {
2425
try container.encode(id, forKey: .id)
2526
try container.encode(websocketURL, forKey: .websocketURL)
2627
try container.encodeIfPresent(codableMessage, forKey: .message)
27-
try container.encodeIfPresent(error, forKey: .error)
28+
try container.encodeIfPresent(codableError, forKey: .codableError)
2829
}
2930

3031
// MARK: - Decode
@@ -34,7 +35,7 @@ extension ObservableWebSocketClient {
3435
let id = try container.decode(UUID.self, forKey: .id)
3536
let websocketURL = try container.decode(URL.self, forKey: .websocketURL)
3637
let message = try container.decodeIfPresent(CodableWebSocketMessage.self, forKey: .message)
37-
let error = try container.decodeIfPresent(ObservableWebSocketClientError.self, forKey: .error)
38-
self.init(id: id, websocketURL: websocketURL, message: message, error: error)
38+
let codableError = try container.decodeIfPresent(CodableError.self, forKey: .codableError)
39+
self.init(id: id, websocketURL: websocketURL, message: message, codableError: codableError)
3940
}
4041
}

Sources/ObservableWebSocketClient/Extensions/ObservableWebSocketClient+Equatable.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,6 @@ extension ObservableWebSocketClient {
1414
lhs.websocketURL == rhs.websocketURL &&
1515
lhs.isConnected == rhs.isConnected &&
1616
lhs.codableMessage == rhs.codableMessage &&
17-
lhs.error == rhs.error
17+
lhs.codableError == rhs.codableError
1818
}
1919
}

Sources/ObservableWebSocketClient/Extensions/ObservableWebSocketClient+Observation.swift

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,11 @@ extension ObservableWebSocketClient {
2323

2424
// MARK: Errors
2525

26-
service.$error.sink { [weak self] error in
27-
if let error {
26+
service.$codableError.sink { [weak self] codableError in
27+
if let codableError {
28+
self?.pingTimer?.invalidate()
2829
self?.isConnected = false
29-
self?.error = error
30+
self?.codableError = codableError
3031
}
3132
}
3233
.store(in: &cancellables)

Sources/ObservableWebSocketClient/Interface/ObservableWebSocketClient.swift

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import Combine
99
import Foundation
10+
import Toolbox
1011

1112
/// Establishes a WebSocket connection using the given `websocketURL`.
1213
/// Publishes received messages and errors.
@@ -16,7 +17,7 @@ public final class ObservableWebSocketClient: Identifiable, Equatable, Codable,
1617
@Published public var codableMessage: CodableWebSocketMessage?
1718

1819
/// Publishes any error that may occur.
19-
@Published public var error: ObservableWebSocketClientError?
20+
@Published public var codableError: CodableError?
2021

2122
/// Publishes whether the WebSocket is still valid/alive.
2223
@Published public var isConnected: Bool = false
@@ -46,7 +47,7 @@ public final class ObservableWebSocketClient: Identifiable, Equatable, Codable,
4647
/// wss://endpoint.com
4748
/// ```
4849
/// - message: Optional `CodableWebSocketMessage`. Useful for mocking the instance's state.
49-
/// - error: Optional `ObservableWebSocketClientError`. Useful for mocking the instance's state.
50+
/// - error: Optional `CodableError`. Useful for mocking the instance's state.
5051
/// - pingTimerInterval: The value passed in (`TimeInterval`) will cause a timer to
5152
/// continuously send ping-type messages to the WS server, keeping the connection alive.
5253
/// - pingMessage: The ping-type `String` message.
@@ -74,14 +75,14 @@ public final class ObservableWebSocketClient: Identifiable, Equatable, Codable,
7475
public init(id: UUID = .init(),
7576
websocketURL: URL,
7677
message: CodableWebSocketMessage? = nil,
77-
error: ObservableWebSocketClientError? = nil,
78+
codableError: CodableError? = nil,
7879
pingTimerInterval: TimeInterval? = nil,
7980
pingMessage: String? = nil,
8081
pingMessageWithGeneratedId: ((String) -> String)? = nil) {
8182
self.id = id
8283
self.websocketURL = websocketURL
8384
self.codableMessage = message
84-
self.error = error
85+
self.codableError = codableError
8586
self.pingTimerInterval = pingTimerInterval
8687
self.pingMessage = pingMessage
8788
self.pingMessageWithGeneratedId = pingMessageWithGeneratedId

Sources/ObservableWebSocketClient/Network/ObservableWebSocketService.swift

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,13 @@
66
//
77

88
import Foundation
9+
import Toolbox
910

1011
public final class ObservableWebSocketService: ObservableObject {
1112

1213
@Published public var message: URLSessionWebSocketTask.Message?
1314

14-
@Published public var error: ObservableWebSocketClientError?
15+
@Published public var codableError: CodableError?
1516

1617
public var session = URLSession(configuration: .default)
1718

@@ -37,8 +38,7 @@ public extension ObservableWebSocketService {
3738
webSocketTask?.send(wsMessage) { error in
3839
if let error {
3940
Task { @MainActor in
40-
let codableError = CodableError(error)
41-
self.error = .sendingMessage(codableError)
41+
self.codableError = .init(error)
4242
}
4343
}
4444
}
@@ -68,8 +68,7 @@ private extension ObservableWebSocketService {
6868
self.receiveMessage()
6969

7070
case .failure(let error):
71-
let codableError = CodableError(error)
72-
self.error = .receivingMessage(codableError)
71+
self.codableError = .init(error)
7372
}
7473
}
7574
}

0 commit comments

Comments
 (0)