init()

in sdk/communication/AzureCommunicationChat/Source/Signaling/Events/TrouterEvent.swift [53:103]


    init(chatEventId: ChatEventId, from trouterRequest: TrouterRequest?) throws {
        if chatEventId == ChatEventId.realTimeNotificationConnected {
            self = .realTimeNotificationConnected
            return
        }
        if chatEventId == ChatEventId.realTimeNotificationDisconnected {
            self = .realTimeNotificationDisconnected
            return
        }

        guard let request = trouterRequest else {
            throw AzureError.client("Unable to convert request body to Data.")
        }

        switch chatEventId {
        case .realTimeNotificationConnected:
            self = .realTimeNotificationConnected
        case .realTimeNotificationDisconnected:
            self = .realTimeNotificationDisconnected
        case .chatMessageReceived:
            let event = try ChatMessageReceivedEvent(from: request)
            self = .chatMessageReceivedEvent(event)
        case .typingIndicatorReceived:
            let event = try TypingIndicatorReceivedEvent(from: request)
            self = .typingIndicatorReceived(event)
        case .readReceiptReceived:
            let event = try ReadReceiptReceivedEvent(from: request)
            self = .readReceiptReceived(event)
        case .chatMessageEdited:
            let event = try ChatMessageEditedEvent(from: request)
            self = .chatMessageEdited(event)
        case .chatMessageDeleted:
            let event = try ChatMessageDeletedEvent(from: request)
            self = .chatMessageDeleted(event)
        case .chatThreadCreated:
            let event = try ChatThreadCreatedEvent(from: request)
            self = .chatThreadCreated(event)
        case .chatThreadPropertiesUpdated:
            let event = try ChatThreadPropertiesUpdatedEvent(from: request)
            self = .chatThreadPropertiesUpdated(event)
        case .chatThreadDeleted:
            let event = try ChatThreadDeletedEvent(from: request)
            self = .chatThreadDeleted(event)
        case .participantsAdded:
            let event = try ParticipantsAddedEvent(from: request)
            self = .participantsAdded(event)
        case .participantsRemoved:
            let event = try ParticipantsRemovedEvent(from: request)
            self = .participantsRemoved(event)
        }
    }