value method

  1. @override
Future<double> value()
override

Implementation

@override
Future<double> value() async {
  final pairProvider = config.pairProvider;

  if (isValid && pairProvider != null) {
    final pipPrecision = state.pipPrecision;

    // FIXME: workaround,
    // we can't properly set null values on the calculator state.
    if (pipPrecision == null || pipPrecision == intMaxValue) {
      var pairMetadata = await pairProvider.metadata(
        '${state.baseCode}${state.counterCode}',
      );

      if (pairMetadata != null) {
        patchState(
          MatexBaseCoreState(pipPrecision: pairMetadata.pip.precision),
        );
      } else {
        patchState(MatexBaseCoreState(
          pipPrecision: MatexPairPipMetadata.defaultMetatada().precision,
        ));
      }
    }

    return pipDelta(defaultState: state).value().toDouble();
  }

  return 0;
}