sendApproveSessionRequest method
Future
sendApproveSessionRequest(
- String sessionTopic,
- String pairingTopic, {
- required int responseId,
- required Map<
String, dynamic> sessionProposalResponse, - required Map<
String, dynamic> sessionSettlementRequest, - EncodeOptions? encodeOptions,
override
Sign 2.5 Substitutes wc_sessionPropose sendResult() and WC_SESSION_SETTLE sendRequest() during signEngine.approveSession()
Implementation
@override
Future<dynamic> sendApproveSessionRequest(
String sessionTopic,
String pairingTopic, {
required int responseId,
required Map<String, dynamic> sessionProposalResponse,
required Map<String, dynamic> sessionSettlementRequest,
EncodeOptions? encodeOptions,
}) async {
final pairingPayload = JsonRpcUtils.formatJsonRpcResponse<dynamic>(
responseId,
sessionProposalResponse,
);
final String? pairingResponseMessage = await core.crypto.encode(
pairingTopic,
pairingPayload,
options: encodeOptions,
);
if (pairingResponseMessage == null) {
return;
}
//
final sessionSettlePayload = JsonRpcUtils.formatJsonRpcRequest(
MethodConstants.WC_SESSION_SETTLE,
sessionSettlementRequest,
);
final String? sessionSettlementRequestMessage = await core.crypto.encode(
sessionTopic,
sessionSettlePayload,
options: encodeOptions,
);
if (sessionSettlementRequestMessage == null) {
return;
}
final payload = {
'sessionTopic': sessionTopic,
'pairingTopic': pairingTopic,
'sessionProposalResponse': pairingResponseMessage,
'sessionSettlementRequest': sessionSettlementRequestMessage,
};
// ttl and tag are not required on Sign 2.5 methods, it's assigned relay-side
final options = PublishOptions(
correlationId: responseId,
publishMethod: RelayClient.WC_APPROVE_SESSION,
);
await core.relayClient.publishPayload(
payload: payload,
options: options,
);
core.logger.d(
'[$runtimeType] sendApproveSessionRequest relayClient, '
'payload: ${jsonEncode(payload)}, options: ${jsonEncode(options.toJson())}',
);
}