prepareDetailed method

  1. @override
Future<PrepareDetailedResponseCompat> prepareDetailed({
  1. required String chainId,
  2. required String from,
  3. required CallCompat call,
  4. required Currency localCurrency,
})
override

Implementation

@override
Future<PrepareDetailedResponseCompat> prepareDetailed({
  required String chainId,
  required String from,
  required CallCompat call,
  required Currency localCurrency,
}) async {
  try {
    final response = await methodChannel.invokeMethod<dynamic>(
      'prepareDetailed',
      {
        'chainId': chainId,
        'from': from,
        'call': call.toJson(),
        'localCurrency': localCurrency.name,
      },
    );

    if (response.containsKey('available')) {
      final responseData = _handlePlatformResult(response['available']);
      return PrepareDetailedResponseCompat.success(
        value: PrepareDetailedResponseSuccessCompat.available(
          value: UiFieldsCompat.fromJson(
            responseData,
          ),
        ),
      );
    }
    if (response.containsKey('notRequired')) {
      final responseData = _handlePlatformResult(response['notRequired']);
      return PrepareDetailedResponseCompat.success(
        value: PrepareDetailedResponseSuccessCompat.notRequired(
          value: PrepareResponseNotRequiredCompat.fromJson(
            responseData,
          ),
        ),
      );
    }
    if ((response ?? {}).containsKey('error')) {
      final error = response!['error']!['error'];
      final reason = response!['error']?['reason'];
      return PrepareDetailedResponseCompat.error(
        value: PrepareResponseError(
          error: BridgingError.fromString(error),
          reason: reason ?? response['reason'] ?? '',
        ),
      );
    }
    throw PlatformException(
      code: 'prepareDetailed',
      message: 'unable to parse response',
    );
  } on PlatformException catch (e) {
    debugPrint('[$runtimeType] prepareDetailed $e');
    rethrow;
  } catch (e, s) {
    debugPrint('[$runtimeType] prepareDetailed $e');
    debugPrint(s.toString());
    rethrow;
  }
}