abe519dae7
* Add macOS support * Update README * Update to v0.2.0 * Document breaking changes * Delete widget tests
61 lines
1.6 KiB
Swift
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
|
|
}
|
|
}
|
|
|
|
|