showReclaimDialog function
Future<void>
showReclaimDialog(
- BuildContext context,
- NdkFlutter ndkFlutter,
- List<
CashuWalletTransaction> reclaimable
Runs Cashu.retrieveFunds for each reclaimable funding transaction and
shows live per-transaction status in a dialog.
Implementation
Future<void> showReclaimDialog(
BuildContext context,
NdkFlutter ndkFlutter,
List<CashuWalletTransaction> reclaimable,
) async {
final l10n = AppLocalizations.of(context)!;
// Start the reclaim stream for each transaction exactly once so the
// StreamBuilder tiles don't restart the process on every rebuild.
final streams = <CashuWalletTransaction, Stream<CashuWalletTransaction>>{
for (final tx in reclaimable)
tx: ndkFlutter.ndk.cashu
.retrieveFunds(draftTransaction: tx)
.asBroadcastStream(),
};
await showDialog(
context: context,
builder: (dialogContext) {
return AlertDialog(
title: Text(l10n.reclaimPendingTitle),
content: SizedBox(
width: double.maxFinite,
child: ListView(
shrinkWrap: true,
children: [
for (final tx in reclaimable)
ReclaimPendingTile(transaction: tx, stream: streams[tx]!),
],
),
),
actions: [
TextButton(
onPressed: () => Navigator.of(dialogContext).pop(),
child: Text(l10n.close),
),
],
);
},
);
}