request method

  1. @override
Future request({
  1. int? requestId,
  2. required String topic,
  3. required String chainId,
  4. required SessionRequestParams request,
})
override

Implementation

@override
Future<dynamic> request({
  int? requestId,
  required String topic,
  required String chainId,
  required SessionRequestParams request,
}) async {
  _checkInitialized();
  await _isValidRequest(topic, chainId, request);

  final session = sessions.get(topic);
  final isLinkMode = _isLinkModeRequest(session);
  if (!isLinkMode) {
    _confirmOnlineStateOrThrow();
  }

  final sessionRequest = WcSessionRequestRequest(
    chainId: chainId,
    request: request,
  );

  final id = requestId ?? JsonRpcUtils.payloadId();
  final tvf = collectRequestTVF(id, sessionRequest);
  core.logger.d('[$runtimeType] _collect Request TVF, id: $id, $tvf');

  return await core.pairing.sendRequest(
    id: id,
    topic,
    MethodConstants.WC_SESSION_REQUEST,
    sessionRequest.toJson(),
    appLink: _getAppLinkIfEnabled(session?.peer.metadata),
    tvf: tvf,
  );
}