in sdk/communication/AzureCommunicationChat/Source/Signaling/Events/ChatEvent.swift [572:622]
init(from request: TrouterRequest) throws {
guard let requestJsonData = request.body.data(using: .utf8) else {
throw AzureError.client("Unable to convert request body to Data.")
}
let chatThreadCreatedPayload: ChatThreadCreatedPayload = try JSONDecoder()
.decode(ChatThreadCreatedPayload.self, from: requestJsonData)
guard let createdByJsonData = chatThreadCreatedPayload.createdBy.data(using: .utf8) else {
throw AzureError.client("Unable to convert payload createdBy to Data.")
}
let createdByPayload: ChatParticipantPayload = try JSONDecoder()
.decode(ChatParticipantPayload.self, from: createdByJsonData)
let createdBy =
SignalingChatParticipant(
id: createCommunicationIdentifier(fromRawId: createdByPayload.participantId),
displayName: createdByPayload.displayName
)
guard let membersJsonData = chatThreadCreatedPayload.members.data(using: .utf8) else {
throw AzureError.client("Unable to convert payload members to Data.")
}
let membersPayload: [ChatParticipantPayload] = try JSONDecoder()
.decode([ChatParticipantPayload].self, from: membersJsonData)
let participants: [SignalingChatParticipant] = membersPayload
.map { (memberPayload: ChatParticipantPayload) -> SignalingChatParticipant in
SignalingChatParticipant(
id: createCommunicationIdentifier(fromRawId: memberPayload.participantId),
displayName: memberPayload.displayName
)
}
guard let propertiesJsonData = chatThreadCreatedPayload.properties.data(using: .utf8) else {
throw AzureError.client("Unable to convert payload properties to Data.")
}
let propertiesPayload: ChatThreadPropertiesPayload = try JSONDecoder()
.decode(ChatThreadPropertiesPayload.self, from: propertiesJsonData)
let properties = SignalingChatThreadProperties(topic: propertiesPayload.topic)
self.createdOn = Iso8601Date(string: chatThreadCreatedPayload.createTime)
self.properties = properties
self.participants = participants
self.createdBy = createdBy
super.init(
threadId: chatThreadCreatedPayload.threadId,
version: chatThreadCreatedPayload.version
)
}