Skip to content

Commit e1f8218

Browse files
committed
Use booking currency to format price in appointment section
1 parent 5f1ace2 commit e1f8218

File tree

3 files changed

+42
-13
lines changed

3 files changed

+42
-13
lines changed

WooCommerce/Classes/ViewModels/Booking Details/AppointmentDetailsContent.swift

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import Foundation
22
import struct Networking.Booking
3-
import class WooFoundationCore.CurrencyFormatter
43

54
extension BookingDetailsViewModel {
65
struct AppointmentDetailsContent {
@@ -34,7 +33,10 @@ extension BookingDetailsViewModel {
3433
to: booking.endDate
3534
)
3635
),
37-
Row(title: Localization.appointmentDetailsPriceTitle, value: Self.formatPrice(booking.cost))
36+
Row(
37+
title: Localization.appointmentDetailsPriceTitle,
38+
value: Self.formatPrice(for: booking)
39+
)
3840
]
3941
}
4042
}
@@ -51,15 +53,6 @@ private extension BookingDetailsViewModel.AppointmentDetailsContent {
5153
static func formatDuration(from startDate: Date, to endDate: Date) -> String {
5254
durationFormatter.string(from: startDate, to: endDate) ?? ""
5355
}
54-
55-
static func formatPrice(_ price: String) -> String {
56-
guard let decimalPrice = Decimal(string: price) else {
57-
return price
58-
}
59-
return CurrencyFormatter(
60-
currencySettings: ServiceLocator.currencySettings
61-
).formatAmount(decimalPrice) ?? price
62-
}
6356
}
6457

