mirror of
https://github.com/Such-Software/hash-wallet.git
synced 2026-10-19 05:58:50 +02:00
* feat: bitcoin view-only * fix: add UR to cw_bitcoin, fix payjoin issue * feat: add unsignedPsbt to PendingBitcoinTransaction * wip * feat: xpub restore from bitcoin URI QR * feat(dev): debug UR codes [skip ci] * fix: master fingerprint default in create bitcoin transaction * fix: handle empty private key in bitcoin transaction building * fix: show success dialog after btc ur transaction * fix(ui): remove SP from UI in view only wallet * fix(cw_bitcoin): tx sending on non-airgap * fix(cw_bitcoin): disable all non-segwit addresses * feat(ur): support BBQR for coldcard qr * flutter 3.27.0 -> 3.27.4 * feat: raw xpub qr support for coldcard q * fix: update ledger_bitcoin fix: update switching button * fix: restore button not showing up after scanning * feat: commit raw tx (from coldcard Q) * feat: legacy crypto-psbt support for seed signer * chore: address comments from review * fix(cw_bitcoin): disable sp and payjoin for cupcake * feat: enable DNSSEC BIP353 in PSBT (#2397) * feat: enable DNSSEC BIP353 in PSBT * chore: put bitcoin view only behind a featureflag * fix: update Monero wallet to work with new internal URQR return format * feat: add "Restore from Cupcake App" option with localized strings * feat: enable DNSSEC BIP353 in PSBT using dnssec-prover (#2401) * fix: use dnssec-prover chore: bump ndk to r28c * fix: validate DNSSEC proof before updating the UI * fix: rename button to copy debug info to not hide actions on URQR widget --------- Co-authored-by: Konstantin Ullrich <konstantinullrich12@gmail.com>
186 lines
4.5 KiB
Dart
186 lines
4.5 KiB
Dart
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,
|
|
thorChain,
|
|
wellKnown,
|
|
zanoAlias,
|
|
bip353
|
|
}
|
|
|
|
class ParsedAddress {
|
|
ParsedAddress({
|
|
required this.addresses,
|
|
this.name = '',
|
|
this.description = '',
|
|
this.profileImageUrl = '',
|
|
this.profileName = '',
|
|
this.parseFrom = ParseFrom.notParsed,
|
|
this.bip353DnsProof,
|
|
});
|
|
|
|
factory ParsedAddress.fetchEmojiAddress({
|
|
List<YatRecord>? addresses,
|
|
required String name,
|
|
}) {
|
|
if (addresses?.isEmpty ?? true) {
|
|
return ParsedAddress(addresses: [name], parseFrom: ParseFrom.yatRecord);
|
|
}
|
|
return ParsedAddress(
|
|
addresses: addresses!.map((e) => e.address).toList(),
|
|
name: name,
|
|
parseFrom: ParseFrom.yatRecord,
|
|
);
|
|
}
|
|
|
|
factory ParsedAddress.fetchUnstoppableDomainAddress({
|
|
String? address,
|
|
required String name,
|
|
}) {
|
|
if (address?.isEmpty ?? true) {
|
|
return ParsedAddress(addresses: [name]);
|
|
}
|
|
return ParsedAddress(
|
|
addresses: [address!],
|
|
name: name,
|
|
parseFrom: ParseFrom.unstoppableDomains,
|
|
);
|
|
}
|
|
|
|
factory ParsedAddress.fetchBip353AddressAddress ({
|
|
required String address,
|
|
required String name,
|
|
String? dnsProof,
|
|
}) {
|
|
return ParsedAddress(
|
|
addresses: [address],
|
|
name: name,
|
|
parseFrom: ParseFrom.bip353,
|
|
bip353DnsProof: dnsProof,
|
|
);
|
|
}
|
|
|
|
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,
|
|
);
|
|
}
|
|
|
|
factory ParsedAddress.fetchFioAddress({required String address, required String name}) {
|
|
return ParsedAddress(
|
|
addresses: [address],
|
|
name: name,
|
|
parseFrom: ParseFrom.fio,
|
|
);
|
|
}
|
|
|
|
factory ParsedAddress.fetchTwitterAddress(
|
|
{required String address,
|
|
required String name,
|
|
required String profileImageUrl,
|
|
required String profileName,
|
|
String? description}) {
|
|
return ParsedAddress(
|
|
addresses: [address],
|
|
name: name,
|
|
description: description ?? '',
|
|
profileImageUrl: profileImageUrl,
|
|
profileName: profileName,
|
|
parseFrom: ParseFrom.twitter,
|
|
);
|
|
}
|
|
|
|
factory ParsedAddress.fetchMastodonAddress(
|
|
{required String address,
|
|
required String name,
|
|
required String profileImageUrl,
|
|
required String profileName}) {
|
|
return ParsedAddress(
|
|
addresses: [address],
|
|
name: name,
|
|
parseFrom: ParseFrom.mastodon,
|
|
profileImageUrl: profileImageUrl,
|
|
profileName: profileName,
|
|
);
|
|
}
|
|
|
|
factory ParsedAddress.fetchContactAddress({required String address, required String name}) {
|
|
return ParsedAddress(
|
|
addresses: [address],
|
|
name: name,
|
|
parseFrom: ParseFrom.contact,
|
|
);
|
|
}
|
|
|
|
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,
|
|
required String profileImageUrl,
|
|
required String profileName}) {
|
|
return ParsedAddress(
|
|
addresses: [address],
|
|
name: name,
|
|
parseFrom: ParseFrom.nostr,
|
|
profileImageUrl: profileImageUrl,
|
|
profileName: profileName,
|
|
);
|
|
}
|
|
|
|
factory ParsedAddress.thorChainAddress({required String address, required String name}) {
|
|
return ParsedAddress(
|
|
addresses: [address],
|
|
name: name,
|
|
parseFrom: ParseFrom.thorChain,
|
|
);
|
|
}
|
|
|
|
factory ParsedAddress.zanoAddress({required String address, required String name}) {
|
|
return ParsedAddress(
|
|
addresses: [address],
|
|
name: name,
|
|
parseFrom: ParseFrom.zanoAlias,
|
|
);
|
|
}
|
|
|
|
factory ParsedAddress.fetchWellKnownAddress({required String address, required String name}) {
|
|
return ParsedAddress(
|
|
addresses: [address],
|
|
name: name,
|
|
parseFrom: ParseFrom.wellKnown,
|
|
);
|
|
}
|
|
|
|
final List<String> addresses;
|
|
final String name;
|
|
final String description;
|
|
final String profileImageUrl;
|
|
final String profileName;
|
|
final ParseFrom parseFrom;
|
|
final String? bip353DnsProof;
|
|
}
|