@@ -34,51 +34,58 @@ struct POSSettingsLocalCatalogDetailView: View {
3434private extension POSSettingsLocalCatalogDetailView {
3535 @ViewBuilder
3636 var catalogStatus : some View {
37- VStack ( spacing: POSSpacing . medium) {
38- fieldRowView ( label: Localization . catalogSize, value: viewModel. catalogSize)
39- fieldRowView ( label: Localization . lastIncrementalSync, value: viewModel. lastIncrementalSyncDate)
40- fieldRowView ( label: Localization . lastFullSync, value: viewModel. lastFullSyncDate)
37+ POSInformationCard {
38+ VStack ( spacing: POSSpacing . small) {
39+ POSInformationCardFieldRow (
40+ label: Localization . catalogSize,
41+ value: viewModel. catalogSize
42+ )
43+ POSInformationCardFieldRow (
44+ label: Localization . lastIncrementalSync,
45+ value: viewModel. lastIncrementalSyncDate
46+ )
47+ POSInformationCardFieldRow (
48+ label: Localization . lastFullSync,
49+ value: viewModel. lastFullSyncDate,
50+ showSeparator: false
51+ )
4152 }
42- . padding ( . bottom , POSPadding . medium )
43- . redacted ( reason: viewModel. isLoading ? . placeholder : [ ] )
44- . shimmering ( active: viewModel. isLoading)
53+ }
54+ . redacted ( reason: viewModel. isLoading ? . placeholder : [ ] )
55+ . shimmering ( active: viewModel. isLoading)
4556 }
4657
4758 @ViewBuilder
4859 var managingDataUsage : some View {
49- @Bindable var viewModel = viewModel
5060 VStack ( spacing: POSSpacing . none) {
51- sectionHeaderView ( title: Localization . managingDataUsage)
52-
53- VStack ( spacing: POSSpacing . medium) {
54- toggleRowView ( label: Localization . allowSyncOnCellular, isOn: $viewModel. allowFullSyncOnCellular)
61+ POSInformationCard {
62+ POSInformationCardFieldRow ( label: Localization . managingDataUsage,
63+ value: Localization . allowSyncOnCellular,
64+ showSeparator: false ,
65+ buttonAction: {
66+ viewModel. allowFullSyncOnCellular. toggle ( )
67+ } )
5568 }
56- . padding ( . bottom, POSPadding . medium)
5769 }
5870 }
5971
6072 @ViewBuilder
6173 var manualCatalogUpdate : some View {
6274 VStack ( spacing: POSSpacing . none) {
63- sectionHeaderView ( title: Localization . manualCatalogUpdate)
64-
65- VStack ( spacing: POSSpacing . medium) {
66- Text ( Localization . manualUpdateInfo)
67- . font ( . posCaptionRegular)
68- . foregroundStyle ( . secondary)
69- . frame ( maxWidth: . infinity, alignment: . leading)
70-
71- Button ( action: {
72- Task {
73- await viewModel. refreshCatalog ( )
74- }
75- } ) {
76- Text ( Localization . updateCatalog)
77- }
78- . buttonStyle ( POSFilledButtonStyle ( size: . normal, isLoading: viewModel. isRefreshingCatalog) )
75+ POSInformationCard {
76+ POSInformationCardFieldRow (
77+ label: Localization . manualCatalogUpdate,
78+ value: Localization . manualUpdateInfo,
79+ showSeparator: false ,
80+ buttonTitle: Localization . updateCatalog,
81+ buttonAction: {
82+ Task {
83+ await viewModel. refreshCatalog ( )
84+ }
85+ } ,
86+ buttonStyle: . primary
87+ )
7988 }
80- . padding ( . horizontal, POSPadding . medium)
81- . padding ( . bottom, POSPadding . medium)
8289 }
8390 }
8491
@@ -94,32 +101,6 @@ private extension POSSettingsLocalCatalogDetailView {
94101 . padding ( . vertical, POSPadding . small)
95102 }
96103 }
97-
98- @ViewBuilder
99- func fieldRowView( label: String , value: String ) -> some View {
100- VStack ( alignment: . leading, spacing: POSPadding . small) {
101- Text ( label)
102- . font ( . posBodyMediumRegular( ) )
103- Text ( value)
104- . font ( . posBodyMediumRegular( ) )
105- . foregroundStyle ( . secondary)
106- }
107- . frame ( maxWidth: . infinity, alignment: . leading)
108- . padding ( . horizontal, POSPadding . medium)
109- }
110-
111- @ViewBuilder
112- func toggleRowView( label: String , isOn: Binding < Bool > ) -> some View {
113- HStack {
114- Text ( label)
115- . font ( . posBodyMediumRegular( ) )
116- Spacer ( )
117- Toggle ( " " , isOn: isOn)
118- . toggleStyle ( SwitchToggleStyle ( ) )
119- }
120- . frame ( maxWidth: . infinity, alignment: . leading)
121- . padding ( . horizontal, POSPadding . medium)
122- }
123104}
124105
125106private extension POSSettingsLocalCatalogDetailView {
0 commit comments