60 lines
1.9 KiB
Swift
60 lines
1.9 KiB
Swift
//
|
|
// NearbyMessageConverter.swift
|
|
// nearby_service
|
|
//
|
|
// Created by Kseniia Nikitina on 29/1/24.
|
|
//
|
|
|
|
import Foundation
|
|
import MultipeerConnectivity
|
|
|
|
class NearbyMessageConverter {
|
|
static func convert(userInfo: [AnyHashable : Any]?) -> String? {
|
|
if let data = getMessageData(userInfo: userInfo),
|
|
let peerID = getMessagePeerID(userInfo: userInfo) {
|
|
return createMessage(data: data, peerID: peerID)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
static private func getMessageData(userInfo: [AnyHashable : Any]?) -> [String: String]? {
|
|
do {
|
|
if let data = userInfo?["data"] as? Data,
|
|
let dictionary = try JSONSerialization.jsonObject(with: data, options: []) as? [String: String] {
|
|
return dictionary
|
|
}
|
|
} catch let error {
|
|
Logger.error(message: error.localizedDescription)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
static private func getMessagePeerID(userInfo: [AnyHashable:Any]?) -> MCPeerID? {
|
|
return userInfo?["from"] as? MCPeerID
|
|
|
|
}
|
|
|
|
static private func createMessage(data: [String: String], peerID: MCPeerID)-> String? {
|
|
do {
|
|
if let message = data["message"],
|
|
let name = data["name"] {
|
|
|
|
var result: String?
|
|
let jsonObject = [
|
|
"message": message,
|
|
"sender": ["id": peerID.displayName, "displayName": name],
|
|
] as [String : Any]
|
|
|
|
let jsonData = try JSONSerialization.data(withJSONObject: jsonObject)
|
|
if let jsonString = String(data: jsonData, encoding: .utf8) {
|
|
result = jsonString
|
|
}
|
|
return result
|
|
}
|
|
} catch let error {
|
|
Logger.error(message: error.localizedDescription)
|
|
}
|
|
return nil
|
|
}
|
|
}
|