@@ -22,105 +22,115 @@ struct PointOfSaleSettingsStoreDetailView: View {
2222
2323 ScrollView {
2424 VStack ( spacing: POSSpacing . medium) {
25- VStack ( spacing: POSSpacing . none) {
26- ZStack {
27- backgroundColor
28- Text ( Localization . storeInformation)
29- . font ( . posBodyLargeBold)
30- . foregroundColor ( . posOnSurface)
31- . frame ( maxWidth: . infinity, alignment: . leading)
32- . padding ( . horizontal, POSPadding . medium)
33- . padding ( . vertical, POSPadding . small)
34- }
35-
36- VStack ( spacing: POSSpacing . medium) {
37- VStack ( alignment: . leading, spacing: POSPadding . small) {
38- Text ( Localization . storeName)
39- . font ( . posBodyMediumRegular( ) )
40- Text ( viewModel. storeName)
41- . font ( . posBodyMediumRegular( ) )
42- . foregroundStyle ( . secondary)
43- }
44- . frame ( maxWidth: . infinity, alignment: . leading)
45- . padding ( . horizontal, POSPadding . medium)
46-
47- VStack ( alignment: . leading, spacing: POSPadding . small) {
48- Text ( Localization . address)
49- . font ( . posBodyMediumRegular( ) )
50- Text ( viewModel. storeAddress)
51- . font ( . posBodyMediumRegular( ) )
52- . foregroundStyle ( . secondary)
53- }
54- . frame ( maxWidth: . infinity, alignment: . leading)
55- . padding ( . horizontal, POSPadding . medium)
56- }
57- . padding ( . bottom, POSPadding . medium)
58- }
59-
60- VStack ( spacing: POSSpacing . none) {
61- ZStack {
62- backgroundColor
63- Text ( Localization . receiptInformation)
64- . font ( . posBodyLargeBold)
65- . foregroundColor ( . posOnSurface)
66- . frame ( maxWidth: . infinity, alignment: . leading)
67- . padding ( . horizontal, POSPadding . medium)
68- . padding ( . vertical, POSPadding . small)
69- }
70-
71- VStack ( spacing: POSSpacing . medium) {
72- VStack ( alignment: . leading, spacing: POSPadding . small) {
73- Text ( Localization . receiptStoreName)
74- . font ( . posBodyMediumRegular( ) )
75- settingValueView ( for: viewModel. receiptInformation. storeName)
76- }
77- . frame ( maxWidth: . infinity, alignment: . leading)
78- . padding ( . horizontal, POSPadding . medium)
79-
80- VStack ( alignment: . leading, spacing: POSPadding . small) {
81- Text ( Localization . physicalAddress)
82- . font ( . posBodyMediumRegular( ) )
83- settingValueView ( for: viewModel. receiptInformation. storeAddress)
84- }
85- . frame ( maxWidth: . infinity, alignment: . leading)
86- . padding ( . horizontal, POSPadding . medium)
87-
88- VStack ( alignment: . leading, spacing: POSPadding . small) {
89- Text ( Localization . phoneNumber)
90- . font ( . posBodyMediumRegular( ) )
91- settingValueView ( for: viewModel. receiptInformation. phone)
92- }
93- . frame ( maxWidth: . infinity, alignment: . leading)
94- . padding ( . horizontal, POSPadding . medium)
95-
96- VStack ( alignment: . leading, spacing: POSPadding . small) {
97- Text ( Localization . email)
98- . font ( . posBodyMediumRegular( ) )
99- settingValueView ( for: viewModel. receiptInformation. email)
100- }
101- . frame ( maxWidth: . infinity, alignment: . leading)
102- . padding ( . horizontal, POSPadding . medium)
103-
104- VStack ( alignment: . leading, spacing: POSPadding . small) {
105- Text ( Localization . refundReturnsPolicy)
106- . font ( . posBodyMediumRegular( ) )
107- settingValueView ( for: viewModel. receiptInformation. refundReturnsPolicy)
108- }
109- . frame ( maxWidth: . infinity, alignment: . leading)
110- . padding ( . horizontal, POSPadding . medium)
111- }
112- . padding ( . bottom, POSPadding . medium)
113- }
25+ storeInformationView
26+
27+ receiptInformationView
28+ . renderedIf ( viewModel. shouldShowReceiptInformation)
11429 }
115- . renderedIf ( viewModel. shouldShowReceiptInformation)
11630 }
31+ . background ( backgroundColor)
32+ }
33+ . task {
34+ isLoading = true
35+ await viewModel. retrievePOSReceiptSettings ( )
36+ isLoading = false
11737 }
118- . background ( backgroundColor)
11938 }
120- . task {
121- isLoading = true
122- await viewModel. retrievePOSReceiptSettings ( )
123- isLoading = false
39+ }
40+
41+ @ViewBuilder
42+ private var storeInformationView : some View {
43+ VStack ( spacing: POSSpacing . none) {
44+ ZStack {
45+ backgroundColor
46+ Text ( Localization . storeInformation)
47+ . font ( . posBodyLargeBold)
48+ . foregroundColor ( . posOnSurface)
49+ . frame ( maxWidth: . infinity, alignment: . leading)
50+ . padding ( . horizontal, POSPadding . medium)
51+ . padding ( . vertical, POSPadding . small)
52+ }
53+
54+ VStack ( spacing: POSSpacing . medium) {
55+ VStack ( alignment: . leading, spacing: POSPadding . small) {
56+ Text ( Localization . storeName)
57+ . font ( . posBodyMediumRegular( ) )
58+ Text ( viewModel. storeName)
59+ . font ( . posBodyMediumRegular( ) )
60+ . foregroundStyle ( . secondary)
61+ }
62+ . frame ( maxWidth: . infinity, alignment: . leading)
63+ . padding ( . horizontal, POSPadding . medium)
64+
65+ VStack ( alignment: . leading, spacing: POSPadding . small) {
66+ Text ( Localization . address)
67+ . font ( . posBodyMediumRegular( ) )
68+ Text ( viewModel. storeAddress)
69+ . font ( . posBodyMediumRegular( ) )
70+ . foregroundStyle ( . secondary)
71+ }
72+ . frame ( maxWidth: . infinity, alignment: . leading)
73+ . padding ( . horizontal, POSPadding . medium)
74+ }
75+ . padding ( . bottom, POSPadding . medium)
76+ }
77+ }
78+
79+ @ViewBuilder
80+ private var receiptInformationView : some View {
81+ VStack ( spacing: POSSpacing . none) {
82+ ZStack {
83+ backgroundColor
84+ Text ( Localization . receiptInformation)
85+ . font ( . posBodyLargeBold)
86+ . foregroundColor ( . posOnSurface)
87+ . frame ( maxWidth: . infinity, alignment: . leading)
88+ . padding ( . horizontal, POSPadding . medium)
89+ . padding ( . vertical, POSPadding . small)
90+ }
91+
92+ VStack ( spacing: POSSpacing . medium) {
93+ VStack ( alignment: . leading, spacing: POSPadding . small) {
94+ Text ( Localization . receiptStoreName)
95+ . font ( . posBodyMediumRegular( ) )
96+ settingValueView ( for: viewModel. receiptInformation. storeName)
97+ }
98+ . frame ( maxWidth: . infinity, alignment: . leading)
99+ . padding ( . horizontal, POSPadding . medium)
100+
101+ VStack ( alignment: . leading, spacing: POSPadding . small) {
102+ Text ( Localization . physicalAddress)
103+ . font ( . posBodyMediumRegular( ) )
104+ settingValueView ( for: viewModel. receiptInformation. storeAddress)
105+ }
106+ . frame ( maxWidth: . infinity, alignment: . leading)
107+ . padding ( . horizontal, POSPadding . medium)
108+
109+ VStack ( alignment: . leading, spacing: POSPadding . small) {
110+ Text ( Localization . phoneNumber)
111+ . font ( . posBodyMediumRegular( ) )
112+ settingValueView ( for: viewModel. receiptInformation. phone)
113+ }
114+ . frame ( maxWidth: . infinity, alignment: . leading)
115+ . padding ( . horizontal, POSPadding . medium)
116+
117+ VStack ( alignment: . leading, spacing: POSPadding . small) {
118+ Text ( Localization . email)
119+ . font ( . posBodyMediumRegular( ) )
120+ settingValueView ( for: viewModel. receiptInformation. email)
121+ }
122+ . frame ( maxWidth: . infinity, alignment: . leading)
123+ . padding ( . horizontal, POSPadding . medium)
124+
125+ VStack ( alignment: . leading, spacing: POSPadding . small) {
126+ Text ( Localization . refundReturnsPolicy)
127+ . font ( . posBodyMediumRegular( ) )
128+ settingValueView ( for: viewModel. receiptInformation. refundReturnsPolicy)
129+ }
130+ . frame ( maxWidth: . infinity, alignment: . leading)
131+ . padding ( . horizontal, POSPadding . medium)
132+ }
133+ . padding ( . bottom, POSPadding . medium)
124134 }
125135 }
126136
0 commit comments