DeviceManager constructor

DeviceManager(
  1. MethodChannel _channel
)

Implementation

DeviceManager(
  this._channel,
) {
  _channel.setMethodCallHandler((call) async {
    switch (call.method) {
      case 'sendScan':
        try {
          final decodedArguments = jsonDecode(call.arguments as String);
          final error = _mapError(decodedArguments);

          if (error != null) {
            _scanSubject.addError(error);
          } else {
            _scanSubject.sink.add(ScannedDevice.fromMap(decodedArguments));
          }
        } catch (exception, stackTrace) {
          Fimber.i(exception.toString(), stacktrace: stackTrace);
          _scanSubject.addError(UnknownException("$exception $stackTrace"));
        }
        break;
      case "sendPair":
        try {
          final decodedArguments = jsonDecode(call.arguments as String);
          final error = _mapError(decodedArguments);

          if (error != null) {
            _scanSubject.addError(error);
          } else {
            _pairSubject.sink
                .add((call.arguments as String).toLowerCase() == "true");
          }
        } catch (exception, stackTrace) {
          Fimber.i(exception.toString(), stacktrace: stackTrace);
          _scanSubject.addError(UnknownException("$exception $stackTrace"));
        }
        break;
      case "sendGlucoseMeterReading":
        try {
          final decodedArguments = jsonDecode(call.arguments as String);
          final error = _mapError(decodedArguments);

          if (error != null) {
            _scanSubject.addError(error);
          } else {
            _glucoseReadSubject.sink.add(
              decodedArguments
                  .map((e) => Platform.isIOS
                      ? _sampleFromSwiftJson(e)
                      : _sampleFromJson(e))
                  .whereType<QuantitySample>()
                  .toList(),
            );
          }
        } catch (exception, stackTrace) {
          Fimber.i(exception.toString(), stacktrace: stackTrace);
          _scanSubject.addError(UnknownException("$exception $stackTrace"));
        }
        break;
      case "sendBloodPressureReading":
        try {
          final decodedArguments = jsonDecode(call.arguments as String);
          final error = _mapError(decodedArguments);

          if (error != null) {
            _scanSubject.addError(error);
          } else {
            _bloodPressureSubject.sink.add(
              decodedArguments
                  .map((e) => Platform.isIOS
                      ? _bloodPressureSampleFromSwiftJson(e)
                      : _bloodPressureSampleFromJson(e))
                  .whereType<BloodPressureSample>()
                  .toList(),
            );
          }
        } catch (exception, stackTrace) {
          Fimber.i(exception.toString(), stacktrace: stackTrace);
          _scanSubject.addError(UnknownException("$exception $stackTrace"));
        }
        break;
      default:
        break;
    }
    return null;
  });
}