request method

  1. @override
Future request({
  1. required String chainId,
  2. required SessionRequestParams request,
})
override

Implementation

@override
Future<dynamic> request({
  required String chainId,
  required SessionRequestParams request,
}) async {
  await _checkInstalled();
  _core.logger.d(
    '[$runtimeType] ${request.method} ${jsonEncode(request.params)}',
  );
  _requestCompleter = Completer<dynamic>();

  try {
    late final Uri requestUri;
    switch (request.method) {
      case 'solana_signMessage':
        requestUri = _phantomHelper.buildSignMessageUri(
          message: request.params['message'],
        );
      case 'solana_signTransaction':
        requestUri = _phantomHelper.buildSignTransactionUri(
          transaction: request.params['transaction'],
        );
      case 'solana_signAllTransactions':
        requestUri = _phantomHelper.buildUriSignAllTransactions(
          transactions: request.params['transactions'],
        );
      case 'solana_signAndSendTransaction':
        requestUri = _phantomHelper.buildSignAndSendTransactionUri(
          transaction: request.params['transaction'],
        );
      default:
        throw ThirdPartyWalletException('${request.method} unimplemented');
    }

    _core.logger.d('[$runtimeType] request  $requestUri');
    await ReownCoreUtils.openURL(requestUri.toString());
  } catch (e, s) {
    final errorMessage = '${walletMetadata.metadata.name} request error';
    _core.logger.e('[$runtimeType] $errorMessage', error: e, stackTrace: s);
    onPhantomError.broadcast(PhantomErrorEvent(-1, errorMessage));
    throw ThirdPartyWalletException(errorMessage, e, s);
  }

  return _requestCompleter.future;
}