6558
private extension BookingDetailsViewModel.AppointmentDetailsContent {
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import Foundation
2+
import struct Networking.Booking
3+
import class WooFoundationCore.CurrencyFormatter
4+
import class WooFoundationCore.CurrencySettings
5+
import enum WooFoundationCore.CurrencyCode
6+
7+
extension BookingDetailsViewModel.AppointmentDetailsContent {
8+
static func formatPrice(for booking: Booking) -> String {
9+
let cost = booking.cost
10+
guard let decimalPrice = Decimal(string: cost) else {
11+
return cost
12+
}
13+
return CurrencyFormatter(
14+
currencySettings: Self.currencySettings(for: booking)
15+
).formatAmount(decimalPrice) ?? cost
16+
}
17+
18+
private static func currencySettings(for booking: Booking) -> CurrencySettings {
19+
let siteCurrencySettings = ServiceLocator.currencySettings
20+
guard let currencyCode = CurrencyCode(rawValue: booking.currency) else {
21+
return siteCurrencySettings
22+
}
23+
24+
return CurrencySettings(
25+
currencyCode: currencyCode,
26+
currencyPosition: siteCurrencySettings.currencyPosition,
27+
thousandSeparator: siteCurrencySettings.groupingSeparator,
28+
decimalSeparator: siteCurrencySettings.decimalSeparator,
29+
numberOfDecimals: siteCurrencySettings.fractionDigits
30+
)
31+
}
32+
}

WooCommerce/WooCommerce.xcodeproj/project.pbxproj

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,8 +135,8 @@
135135
01C21AB82E66EC26008E4D77 /* POSOrderDetailsEmptyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01C21AB72E66EC14008E4D77 /* POSOrderDetailsEmptyView.swift */; };
136136
01C9C59F2DA3D98400CD81D8 /* CartRowRemoveButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01C9C59E2DA3D97E00CD81D8 /* CartRowRemoveButton.swift */; };
137137
01D082402C5B9EAB007FE81F /* POSBackgroundAppearanceKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01D0823F2C5B9EAB007FE81F /* POSBackgroundAppearanceKey.swift */; };
138-
01DE96902E8AE83200E07E1A /* POSOrderBadgeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01DE968F2E8AE83200E07E1A /* POSOrderBadgeView.swift */; };
139138
01DE92D22E8AAE6200E07E1A /* POSOrderListFetchAnalytics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01DE92D12E8AAE6200E07E1A /* POSOrderListFetchAnalytics.swift */; };
139+
01DE96902E8AE83200E07E1A /* POSOrderBadgeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01DE968F2E8AE83200E07E1A /* POSOrderBadgeView.swift */; };
140140
01E62EC82DFADF56003A6D9E /* Cart+BarcodeScanError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01E62EC72DFADF4B003A6D9E /* Cart+BarcodeScanError.swift */; };
141141
01F067ED2D0C5D59001C5805 /* MockLocationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01F067EC2D0C5D56001C5805 /* MockLocationService.swift */; };
142142
01F3D1302E741F3B00D867F1 /* POSCardPresentPaymentMessageViewImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01F3D12F2E741F3B00D867F1 /* POSCardPresentPaymentMessageViewImage.swift */; };
@@ -1251,6 +1251,7 @@
12511251
26FE09E124DB8FA000B9BDF5 /* SurveyCoordinatorControllerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26FE09E024DB8FA000B9BDF5 /* SurveyCoordinatorControllerTests.swift */; };
12521252
26FFC50C2BED7C5A0067B3A4 /* WatchDependencies.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26B249702BEC801400730730 /* WatchDependencies.swift */; };
12531253
26FFC50D2BED7C5B0067B3A4 /* WatchDependencies.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26B249702BEC801400730730 /* WatchDependencies.swift */; };
1254+
2D05208F2E8FEA73004111FD /* BookingDetailsViewModel+PriceFormatting.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D05208E2E8FEA67004111FD /* BookingDetailsViewModel+PriceFormatting.swift */; };
12541255
2D05D19F2E82D1A8004111FD /* BookingDetailsViewModel+Section.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D05D19E2E82D1A3004111FD /* BookingDetailsViewModel+Section.swift */; };
12551256
2D05D1A22E82D235004111FD /* HeaderContent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D05D1A12E82D233004111FD /* HeaderContent.swift */; };
12561257
2D05D1A42E82D266004111FD /* AppointmentDetailsContent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D05D1A32E82D25F004111FD /* AppointmentDetailsContent.swift */; };
@@ -3364,8 +3365,8 @@
33643365
01C21AB72E66EC14008E4D77 /* POSOrderDetailsEmptyView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = POSOrderDetailsEmptyView.swift; sourceTree = "<group>"; };
33653366
01C9C59E2DA3D97E00CD81D8 /* CartRowRemoveButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CartRowRemoveButton.swift; sourceTree = "<group>"; };
33663367
01D0823F2C5B9EAB007FE81F /* POSBackgroundAppearanceKey.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = POSBackgroundAppearanceKey.swift; sourceTree = "<group>"; };
3367-
01DE968F2E8AE83200E07E1A /* POSOrderBadgeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = POSOrderBadgeView.swift; sourceTree = "<group>"; };
33683368
01DE92D12E8AAE6200E07E1A /* POSOrderListFetchAnalytics.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = POSOrderListFetchAnalytics.swift; sourceTree = "<group>"; };
3369+
01DE968F2E8AE83200E07E1A /* POSOrderBadgeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = POSOrderBadgeView.swift; sourceTree = "<group>"; };
33693370
01E62EC72DFADF4B003A6D9E /* Cart+BarcodeScanError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Cart+BarcodeScanError.swift"; sourceTree = "<group>"; };
33703371
01F067EC2D0C5D56001C5805 /* MockLocationService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockLocationService.swift; sourceTree = "<group>"; };
33713372
01F3D12F2E741F3B00D867F1 /* POSCardPresentPaymentMessageViewImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = POSCardPresentPaymentMessageViewImage.swift; sourceTree = "<group>"; };
@@ -4458,6 +4459,7 @@
44584459
26FE09E024DB8FA000B9BDF5 /* SurveyCoordinatorControllerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SurveyCoordinatorControllerTests.swift; sourceTree = "<group>"; };
44594460
26FFD32628C6A0A4002E5E5E /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
44604461
26FFD32928C6A0F4002E5E5E /* UIImage+Widgets.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIImage+Widgets.swift"; sourceTree = "<group>"; };
4462+
2D05208E2E8FEA67004111FD /* BookingDetailsViewModel+PriceFormatting.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "BookingDetailsViewModel+PriceFormatting.swift"; sourceTree = "<group>"; };
44614463
2D05D19E2E82D1A3004111FD /* BookingDetailsViewModel+Section.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "BookingDetailsViewModel+Section.swift"; sourceTree = "<group>"; };
44624464
2D05D1A02E82D1EF004111FD /* BookingDetailsViewModel+SectionContent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "BookingDetailsViewModel+SectionContent.swift"; sourceTree = "<group>"; };
44634465
2D05D1A12E82D233004111FD /* HeaderContent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HeaderContent.swift; sourceTree = "<group>"; };
@@ -9164,6 +9166,7 @@
91649166
2D05D1A62E82D49D004111FD /* BookingDetailsViewModel+Status.swift */,
91659167
2D05D19E2E82D1A3004111FD /* BookingDetailsViewModel+Section.swift */,
91669168
2D05D1A02E82D1EF004111FD /* BookingDetailsViewModel+SectionContent.swift */,
9169+
2D05208E2E8FEA67004111FD /* BookingDetailsViewModel+PriceFormatting.swift */,
91679170
);
91689171
path = "Booking Details";
91699172
sourceTree = "<group>";
@@ -16144,6 +16147,7 @@
1614416147
014997222E1432AB002C50E1 /* PointOfSaleCardPresentPaymentReaderUpdateProgressView.swift in Sources */,
1614516148
01620C4E2C5394B200D3EA2F /* POSProgressViewStyle.swift in Sources */,
1614616149
0196FF942DA8067A0063CEF1 /* CouponCardView.swift in Sources */,
16150+
2D05208F2E8FEA73004111FD /* BookingDetailsViewModel+PriceFormatting.swift in Sources */,
1614716151
021125A52578E5730075AD2A /* BoldableTextView.swift in Sources */,
1614816152
CE85FD5A20F7A7640080B73E /* TableFooterView.swift in Sources */,
1614916153
CC254F2D26C17AB5005F3C82 /* BottomButtonView.swift in Sources */,

0 commit comments

Comments
 (0)