diff --git a/BDKSwiftExampleWallet/Resources/Localizable.xcstrings b/BDKSwiftExampleWallet/Resources/Localizable.xcstrings index 02ceb23d..3c50e8c8 100644 --- a/BDKSwiftExampleWallet/Resources/Localizable.xcstrings +++ b/BDKSwiftExampleWallet/Resources/Localizable.xcstrings @@ -397,6 +397,9 @@ } } } + }, + "Get sats from faucet" : { + }, "HomeView Error" : { "localizations" : { diff --git a/BDKSwiftExampleWallet/View Model/Activity/TransactionListViewModel.swift b/BDKSwiftExampleWallet/View Model/Activity/TransactionListViewModel.swift index f50d4eae..5a0c13e0 100644 --- a/BDKSwiftExampleWallet/View Model/Activity/TransactionListViewModel.swift +++ b/BDKSwiftExampleWallet/View Model/Activity/TransactionListViewModel.swift @@ -12,14 +12,17 @@ import Foundation @Observable class TransactionListViewModel { let bdkClient: BDKClient + let keyClient: KeyClient var showingWalletTransactionsViewErrorAlert = false var walletTransactionsViewError: AppError? init( - bdkClient: BDKClient = .live + bdkClient: BDKClient = .live, + keyClient: KeyClient = .live ) { self.bdkClient = bdkClient + self.keyClient = keyClient } func getSentAndReceived(tx: BitcoinDevKit.Transaction) -> SentAndReceivedValues? { @@ -35,4 +38,9 @@ class TransactionListViewModel { } } + func getEsploraURL() -> String? { + let savedEsploraURL = try? keyClient.getEsploraURL() + return savedEsploraURL + } + } diff --git a/BDKSwiftExampleWallet/View/Activity/TransactionListView.swift b/BDKSwiftExampleWallet/View/Activity/TransactionListView.swift index 58f7a74d..098d4183 100644 --- a/BDKSwiftExampleWallet/View/Activity/TransactionListView.swift +++ b/BDKSwiftExampleWallet/View/Activity/TransactionListView.swift @@ -29,10 +29,40 @@ struct TransactionListView: View { .listRowInsets(EdgeInsets()) .listRowSeparator(.hidden) } else if transactions.isEmpty { - Text("No Transactions") - .font(.subheadline) - .listRowInsets(EdgeInsets()) - .listRowSeparator(.hidden) + + VStack(alignment: .leading) { + + Text("No Transactions") + .font(.subheadline) + + let mutinyFaucetURL = URL(string: "https://faucet.mutinynet.com") + let signetFaucetURL = URL(string: "https://signetfaucet.com") + + if let mutinyFaucetURL, let signetFaucetURL { + + Button { + UIApplication.shared.open( + viewModel.getEsploraURL() + == Constants.Config.EsploraServerURLNetwork.Signet.mutiny + ? mutinyFaucetURL : signetFaucetURL + ) + } label: { + HStack(spacing: 2) { + Text("Get sats from faucet") + Image(systemName: "arrow.right") + } + .font(.caption) + .foregroundStyle(.secondary) + .underline() + } + .buttonStyle(.plain) + + } + + } + .listRowInsets(EdgeInsets()) + .listRowSeparator(.hidden) + } else { ForEach( @@ -99,4 +129,13 @@ struct TransactionListView: View { walletSyncState: .synced ) } + #Preview { + TransactionListView( + viewModel: .init( + bdkClient: .mock + ), + transactions: [], + walletSyncState: .synced + ) + } #endif