init()

in sdk/communication/AzureCommunicationChat/Source/Signaling/Events/ChatEvent.swift [791:836]


    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 participantsAddedPayload: ParticipantsAddedPayload = try JSONDecoder()
            .decode(ParticipantsAddedPayload.self, from: requestJsonData)

        guard let addeddByJsonData = participantsAddedPayload.addedBy.data(using: .utf8) else {
            throw AzureError.client("Unable to convert payload addedBy to Data.")
        }

        let addedByPayload: ChatParticipantPayload = try JSONDecoder()
            .decode(ChatParticipantPayload.self, from: addeddByJsonData)
        let addedBy = SignalingChatParticipant(
            id: createCommunicationIdentifier(fromRawId: addedByPayload.participantId),
            displayName: addedByPayload.displayName
        )

        guard let participantsJsonData = participantsAddedPayload.participantsAdded.data(using: .utf8) else {
            throw AzureError.client("Unable to convert payload participantsAdded 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.addedOn = Iso8601Date(string: participantsAddedPayload.time)
        self.participantsAdded = participants
        self.addedBy = addedBy
        super.init(
            threadId: participantsAddedPayload.threadId,
            version: participantsAddedPayload.version
        )
    }