#
Zaps
high level
#
Example
zap, receipt
final amount = 21;
final lnurl = "opensats@vlt.ge";
final comment = "enjoy this zap from NDK";
ZapResponse response = await ndk.zaps.zap(
nwcConnection: connection,
lnurl: lnurl,
comment: comment,
amountSats: amount,
fetchZapReceipt: true,
signer: Bip340EventSigner(
privateKey: key.privateKey, publicKey: key.publicKey),
relays: ["wss://relay.damus.io"],
pubKey:
"787338757fc25d65cd929394d5e7713cf43638e8d259e8dcf5c73b834eb851f2",
eventId:
"906a0c5920b59e5754d0df5164bfea2a8d48ce5d73beaa1e854b3e6725e3288a");
if (response.payInvoiceResponse != null &&
response.payInvoiceResponse!.preimage.isNotEmpty) {
print(
"Payed $amount to $lnurl, preimage = ${response.payInvoiceResponse!.preimage}");
print("Waiting for Zap Receipt...");
ZapReceipt? receipt = await response.zapReceipt;
if (receipt != null) {
print("Receipt : $receipt");
} else {
print("No Receipt");
}
}
await ndk.destroy();
}
receipts for profile
print("fetching zap receipts for profile ");
final profileReceipts = await ndk.zaps
.fetchZappedReceipts(
pubKey:
"30782a8323b7c98b172c5a2af7206bb8283c655be6ddce11133611a03d5f1177",
)
.toList();
// Sort profileReceipts by amountSats in descending order
profileReceipts
.sort((a, b) => (b.amountSats ?? 0).compareTo(a.amountSats ?? 0));
int profileSum = 0;
for (var receipt in profileReceipts) {
String? sender;
if (receipt.sender != null) {
Metadata? metadata = await ndk.metadata.loadMetadata(receipt.sender!);
sender = metadata?.name;
}
print(
"${sender != null ? "from $sender " : ""} ${receipt.amountSats} sats ${receipt.comment}");
profileSum += receipt.amountSats ?? 0;
}
print("${profileReceipts.length} receipts, total of $profileSum sats");
receipts for event
print("fetching zap receipts for single event ");
final receipts = await ndk.zaps
.fetchZappedReceipts(
pubKey:
"787338757fc25d65cd929394d5e7713cf43638e8d259e8dcf5c73b834eb851f2",
eventId:
"906a0c5920b59e5754d0df5164bfea2a8d48ce5d73beaa1e854b3e6725e3288a")
.toList();
// Sort eventReceipts by amountSats in descending order
receipts.sort((a, b) => (b.amountSats ?? 0).compareTo(a.amountSats ?? 0));
int eventSum = 0;
for (var receipt in receipts) {
String? sender;
if (receipt.sender != null) {
Metadata? metadata = await ndk.metadata.loadMetadata(receipt.sender!);
sender = metadata?.name;
}
print(
"${sender != null ? "from $sender " : ""} ${receipt.amountSats} sats ${receipt.comment}");
eventSum += receipt.amountSats ?? 0;
}
print("${receipts.length} receipts, total of $eventSum sats");
#
How to use
You need a nostr+walletconnect://...
uri from your NWC wallet service provider.
see https://github.com/getAlby/awesome-nwc for more info how to get a wallet supporting NWC