feat(ios): files sending
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user