in AzureCommunicationUI/sdk/AzureCommunicationUIChat/Sources/Redux/Middleware/ChatServiceEventHandler.swift [23:70]
func subscription(dispatch: @escaping ActionDispatch) {
logger.debug("Subscribe to chat service subjects")
chatService.chatEventSubject
.sink { [weak self] chatEvent in
let eventType = chatEvent.eventType
let infoModel = chatEvent.infoModel
guard let self = self else {
return
}
switch (eventType, infoModel) {
case (.realTimeNotificationConnected, _):
self.handleRealTimeNotificationConnected(dispatch: dispatch)
case (.realTimeNotificationDisconnected, _):
self.handleRealTimeNotificationDisconnected(dispatch: dispatch)
case (.chatMessageReceived,
let chatMessage as ChatMessageInfoModel):
self.handleChatMessageReceived(dispatch: dispatch, chatMessage: chatMessage)
case (.chatMessageEdited,
let chatMessage as ChatMessageInfoModel):
self.handleChatMessageEdited(dispatch: dispatch, chatMessage: chatMessage)
case (.chatMessageDeleted,
let chatMessage as ChatMessageInfoModel):
self.handleChatMessageDeleted(dispatch: dispatch, chatMessage: chatMessage)
case (.typingIndicatorReceived,
let userEventTimestamp as UserEventTimestampModel):
self.handleTypingIndicatorReceived(dispatch: dispatch, userEventTimestamp: userEventTimestamp)
case (.readReceiptReceived,
let readReceiptInfo as ReadReceiptInfoModel):
self.handleReadReceiptReceived(dispatch: dispatch, readReceiptInfo: readReceiptInfo)
case (.chatThreadDeleted,
let chatThreadInfo as ChatThreadInfoModel):
self.handleChatThreadDeleted(dispatch: dispatch, threadInfo: chatThreadInfo)
case (.chatThreadPropertiesUpdated,
let chatThreadInfo as ChatThreadInfoModel):
self.handleChatThreadPropertiesUpdated(dispatch: dispatch, threadInfo: chatThreadInfo)
case (.participantsAdded,
let participantsInfo as ParticipantsInfoModel):
self.handleParticipantsAdded(dispatch: dispatch, participantsInfo: participantsInfo)
case (.participantsRemoved,
let participantsInfo as ParticipantsInfoModel):
self.handleParticipantsRemoved(dispatch: dispatch, participantsInfo: participantsInfo)
default:
self.logger.warning("ChatServiceEventHandler subscription switch: default case")
}
}.store(in: cancelBag)
}