Skip to content

Commit 7d68926

Browse files
committed
extract to smaller views
1 parent 3772c3a commit 7d68926

File tree

1 file changed

+105
-95
lines changed

1 file changed

+105
-95
lines changed

WooCommerce/Classes/POS/Presentation/Settings/PointOfSaleSettingsStoreDetailView.swift

Lines changed: 105 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)