rejectSessionAuthenticate method

  1. @override
Future<void> rejectSessionAuthenticate({
  1. required int id,
  2. required WalletConnectError reason,
})
override

Implementation

@override
Future<void> rejectSessionAuthenticate({
  required int id,
  required WalletConnectError reason,
}) async {
  _checkInitialized();

  final pendingRequests = getPendingSessionAuthRequests();

  if (!pendingRequests.containsKey(id)) {
    throw Errors.getInternalError(
      Errors.MISSING_OR_INVALID,
      context:
          'rejectSessionAuthenticate() Could not find pending auth request with id $id',
    );
  }

  final PendingSessionAuthRequest pendingRequest = pendingRequests[id]!;
  final receiverPublicKey = pendingRequest.requester.publicKey;
  final senderPublicKey = await core.crypto.generateKeyPair();
  final responseTopic = core.crypto.getUtils().hashKey(receiverPublicKey);

  final encodeOpts = EncodeOptions(
    type: EncodeOptions.TYPE_1,
    receiverPublicKey: receiverPublicKey,
    senderPublicKey: senderPublicKey,
  );

  final method = MethodConstants.WC_SESSION_AUTHENTICATE;
  final rpcOpts = MethodConstants.RPC_OPTS[method];
  await core.pairing.sendError(
    id,
    responseTopic,
    method,
    JsonRpcError(code: reason.code, message: reason.message),
    encodeOptions: encodeOpts,
    rpcOptions: rpcOpts?['reject'],
  );

  await sessionAuthRequests.delete(id.toString());
  await _deleteProposal(id);
}