diff --git a/lib/utilities/bip47_utils.dart b/lib/utilities/bip47_utils.dart index 2f1622cb7..6433f4e1d 100644 --- a/lib/utilities/bip47_utils.dart +++ b/lib/utilities/bip47_utils.dart @@ -1,24 +1,34 @@ import 'dart:typed_data'; import 'package:bip47/src/util.dart'; +import 'package:stackwallet/models/isar/models/blockchain_data/output.dart'; import 'package:stackwallet/models/isar/models/blockchain_data/transaction.dart'; abstract class Bip47Utils { /// looks at tx outputs and returns a blinded payment code if found static Uint8List? getBlindedPaymentCodeBytesFrom(Transaction transaction) { + for (int i = 0; i < transaction.outputs.length; i++) { + final bytes = getBlindedPaymentCodeBytesFromOutput( + transaction.outputs.elementAt(i)); + if (bytes != null) { + return bytes; + } + } + + return null; + } + + static Uint8List? getBlindedPaymentCodeBytesFromOutput(Output output) { Uint8List? blindedCodeBytes; - for (int i = 0; i < transaction.outputs.length; i++) { - List<String>? scriptChunks = - transaction.outputs.elementAt(i).scriptPubKeyAsm?.split(" "); - if (scriptChunks?.length == 2 && scriptChunks?[0] == "OP_RETURN") { - final blindedPaymentCode = scriptChunks![1]; - final bytes = blindedPaymentCode.fromHex; + List<String>? scriptChunks = output.scriptPubKeyAsm?.split(" "); + if (scriptChunks?.length == 2 && scriptChunks?[0] == "OP_RETURN") { + final blindedPaymentCode = scriptChunks![1]; + final bytes = blindedPaymentCode.fromHex; - // https://en.bitcoin.it/wiki/BIP_0047#Sending - if (bytes.length == 80 && bytes.first == 1) { - blindedCodeBytes = bytes; - } + // https://en.bitcoin.it/wiki/BIP_0047#Sending + if (bytes.length == 80 && bytes.first == 1) { + blindedCodeBytes = bytes; } }