in AzureCommunicationUI/sdk/AzureCommunicationUICalling/Sources/Redux/Middleware/CallingMiddlewareHandler.swift [598:629]
func onCapabilitiesChanged(event: CapabilitiesChangedEvent,
state: AppState,
dispatch: @escaping ActionDispatch) -> Task<Void, Never> {
Task {
guard state.callingState.status != .disconnected else {
return
}
do {
let capabilities = try await self.callingService.getCapabilities()
dispatch(.localUserAction(.setCapabilities(capabilities: capabilities)))
let anyLostCapability = event.changedCapabilities.contains(where: { capability in
(capability.type == .unmuteMicrophone && !capability.allowed) ||
(capability.type == .turnVideoOn && !capability.allowed) ||
(capability.type == .manageLobby && !capability.allowed) ||
(capability.type == .removeParticipant && !capability.allowed)
})
if anyLostCapability || !state.localUserState.currentCapabilitiesAreDefault {
var notificationType = ToastNotificationKind.someFeaturesGained
if anyLostCapability {
notificationType = ToastNotificationKind.someFeaturesLost
}
dispatch(.toastNotificationAction(.showNotification(kind: notificationType)))
}
} catch {
self.logger.error("Fetch capabilities Failed with error : \(error)")
}
}
}