init()

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
        )
    }