getProvisioningStatusStream method

  1. @override
Stream<ESPProvisionStatus> getProvisioningStatusStream(
  1. String deviceId
)
override

Get provisioning status stream

Implementation

@override
Stream<ESPProvisionStatus> getProvisioningStatusStream(String deviceId) {
  if (!_provisioningControllers.containsKey(deviceId)) {
    _provisioningControllers[deviceId] =
        StreamController<ESPProvisionStatus>.broadcast();

    provisioningEventChannel
        .receiveBroadcastStream(deviceId)
        .listen(
          (event) {
            if (event is String) {
              final status = ESPProvisionStatus.values.firstWhere(
                (e) => e.name == event,
                orElse: () => ESPProvisionStatus.failed,
              );
              _provisioningControllers[deviceId]?.add(status);
            }
          },
          onError: (error) {
            _provisioningControllers[deviceId]?.addError(error);
          },
        );
  }

  return _provisioningControllers[deviceId]!.stream;
}