pair method
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;
}