cake_wallet/lib/entities/parsed_address.dart

122 lines
2.9 KiB
Dart
Raw Normal View History

import 'package:cake_wallet/entities/openalias_record.dart';
import 'package:cake_wallet/entities/yat_record.dart';
enum ParseFrom {
unstoppableDomains,
openAlias,
yatRecord,
fio,
notParsed,
twitter,
ens,
contact,
mastodon,
nostr
}
class ParsedAddress {
ParsedAddress({
2022-10-12 17:09:57 +00:00
required this.addresses,
this.name = '',
2022-01-18 07:46:13 +00:00
this.description = '',
this.parseFrom = ParseFrom.notParsed,
});
factory ParsedAddress.fetchEmojiAddress({
List<YatRecord>? addresses,
2022-10-12 17:09:57 +00:00
required String name,
}){
if (addresses?.isEmpty ?? true) {
return ParsedAddress(
addresses: [name], parseFrom: ParseFrom.yatRecord);
2022-10-12 17:09:57 +00:00
}
return ParsedAddress(
2022-10-12 17:09:57 +00:00
addresses: addresses!.map((e) => e.address).toList(),
name: name,
parseFrom: ParseFrom.yatRecord,
);
}
factory ParsedAddress.fetchUnstoppableDomainAddress({
String? address,
2022-10-12 17:09:57 +00:00
required String name,
}){
2022-10-12 17:09:57 +00:00
if (address?.isEmpty ?? true) {
return ParsedAddress(addresses: [name]);
}
return ParsedAddress(
2022-10-12 17:09:57 +00:00
addresses: [address!],
name: name,
parseFrom: ParseFrom.unstoppableDomains,
);
}
factory ParsedAddress.fetchOpenAliasAddress(
{required OpenaliasRecord record, required String name}) {
if (record.address.isEmpty) {
return ParsedAddress(addresses: [name]);
}
return ParsedAddress(
addresses: [record.address],
name: record.name,
description: record.description,
parseFrom: ParseFrom.openAlias,
);
}
2022-10-12 17:09:57 +00:00
factory ParsedAddress.fetchFioAddress({required String address, required String name}){
return ParsedAddress(
addresses: [address],
name: name,
parseFrom: ParseFrom.fio,
);
}
2022-10-12 17:09:57 +00:00
2023-01-24 18:24:46 +00:00
factory ParsedAddress.fetchTwitterAddress({required String address, required String name}){
return ParsedAddress(
addresses: [address],
name: name,
parseFrom: ParseFrom.twitter,
);
}
factory ParsedAddress.fetchMastodonAddress({required String address, required String name}){
return ParsedAddress(
addresses: [address],
name: name,
parseFrom: ParseFrom.mastodon
);
}
factory ParsedAddress.fetchContactAddress({required String address, required String name}){
return ParsedAddress(
addresses: [address],
name: name,
parseFrom: ParseFrom.contact,
);
}
2023-09-21 14:16:27 +00:00
factory ParsedAddress.fetchEnsAddress({required String address, required String name}) {
return ParsedAddress(
addresses: [address],
name: name,
parseFrom: ParseFrom.ens,
);
}
factory ParsedAddress.nostrAddress({required String address, required String name}) {
return ParsedAddress(
addresses: [address],
name: name,
parseFrom: ParseFrom.nostr,
);
}
2022-10-12 17:09:57 +00:00
final List<String> addresses;
final String name;
final String description;
final ParseFrom parseFrom;
2023-09-21 14:16:27 +00:00
2022-01-18 07:46:13 +00:00
}