73 lines
2.2 KiB
Swift
73 lines
2.2 KiB
Swift
//
|
|
// WatchSessionManager.swift
|
|
// watchapp Watch App
|
|
//
|
|
// Created by Alexander Harding on 8/2/23.
|
|
//
|
|
|
|
import Foundation
|
|
import WatchConnectivity
|
|
|
|
class WatchSessionManager: NSObject, ObservableObject {
|
|
static let shared = WatchSessionManager()
|
|
|
|
@Published var connectedInstance = "lemmy.world" // Variable to hold connected server hostname (optional)
|
|
@Published var authToken: String? // Variable to hold the auth token (optional)
|
|
|
|
var loggedIn: Bool {
|
|
get {
|
|
return authToken != nil && authToken != ""
|
|
}
|
|
}
|
|
|
|
private override init() {
|
|
super.init()
|
|
activateSession()
|
|
}
|
|
|
|
private func activateSession() {
|
|
if WCSession.isSupported() {
|
|
let session = WCSession.default
|
|
session.delegate = self
|
|
session.activate()
|
|
|
|
DispatchQueue.main.async() {
|
|
self.checkForUpdatesToApplicationContext()
|
|
}
|
|
}
|
|
}
|
|
|
|
// Check for updates to the application context
|
|
private func checkForUpdatesToApplicationContext() {
|
|
let applicationContext = WCSession.default.receivedApplicationContext
|
|
|
|
// Process the received application context data here
|
|
if let connectedInstance = applicationContext["connectedInstance"] as? String {
|
|
self.connectedInstance = connectedInstance
|
|
|
|
if let authToken = applicationContext["authToken"] as? String {
|
|
self.authToken = authToken
|
|
} else {
|
|
self.authToken = nil
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
extension WatchSessionManager: WCSessionDelegate {
|
|
func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) {
|
|
// Handle session activation completion if needed
|
|
}
|
|
|
|
func session(_ session: WCSession, didReceiveApplicationContext applicationContext: [String: Any]) {
|
|
DispatchQueue.main.async {
|
|
// Access the connectedInstance and authToken from the received application context
|
|
if let connectedInstance = applicationContext["connectedInstance"] {
|
|
self.connectedInstance = connectedInstance as! String
|
|
|
|
self.authToken = applicationContext["authToken"] as? String
|
|
}
|
|
}
|
|
}
|
|
}
|