blob: f5ef605082c6d752fe4e6aad39b0742704c4e00b (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
import SwiftUI
struct WalletPaymentDetailView: View {
let transactionID: String
@ObservedObject var viewModel: WalletViewModel
let client: NjallaClient
var body: some View {
Group {
if viewModel.isLoadingPayment && viewModel.selectedPayment == nil {
ProgressView("Loading Payment")
} else if let payment = viewModel.selectedPayment {
List {
Section("Payment") {
detailRow(label: "ID", value: payment.id ?? transactionID)
detailRow(label: "Status", value: payment.status ?? "Not available")
detailRow(label: "Amount", value: payment.amount.map { "€\($0)" } ?? "Not available")
detailRow(label: "Address", value: payment.address ?? "Not available")
detailRow(label: "URL", value: payment.url ?? "Not available")
}
}
.listStyle(.insetGrouped)
} else if let errorMessage = viewModel.paymentErrorMessage {
ContentUnavailableView("Payment Unavailable", systemImage: "exclamationmark.triangle", description: Text(errorMessage))
} else {
ContentUnavailableView("Payment Unavailable", systemImage: "creditcard", description: Text("No payment details were returned for this transaction."))
}
}
.navigationTitle("Payment")
.navigationBarTitleDisplayMode(.inline)
.task {
await viewModel.loadPayment(id: transactionID, client: client)
}
}
private func detailRow(label: String, value: String) -> some View {
HStack {
Text(label)
Spacer()
Text(value)
.foregroundStyle(.secondary)
.multilineTextAlignment(.trailing)
}
}
}
|