connectWithClient static method

Future<SignalingContract> connectWithClient({
  1. required Web3Client client,
  2. required EthereumAddress contractAddress,
  3. Credentials? credentials,
  4. int? chainId,
})

Connect to existing contract with pre-configured Web3Client

This method allows using an existing Web3Client instance, which is useful for connection pooling and management.

Implementation

static Future<SignalingContract> connectWithClient({
  required Web3Client client,
  required EthereumAddress contractAddress,
  Credentials? credentials,
  int? chainId,
}) async {
  final contract = DeployedContract(
    ContractAbi.fromJson(contractAbi, 'Signaling'),
    contractAddress,
  );

  // If chainId not provided, fetch from network
  int? resolvedChainId = chainId;
  if (resolvedChainId == null && credentials != null) {
    try {
      final chainIdBigInt = await client.getChainId();
      resolvedChainId = chainIdBigInt.toInt();
    } catch (e) {
      // Continue without chainId if unable to fetch
    }
  }

  return SignalingContract(
    client: client,
    contract: contract,
    credentials: credentials,
    chainId: resolvedChainId,
  );
}