Files
nearby_service/darwin/Classes/Models/NearbyMessage.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

61 lines
1.6 KiB
Swift

//
// NearbyMessage.swift
// nearby_service
//
// Created by Kseniia Nikitina on 4/2/24.
//
import Foundation
import MultipeerConnectivity
class NearbyMessage {
init(content: NearbyMessageContent, senderName: String, senderPeerID: MCPeerID) {
self.content = content
self.senderName = senderName
self.senderPeerID = senderPeerID
}
let content: NearbyMessageContent
let senderPeerID: MCPeerID
let senderName: String
static func fromUserInfo(userInfo: NearbyUserInfo)-> NearbyMessage? {
if let jsonContent = userInfo.dictionary["content"] as? [String : Any],
let content = NearbyMessageContent.typedFromJson(json: jsonContent),
let name = userInfo.dictionary["name"] as? String {
return NearbyMessage(
content: content,
senderName: name,
senderPeerID: userInfo.peerID
)
}
return nil
}
func toDictionary() -> [String: Any] {
return [
"name": senderName,
"content": content.toJson()
]
}
func toDartFormat() -> String? {
do {
let object = [
"sender": ["id": senderPeerID.displayName, "displayName": senderName],
"content": content.toJson()
]
let jsonData = try JSONSerialization.data(withJSONObject: object)
if let jsonString = String(data: jsonData, encoding: .utf8) {
return jsonString
}
} catch let error {
Logger.error(message: error.localizedDescription)
}
return nil
}
}