⚡ Cache the data fetched from phone in watch
This commit is contained in:
@@ -16,6 +16,9 @@ class WatchConnectivityService: NSObject, WCSessionDelegate, ObservableObject {
|
|||||||
@Published var serverUrl: String?
|
@Published var serverUrl: String?
|
||||||
|
|
||||||
private let session: WCSession
|
private let session: WCSession
|
||||||
|
private let userDefaults = UserDefaults.standard
|
||||||
|
private let tokenKey = "token"
|
||||||
|
private let serverUrlKey = "serverUrl"
|
||||||
|
|
||||||
override init() {
|
override init() {
|
||||||
self.session = .default
|
self.session = .default
|
||||||
@@ -23,6 +26,10 @@ class WatchConnectivityService: NSObject, WCSessionDelegate, ObservableObject {
|
|||||||
print("[watchOS] Activating WCSession")
|
print("[watchOS] Activating WCSession")
|
||||||
self.session.delegate = self
|
self.session.delegate = self
|
||||||
self.session.activate()
|
self.session.activate()
|
||||||
|
|
||||||
|
// Load cached data
|
||||||
|
self.token = userDefaults.string(forKey: tokenKey)
|
||||||
|
self.serverUrl = userDefaults.string(forKey: serverUrlKey)
|
||||||
}
|
}
|
||||||
|
|
||||||
func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) {
|
func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) {
|
||||||
@@ -41,9 +48,11 @@ class WatchConnectivityService: NSObject, WCSessionDelegate, ObservableObject {
|
|||||||
DispatchQueue.main.async {
|
DispatchQueue.main.async {
|
||||||
if let token = message["token"] as? String {
|
if let token = message["token"] as? String {
|
||||||
self.token = token
|
self.token = token
|
||||||
|
self.userDefaults.set(token, forKey: self.tokenKey)
|
||||||
}
|
}
|
||||||
if let serverUrl = message["serverUrl"] as? String {
|
if let serverUrl = message["serverUrl"] as? String {
|
||||||
self.serverUrl = serverUrl
|
self.serverUrl = serverUrl
|
||||||
|
self.userDefaults.set(serverUrl, forKey: self.serverUrlKey)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -56,13 +65,16 @@ class WatchConnectivityService: NSObject, WCSessionDelegate, ObservableObject {
|
|||||||
|
|
||||||
print("[watchOS] Requesting data from phone")
|
print("[watchOS] Requesting data from phone")
|
||||||
session.sendMessage(["request": "data"]) { [weak self] response in
|
session.sendMessage(["request": "data"]) { [weak self] response in
|
||||||
|
guard let self = self else { return }
|
||||||
print("[watchOS] Received reply: \(response)")
|
print("[watchOS] Received reply: \(response)")
|
||||||
DispatchQueue.main.async {
|
DispatchQueue.main.async {
|
||||||
if let token = response["token"] as? String {
|
if let token = response["token"] as? String {
|
||||||
self?.token = token
|
self.token = token
|
||||||
|
self.userDefaults.set(token, forKey: self.tokenKey)
|
||||||
}
|
}
|
||||||
if let serverUrl = response["serverUrl"] as? String {
|
if let serverUrl = response["serverUrl"] as? String {
|
||||||
self?.serverUrl = serverUrl
|
self.serverUrl = serverUrl
|
||||||
|
self.userDefaults.set(serverUrl, forKey: self.serverUrlKey)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} errorHandler: { error in
|
} errorHandler: { error in
|
||||||
|
|||||||
Reference in New Issue
Block a user