-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathHomeWalletView.swift
More file actions
80 lines (69 loc) · 2.75 KB
/
Copy pathHomeWalletView.swift
File metadata and controls
80 lines (69 loc) · 2.75 KB
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import SwiftUI
struct HomeWalletView: View {
@EnvironmentObject var activity: ActivityListViewModel
@EnvironmentObject var app: AppViewModel
@EnvironmentObject var navigation: NavigationViewModel
@EnvironmentObject var settings: SettingsViewModel
@EnvironmentObject var wallet: WalletViewModel
@Environment(HwWalletManager.self) private var hwWalletManager
var hasActivity: Bool {
return activity.latestActivities?.isEmpty == false
}
/// Headline total including watch-only hardware-wallet balances (keeps `totalBalanceSats`
/// semantics unchanged for send/transfer logic; only the headline folds hardware in).
private var headlineSats: Int {
let hw = Int(clamping: hwWalletManager.totalSats)
return wallet.totalBalanceSats.saturatingAdd(hw)
}
var body: some View {
VStack(spacing: 0) {
MoneyStack(
sats: headlineSats,
showSymbol: true,
showEyeIcon: true,
enableSwipeGesture: settings.swipeBalanceToHide,
enableHide: true
)
.padding(.bottom, 32)
HStack(spacing: 16) {
NavigationLink(value: Route.savingsWallet) {
WalletBalanceView(
type: .onchain,
sats: UInt64(wallet.totalOnchainSats),
amountTestIdentifier: "ActivitySavings"
)
}
CustomDivider(color: .gray4, type: .vertical)
NavigationLink(value: Route.spendingWallet) {
WalletBalanceView(
type: .lightning,
sats: UInt64(wallet.totalLightningSats),
amountTestIdentifier: "ActivitySpending"
)
}
}
.frame(height: 50)
.padding(.bottom, 32)
if !hwWalletManager.wallets.isEmpty {
HardwareWalletsGrid(wallets: hwWalletManager.wallets) { hwWallet in
navigation.navigate(.hardwareWallet(deviceId: hwWallet.id))
}
.padding(.bottom, 32)
}
if hasActivity {
ActivityLatest()
Spacer()
if settings.showWidgets, !app.hasDismissedWidgetsOnboardingHint {
WidgetsOnboardingView()
}
} else {
Spacer()
WalletOnboardingView(type: .home)
}
}
.padding(.top, ScreenLayout.topPaddingWithSafeArea)
.padding(.bottom, ScreenLayout.bottomPaddingWithSafeArea)
.padding(.horizontal)
.animation(.spring(response: 0.3), value: hasActivity)
}
}