mirror of
https://github.com/cake-tech/cake_wallet.git
synced 2025-01-23 19:16:09 +00:00
CWA-69 | reworked OpenaliasRecord class
This commit is contained in:
parent
0efe8af3e0
commit
652ba16777
3 changed files with 35 additions and 35 deletions
|
@ -2,15 +2,12 @@ import 'package:basic_utils/basic_utils.dart';
|
||||||
|
|
||||||
class OpenaliasRecord {
|
class OpenaliasRecord {
|
||||||
|
|
||||||
OpenaliasRecord({this.name});
|
OpenaliasRecord({this.address, this.name});
|
||||||
|
|
||||||
String name;
|
final String name;
|
||||||
String address;
|
final String address;
|
||||||
|
|
||||||
String get recordName => name;
|
static String formatDomainName(String name) {
|
||||||
String get recordAddress => address;
|
|
||||||
|
|
||||||
String formatDomainName() {
|
|
||||||
String formattedName = name;
|
String formattedName = name;
|
||||||
|
|
||||||
if (name.contains("@")) {
|
if (name.contains("@")) {
|
||||||
|
@ -20,41 +17,45 @@ class OpenaliasRecord {
|
||||||
return formattedName;
|
return formattedName;
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> fetchAddressAndName(String name) async {
|
static Future<OpenaliasRecord> fetchAddressAndName(String formattedName) async {
|
||||||
this.name = name;
|
String address = formattedName;
|
||||||
address = name;
|
String name = formattedName;
|
||||||
|
|
||||||
try {
|
if (formattedName.contains(".")) {
|
||||||
final txtRecord = await DnsUtils.lookupRecord(name, RRecordType.TXT, dnssec: true);
|
try {
|
||||||
|
final txtRecord = await DnsUtils.lookupRecord(formattedName, RRecordType.TXT, dnssec: true);
|
||||||
|
|
||||||
if (txtRecord != null) {
|
if (txtRecord != null) {
|
||||||
|
|
||||||
for (RRecord element in txtRecord) {
|
for (RRecord element in txtRecord) {
|
||||||
String record = element.data;
|
String record = element.data;
|
||||||
|
|
||||||
if (record.contains("oa1:xmr") && record.contains("recipient_address")) {
|
if (record.contains("oa1:xmr") && record.contains("recipient_address")) {
|
||||||
record = record.replaceAll('\"', "");
|
record = record.replaceAll('\"', "");
|
||||||
|
|
||||||
final dataList = record.split(";");
|
final dataList = record.split(";");
|
||||||
|
|
||||||
address = dataList.where((item) => (item.contains("recipient_address")))
|
address = dataList.where((item) => (item.contains("recipient_address")))
|
||||||
.toString().replaceAll("oa1:xmr recipient_address=", "")
|
.toString().replaceAll("oa1:xmr recipient_address=", "")
|
||||||
.replaceAll("(", "").replaceAll(")", "").trim();
|
.replaceAll("(", "").replaceAll(")", "").trim();
|
||||||
|
|
||||||
final recipientName = dataList.where((item) => (item.contains("recipient_name"))).toString()
|
final recipientName = dataList.where((item) => (item.contains("recipient_name"))).toString()
|
||||||
.replaceAll("(", "").replaceAll(")", "").trim();
|
.replaceAll("(", "").replaceAll(")", "").trim();
|
||||||
|
|
||||||
if (recipientName.isNotEmpty) {
|
if (recipientName.isNotEmpty) {
|
||||||
this.name = recipientName.replaceAll("recipient_name=", "");
|
name = recipientName.replaceAll("recipient_name=", "");
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} catch (e) {
|
||||||
|
print("${e.toString()}");
|
||||||
}
|
}
|
||||||
} catch (e) {
|
|
||||||
print("${e.toString()}");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return OpenaliasRecord(address: address, name: name);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,7 +65,7 @@ class SendFormState extends State<SendForm> {
|
||||||
super.initState();
|
super.initState();
|
||||||
}
|
}
|
||||||
|
|
||||||
void getOpenaliasRecord(BuildContext context) async {
|
Future<void> getOpenaliasRecord(BuildContext context) async {
|
||||||
final sendStore = Provider.of<SendStore>(context);
|
final sendStore = Provider.of<SendStore>(context);
|
||||||
final isOpenalias = await sendStore.isOpenaliasRecord(_addressController.text);
|
final isOpenalias = await sendStore.isOpenaliasRecord(_addressController.text);
|
||||||
|
|
||||||
|
|
|
@ -56,7 +56,6 @@ abstract class SendStoreBase with Store {
|
||||||
NumberFormat _cryptoNumberFormat;
|
NumberFormat _cryptoNumberFormat;
|
||||||
NumberFormat _fiatNumberFormat;
|
NumberFormat _fiatNumberFormat;
|
||||||
String _lastRecipientAddress;
|
String _lastRecipientAddress;
|
||||||
OpenaliasRecord _openaliasRecord;
|
|
||||||
|
|
||||||
@action
|
@action
|
||||||
Future createTransaction(
|
Future createTransaction(
|
||||||
|
@ -159,11 +158,11 @@ abstract class SendStoreBase with Store {
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<bool> isOpenaliasRecord(String name) async {
|
Future<bool> isOpenaliasRecord(String name) async {
|
||||||
_openaliasRecord = OpenaliasRecord(name: name);
|
final _openaliasRecord = await OpenaliasRecord
|
||||||
await _openaliasRecord.fetchAddressAndName(_openaliasRecord.formatDomainName());
|
.fetchAddressAndName(OpenaliasRecord.formatDomainName(name));
|
||||||
|
|
||||||
recordAddress = _openaliasRecord.recordAddress;
|
recordAddress = _openaliasRecord.address;
|
||||||
recordName = _openaliasRecord.recordName;
|
recordName = _openaliasRecord.name;
|
||||||
|
|
||||||
return recordAddress != name;
|
return recordAddress != name;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue