Files
nearby_service/darwin/Classes/Models/NearbyDevice.swift
T
Ben Hagen abe519dae7 Add macOS support (#23)
* Add macOS support

* Update README

* Update to v0.2.0

* Document breaking changes

* Delete widget tests
2025-05-13 16:24:58 +02:00

87 lines
2.3 KiB
Swift

import Foundation
import MultipeerConnectivity
class NearbyDevice : NSObject {
var name: String
var peerID: MCPeerID
var deviceType: String?
var os: String?
var osVersion: String?
var session: NearbySession?
init(
peerID: MCPeerID,
name:String,
deviceType:String? = nil,
os: String? = nil,
osVersion: String? = nil
) {
self.name=name
self.peerID = peerID
self.deviceType=deviceType
self.os=os
self.osVersion=osVersion
}
func createSession(for peerID: MCPeerID) -> NearbySession {
self.session = NearbySession.create(peerID: peerID)
return session!
}
func deleteSession() {
self.session = nil
}
}
extension NearbyDevice {
static func fromDictionary(for dictionary: [String: String]?, with peerID: MCPeerID) -> NearbyDevice {
let device = NearbyDevice(
peerID: peerID,
name:(dictionary?["displayName"] as String?) ?? peerID.displayName,
deviceType: dictionary?["deviceType"] as String?,
os: dictionary?["os"] as String?,
osVersion: dictionary?["osVersion"] as String?
)
return device
}
func toDictionary() -> [String: String] {
var deviceDict: [String: String] = [
"displayName": self.name,
"id": self.peerID.displayName,
]
if let os = self.os {
deviceDict["os"] = os
}
if let deviceType = self.deviceType {
deviceDict["deviceType"] = deviceType
}
if let osVersion = self.osVersion {
deviceDict["osVersion"] = osVersion
}
if let session = self.session {
deviceDict["state"] = String(session.state.rawValue)
} else {
deviceDict["state"] = String(0)
}
return deviceDict
}
func toDartFormat() -> String? {
var result: String?
do {
let jsonData = try JSONSerialization.data(withJSONObject: toDictionary())
if let jsonString = String(data: jsonData, encoding: .utf8) {
result = jsonString
}
} catch let error {
Logger.error(message: error.localizedDescription)
}
return result
}
}