pair method

  1. @override
Future<PairingInfo> pair({
  1. required Uri uri,
  2. bool activatePairing = false,
})
override

Implementation

@override
Future<PairingInfo> pair({
  required Uri uri,
  bool activatePairing = false,
}) async {
  _checkInitialized();

  // print(uri.queryParameters);
  final int expiry = WalletConnectUtils.calculateExpiry(
    WalletConnectConstants.FIVE_MINUTES,
  );
  final URIParseResult parsedUri = WalletConnectUtils.parseUri(uri);
  final String topic = parsedUri.topic;
  final Relay relay = parsedUri.relay;
  final String symKey = parsedUri.symKey;
  final PairingInfo pairing = PairingInfo(
    topic: topic,
    expiry: expiry,
    relay: relay,
    active: false,
  );

  try {
    JsonRpcUtils.validateMethods(
      parsedUri.methods,
      routerMapRequest.values.toList(),
    );
  } on WalletConnectError catch (e) {
    // Tell people that the pairing is invalid
    onPairingInvalid.broadcast(
      PairingInvalidEvent(
        message: e.message,
      ),
    );

    // Delete the pairing: "publish internally with reason"
    // await _deletePairing(
    //   topic,
    //   false,
    // );

    rethrow;
  }

  await pairings.set(topic, pairing);
  await core.crypto.setSymKey(symKey, overrideTopic: topic);
  await core.relayClient.subscribe(topic: topic);
  await core.expirer.set(topic, expiry);

  onPairingCreate.broadcast(
    PairingEvent(
      topic: topic,
    ),
  );

  if (activatePairing) {
    await activate(topic: topic);
  }

  return pairing;
}