in sdk/communication/AzureCommunicationChat/Source/Signaling/Events/ChatEvent.swift [874:918]
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 participantsRemovedPayload: ParticipantsRemovedPayload = try JSONDecoder()
.decode(ParticipantsRemovedPayload.self, from: requestJsonData)
guard let removedByJsonData = participantsRemovedPayload.removedBy.data(using: .utf8) else {
throw AzureError.client("Unable to convert payload removedBy to Data.")
}
let removedByPayload: ChatParticipantPayload = try JSONDecoder()
.decode(ChatParticipantPayload.self, from: removedByJsonData)
let removedBy = SignalingChatParticipant(
id: createCommunicationIdentifier(fromRawId: removedByPayload.participantId),
displayName: removedByPayload.displayName
)
guard let participantsJsonData = participantsRemovedPayload.participantsRemoved.data(using: .utf8) else {
throw AzureError.client("Unable to convert payload participantsRemoved to Data.")
}
let participantsPayload: [ChatParticipantPayload] = try JSONDecoder()
.decode([ChatParticipantPayload].self, from: participantsJsonData)
let participants: [SignalingChatParticipant] = participantsPayload
.map { (memberPayload: ChatParticipantPayload) -> SignalingChatParticipant in
SignalingChatParticipant(
id: createCommunicationIdentifier(fromRawId: memberPayload.participantId),
displayName: memberPayload.displayName,
shareHistoryTime: Iso8601Date(
string: TrouterEventUtil
.toIso8601Date(unixTime: memberPayload.shareHistoryTime)
)
)
}
self.removedOn = Iso8601Date(string: participantsRemovedPayload.time)
self.participantsRemoved = participants
self.removedBy = removedBy
super.init(
threadId: participantsRemovedPayload.threadId,
version: participantsRemovedPayload.version
)
}