sendResult method
Future
sendResult(
- int id,
- String topic,
- String method,
- dynamic result, {
- EncodeOptions? encodeOptions,
- String? appLink,
- TVFData? tvf,
override
Implementation
@override
Future<dynamic> sendResult(
int id,
String topic,
String method,
dynamic result, {
EncodeOptions? encodeOptions,
String? appLink,
TVFData? tvf,
}) async {
final payload = JsonRpcUtils.formatJsonRpcResponse<dynamic>(
id,
result,
);
final resultId = payload['id'] as int;
final isLinkMode = (appLink ?? '').isNotEmpty;
final String? message = await core.crypto.encode(
topic,
payload,
options: isLinkMode
? EncodeOptions(type: EncodeOptions.TYPE_2)
: encodeOptions,
);
if (message == null) {
return;
}
if (isLinkMode) {
final redirectURL = ReownCoreUtils.getLinkModeURL(
appLink!,
topic,
message,
);
await ReownCoreUtils.openURL(redirectURL);
// Send Event through Events SDK
core.events.recordEvent(LinkModeResponseEvent(
direction: 'sent',
correlationId: resultId,
method: method,
));
core.logger.d(
'[$runtimeType] sendResult linkMode ($appLink), '
'id: $id topic: $topic, method: $method, result: $result',
);
} else {
final opts = MethodConstants.RPC_OPTS[method]!['res']!;
//
await core.relayClient.publish(
topic: topic,
message: message,
options: PublishOptions(
ttl: opts.ttl,
tag: opts.tag,
correlationId: resultId,
// tvf data is sent only on tvfMethods methods
tvf: _shouldSendTVF(opts.tag) ? tvf?.toJson(includeAll: true) : null,
),
);
core.logger.d(
'[$runtimeType] sendResult relayClient, '
'id: $id topic: $topic, method: $method, result: $result',
);
}
}