@@ -23,8 +23,8 @@ struct TransferBalanceCodesView: View {
2323
2424 var body : some View {
2525
26- Group {
27-
26+ ZStack {
27+
2828 if ( viewModel. isInitializing) {
2929 VStack {
3030
@@ -38,17 +38,11 @@ struct TransferBalanceCodesView: View {
3838 . frame ( maxWidth: . infinity, maxHeight: . infinity)
3939 } else {
4040
41- if viewModel. redeemedBalanceCodes. isEmpty {
42- VStack {
43- Text ( " No balance codes found " )
44- . font ( themeManager. currentTheme. bodyFont)
45- . foregroundStyle ( themeManager. currentTheme. textMutedColor)
46- }
47- . frame ( maxWidth: . infinity, maxHeight: . infinity)
48- } else {
49-
50- List {
41+ List {
42+ if ( !viewModel. redeemedBalanceCodes. isEmpty) {
43+
5144 Section {
45+
5246 ForEach ( viewModel. redeemedBalanceCodes, id: \. balanceCodeId? . idStr) { balanceCode in
5347 let masked : String = {
5448 let keep = 3
@@ -67,6 +61,7 @@ struct TransferBalanceCodesView: View {
6761 }
6862 }
6963 }
64+
7065 } header: {
7166 HStack {
7267 Text ( " Code " )
@@ -80,46 +75,61 @@ struct TransferBalanceCodesView: View {
8075 . padding ( . vertical, 4 )
8176 }
8277 }
83- . listStyle ( . inset)
8478
8579 }
86- }
87- }
88- . toolbar {
89-
90- ToolbarItem ( placement: . primaryAction) {
91- Button ( action: {
92- viewModel. displayRedeemSheet = true
93- } ) {
94- Image ( systemName: " plus " )
80+ . listStyle ( . inset)
81+ . refreshable {
82+ await viewModel. getRedeemedBalanceCodes ( )
9583 }
96- }
97- }
98- . sheet ( isPresented: $viewModel. displayRedeemSheet) {
99- VStack {
100-
101- RedeemBalanceCodeSheet (
102- closeSheet: {
103- viewModel. displayRedeemSheet = false
104- } ,
105- onSuccess: {
106-
107- viewModel. displayRedeemSheet = false
108-
109- // start polling
110- subscriptionBalanceViewModel. startPolling ( )
111-
112- Task {
113- await viewModel. getRedeemedBalanceCodes ( )
84+ . toolbar {
85+
86+ ToolbarItem ( placement: . primaryAction) {
87+ Button ( action: {
88+ viewModel. displayRedeemSheet = true
89+ } ) {
90+ Image ( systemName: " plus " )
11491 }
92+ }
93+ }
94+ . sheet ( isPresented: $viewModel. displayRedeemSheet) {
95+ VStack {
96+
97+ RedeemBalanceCodeSheet (
98+ closeSheet: {
99+ viewModel. displayRedeemSheet = false
100+ } ,
101+ onSuccess: {
102+
103+ viewModel. displayRedeemSheet = false
104+
105+ // start polling
106+ subscriptionBalanceViewModel. startPolling ( )
107+
108+ Task {
109+ await viewModel. getRedeemedBalanceCodes ( )
110+ }
111+
112+ } ,
113+ api: self . api
114+ )
115115
116- } ,
117- api: self . api
118- )
116+ }
117+ . background ( themeManager. currentTheme. backgroundColor)
118+ }
119+
120+ if ( viewModel. redeemedBalanceCodes. isEmpty) {
121+ VStack {
122+ Text ( " No balance codes found " )
123+ . font ( themeManager. currentTheme. bodyFont)
124+ . foregroundStyle ( themeManager. currentTheme. textMutedColor)
125+ }
126+ . frame ( maxWidth: . infinity, maxHeight: . infinity)
127+ }
119128
120129 }
121- . background ( themeManager . currentTheme . backgroundColor )
130+
122131 }
132+
123133 }
124134}
125135
0 commit comments