func onCapabilitiesChanged()

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