func handle()

in AzureCommunicationUI/sdk/AzureCommunicationUIChat/Sources/Service/Chat/ChatSDKEventsHandler.swift [32:111]


    func handle(response: TrouterEvent) {
        var eventModel: ChatEventModel?
        switch response {
        case .realTimeNotificationConnected:
            logger.info("Received a RealTimeNotificationConnected event")
            eventModel = ChatEventModel(
                eventType: .realTimeNotificationConnected)
        case .realTimeNotificationDisconnected:
            logger.info("Received a RealTimeNotificationDisconnected event")
            eventModel = ChatEventModel(
                eventType: .realTimeNotificationDisconnected)
        case let .chatMessageReceivedEvent(event):
            eventModel = ChatEventModel(
                eventType: .chatMessageReceived,
                infoModel: event.toChatMessageInfoModel(localUserId: localUserId.rawId),
                threadId: event.threadId)
        case let .chatMessageEdited(event):
            eventModel = ChatEventModel(
                eventType: .chatMessageEdited,
                infoModel: event.toChatMessageInfoModel(localUserId: localUserId.rawId),
                threadId: event.threadId)
        case let .chatMessageDeleted(event):
            eventModel = ChatEventModel(
                eventType: .chatMessageDeleted,
                infoModel: event.toChatMessageInfoModel(localUserId: localUserId.rawId),
                threadId: event.threadId)
        case let .typingIndicatorReceived(event):
            guard event.threadId == self.threadId,
                  let userEventTimestamp = event.toUserEventTimestampModel(),
                    userEventTimestamp.id != localUserId.stringValue else {
                return
            }
            eventModel = ChatEventModel(eventType: .typingIndicatorReceived,
                                        infoModel: userEventTimestamp,
                                        threadId: event.threadId)
        case let .readReceiptReceived(event):
            eventModel = ChatEventModel(eventType: .readReceiptReceived,
                                        infoModel: event.toReadReceiptInfoModel(),
                                        threadId: event.threadId)
        case let .chatThreadDeleted(event):
            eventModel = ChatEventModel(
                eventType: .chatThreadDeleted,
                infoModel: event.toChatThreadInfoModel(),
                threadId: event.threadId)
        case let .chatThreadPropertiesUpdated(event):
            eventModel = ChatEventModel(
                eventType: .chatThreadPropertiesUpdated,
                infoModel: event.toChatThreadInfoModel(),
                threadId: event.threadId)
        case let .participantsAdded(event):
            guard let participants = event.participantsAdded else {
                return
            }
            eventModel = ChatEventModel(
                eventType: .participantsAdded,
                infoModel: event.toParticipantsInfo(participantsAdded: participants,
                                                    localParticipantId: localUserId.rawId),
                threadId: event.threadId)
        case let .participantsRemoved(event):
            guard let participants = event.participantsRemoved else {
                return
            }
            eventModel = ChatEventModel(
                eventType: .participantsRemoved,
                infoModel: event.toParticipantsInfo(participantsRemoved: participants,
                                                    localParticipantId: localUserId.rawId),
                threadId: event.threadId)
        default:
            logger.info("Event received will not handled \(response)")
            return
        }

        guard let chatEventModel = eventModel,
              isChatClientEvent(chatEventModel) ||
               isLocalChatThread(chatEventModel)
        else {
            return
        }
        chatEventSubject.send(chatEventModel)
    }