🐛 Fix some production issue for watchOS Solian
This commit is contained in:
@@ -15,6 +15,7 @@ class AppState: ObservableObject {
|
||||
@Published var token: String? = nil
|
||||
@Published var serverUrl: String? = nil
|
||||
@Published var isReady = false
|
||||
@Published var errorMessage: String? = nil
|
||||
|
||||
let networkService = NetworkService()
|
||||
private var wcService = WatchConnectivityService()
|
||||
@@ -22,13 +23,14 @@ class AppState: ObservableObject {
|
||||
private var hasAttemptedConnection = false
|
||||
|
||||
init() {
|
||||
wcService.$token.combineLatest(wcService.$serverUrl, wcService.$isFetched)
|
||||
wcService.$token.combineLatest(wcService.$serverUrl, wcService.$isFetched, wcService.$errorMessage)
|
||||
.receive(on: DispatchQueue.main)
|
||||
.sink { [weak self] (token: String?, serverUrl: String?, isFetched: Bool?) in
|
||||
.sink { [weak self] (token: String?, serverUrl: String?, isFetched: Bool?, errorMessage: String?) in
|
||||
guard let self = self else { return }
|
||||
|
||||
self.token = token
|
||||
self.serverUrl = serverUrl
|
||||
self.errorMessage = errorMessage
|
||||
|
||||
if let token = token, let serverUrl = serverUrl, !token.isEmpty, !serverUrl.isEmpty {
|
||||
self.isReady = true
|
||||
|
||||
@@ -15,6 +15,7 @@ class WatchConnectivityService: NSObject, WCSessionDelegate, ObservableObject {
|
||||
@Published var token: String?
|
||||
@Published var serverUrl: String?
|
||||
@Published var isFetched: Bool?
|
||||
@Published var errorMessage: String?
|
||||
|
||||
private let session: WCSession
|
||||
private let userDefaults = UserDefaults.standard
|
||||
@@ -37,6 +38,9 @@ class WatchConnectivityService: NSObject, WCSessionDelegate, ObservableObject {
|
||||
func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) {
|
||||
if let error = error {
|
||||
print("[watchOS] WCSession activation failed with error: \(error.localizedDescription)")
|
||||
DispatchQueue.main.async {
|
||||
self.errorMessage = "WCSession activation failed: \(error.localizedDescription)"
|
||||
}
|
||||
return
|
||||
}
|
||||
print("[watchOS] WCSession activated with state: \(activationState.rawValue)")
|
||||
@@ -67,7 +71,11 @@ class WatchConnectivityService: NSObject, WCSessionDelegate, ObservableObject {
|
||||
|
||||
guard session.isReachable else {
|
||||
self.isFetched = true
|
||||
print("[watchOS] Phone is not reachable")
|
||||
let errorMsg = "Phone is not reachable"
|
||||
print("[watchOS] \(errorMsg)")
|
||||
DispatchQueue.main.async {
|
||||
self.errorMessage = errorMsg
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
@@ -88,6 +96,9 @@ class WatchConnectivityService: NSObject, WCSessionDelegate, ObservableObject {
|
||||
}
|
||||
} errorHandler: { error in
|
||||
print("[watchOS] sendMessage failed with error: \(error.localizedDescription)")
|
||||
DispatchQueue.main.async {
|
||||
self.errorMessage = "Failed to get data from phone: \(error.localizedDescription)"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user