CAKE-356 | fixed fetching address from yat for specified crypto currency

OleksandrSobol committed Aug 27, 2021 at 22:56 UTC cbec9d506781f9bc126ccb573b30245d6a00c0f0
2 files changed +30 -4
lib/entities/parse_address_from_domain.dart
+1 -1
@@ -24,7 +24,7 @@ Future<ParsedAddress> parseAddressFromDomain(
24
25 if (domainParts.length <= 1 || domainParts.first.isEmpty || name.isEmpty) {
26 try {
27 - final address = await fetchYatAddress(domain);
27 + final address = await fetchYatAddress(domain, ticker);
28
29 if (address?.isEmpty ?? true) {
30 return ParsedAddress(address: domain);
lib/yat/yat_record.dart
+29 -3
@@ -2,8 +2,15 @@ import 'dart:convert';
2 import 'package:cake_wallet/yat/yat_exception.dart';
3 import 'package:http/http.dart';
4
5 -Future<String> fetchYatAddress(String emojiId) async {
5 +Future<String> fetchYatAddress(String emojiId, String ticker) async {
6 const _requestURL = 'https://a.y.at/emoji_id/';
7 + final classValue = '0x10';
8 + final tagValues = {'xmr' : ['01', '02'], 'btc' : ['03'], 'eth' : ['04']};
9 + final tagValue = tagValues[ticker];
10 +
11 + if (tagValue == null) {
12 + return '';
13 + }
14
15 final url = _requestURL + emojiId;
16 final response = await get(url);
@@ -13,6 +20,25 @@ Future<String> fetchYatAddress(String emojiId) async {
20 }
21
22 final responseJSON = json.decode(response.body) as Map<String, dynamic>;
16 - final yatAddress = responseJSON['result'][2]['data'] as String;
17 - return yatAddress;
23 + final result = responseJSON['result'] as List<dynamic>;
24 +
25 + if (result == null) {
26 + return '';
27 + }
28 +
29 + for (var value in tagValue) {
30 + for (int i = 0; i < result.length; i++) {
31 + final record = result[i] as Map<String, dynamic>;
32 + final tag = record['tag'] as String;
33 + if (tag?.contains(classValue + value) ?? false) {
34 + final yatAddress = record['data'] as String;
35 + return yatAddress;
36 + }
37 + }
38 + }
39 +
40 + return '';
41 +
42 + //final yatAddress = responseJSON['result'][2]['data'] as String;
43 + //return yatAddress;
44 }
\ No newline at end of file