🐛 Fixed stupid app state updated twice
This commit is contained in:
@@ -14,6 +14,7 @@ import Combine
|
||||
class WatchConnectivityService: NSObject, WCSessionDelegate, ObservableObject {
|
||||
@Published var token: String?
|
||||
@Published var serverUrl: String?
|
||||
@Published var isFetched: Bool?
|
||||
|
||||
private let session: WCSession
|
||||
private let userDefaults = UserDefaults.standard
|
||||
@@ -30,6 +31,7 @@ class WatchConnectivityService: NSObject, WCSessionDelegate, ObservableObject {
|
||||
// Load cached data
|
||||
self.token = userDefaults.string(forKey: tokenKey)
|
||||
self.serverUrl = userDefaults.string(forKey: serverUrlKey)
|
||||
self.isFetched = false
|
||||
}
|
||||
|
||||
func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) {
|
||||
@@ -58,7 +60,13 @@ class WatchConnectivityService: NSObject, WCSessionDelegate, ObservableObject {
|
||||
}
|
||||
|
||||
func requestDataFromPhone() {
|
||||
if self.isFetched == true {
|
||||
print("[watchOS] Skipped fetch from phone due to tried.")
|
||||
return
|
||||
}
|
||||
|
||||
guard session.isReachable else {
|
||||
self.isFetched = true
|
||||
print("[watchOS] Phone is not reachable")
|
||||
return
|
||||
}
|
||||
@@ -68,6 +76,7 @@ class WatchConnectivityService: NSObject, WCSessionDelegate, ObservableObject {
|
||||
guard let self = self else { return }
|
||||
print("[watchOS] Received reply: \(response)")
|
||||
DispatchQueue.main.async {
|
||||
self.isFetched = true
|
||||
if let token = response["token"] as? String {
|
||||
self.token = token
|
||||
self.userDefaults.set(token, forKey: self.tokenKey)
|
||||
|
||||
Reference in New Issue
Block a user