From cbec9d506781f9bc126ccb573b30245d6a00c0f0 Mon Sep 17 00:00:00 2001 From: OleksandrSobol Date: Fri, 27 Aug 2021 22:56:21 +0300 Subject: [PATCH] CAKE-356 | fixed fetching address from yat for specified crypto currency --- lib/entities/parse_address_from_domain.dart | 2 +- lib/yat/yat_record.dart | 32 +++++++++++++++++++-- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/lib/entities/parse_address_from_domain.dart b/lib/entities/parse_address_from_domain.dart index 438cd9dd..f30cb1f5 100644 --- a/lib/entities/parse_address_from_domain.dart +++ b/lib/entities/parse_address_from_domain.dart @@ -24,7 +24,7 @@ Future parseAddressFromDomain( if (domainParts.length <= 1 || domainParts.first.isEmpty || name.isEmpty) { try { - final address = await fetchYatAddress(domain); + final address = await fetchYatAddress(domain, ticker); if (address?.isEmpty ?? true) { return ParsedAddress(address: domain); diff --git a/lib/yat/yat_record.dart b/lib/yat/yat_record.dart index 80d9e234..3636987d 100644 --- a/lib/yat/yat_record.dart +++ b/lib/yat/yat_record.dart @@ -2,8 +2,15 @@ import 'dart:convert'; import 'package:cake_wallet/yat/yat_exception.dart'; import 'package:http/http.dart'; -Future fetchYatAddress(String emojiId) async { +Future fetchYatAddress(String emojiId, String ticker) async { const _requestURL = 'https://a.y.at/emoji_id/'; + final classValue = '0x10'; + final tagValues = {'xmr' : ['01', '02'], 'btc' : ['03'], 'eth' : ['04']}; + final tagValue = tagValues[ticker]; + + if (tagValue == null) { + return ''; + } final url = _requestURL + emojiId; final response = await get(url); @@ -13,6 +20,25 @@ Future fetchYatAddress(String emojiId) async { } final responseJSON = json.decode(response.body) as Map; - final yatAddress = responseJSON['result'][2]['data'] as String; - return yatAddress; + final result = responseJSON['result'] as List; + + if (result == null) { + return ''; + } + + for (var value in tagValue) { + for (int i = 0; i < result.length; i++) { + final record = result[i] as Map; + final tag = record['tag'] as String; + if (tag?.contains(classValue + value) ?? false) { + final yatAddress = record['data'] as String; + return yatAddress; + } + } + } + + return ''; + + //final yatAddress = responseJSON['result'][2]['data'] as String; + //return yatAddress; } \ No newline at end of file