Skip to content

Commit aa46a5c

Browse files
committed
POSFloatingControlView: add previews for disconnected/connected/disabled states.
1 parent 582cc99 commit aa46a5c

File tree

2 files changed

+45
-3
lines changed

2 files changed

+45
-3
lines changed

WooCommerce/Classes/POS/Card Present Payments/CardPresentPaymentPreviewService.swift

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,14 @@ import struct Yosemite.Order
55

66
#if DEBUG
77

8-
struct CardPresentPaymentPreviewService: CardPresentPaymentFacade {
8+
final class CardPresentPaymentPreviewService: CardPresentPaymentFacade {
99
let paymentEventPublisher: AnyPublisher<CardPresentPaymentEvent, Never> = Just(.idle).eraseToAnyPublisher()
1010

11-
let readerConnectionStatusPublisher: AnyPublisher<CardPresentPaymentReaderConnectionStatus, Never> = Just(.disconnected)
12-
.eraseToAnyPublisher()
11+
@Published var readerConnectionStatus: CardPresentPaymentReaderConnectionStatus = .disconnected
12+
13+
var readerConnectionStatusPublisher: AnyPublisher<CardPresentPaymentReaderConnectionStatus, Never> {
14+
$readerConnectionStatus.eraseToAnyPublisher()
15+
}
1316

1417
func connectReader(using connectionMethod: CardReaderConnectionMethod) async throws -> CardPresentPaymentReaderConnectionResult {
1518
.connected(CardPresentPaymentCardReader(name: "Test reader", batteryLevel: 0.85))

WooCommerce/Classes/POS/Presentation/POSFloatingControlView.swift

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,3 +111,42 @@ private extension POSFloatingControlView {
111111
)
112112
}
113113
}
114+
115+
#if DEBUG
116+
117+
@available(iOS 17.0, *)
118+
#Preview("Reader Disconnected") {
119+
let posModel = PointOfSaleAggregateModel(
120+
itemsController: PointOfSalePreviewItemsController(),
121+
cardPresentPaymentService: CardPresentPaymentPreviewService(),
122+
orderController: PointOfSalePreviewOrderController())
123+
POSFloatingControlView(showExitPOSModal: .constant(false), showSupport: .constant(false))
124+
.environment(\.posBackgroundAppearance, .primary)
125+
.environment(posModel)
126+
}
127+
128+
@available(iOS 17.0, *)
129+
#Preview("Reader Connected") {
130+
let paymentService = CardPresentPaymentPreviewService()
131+
let posModel = PointOfSaleAggregateModel(
132+
itemsController: PointOfSalePreviewItemsController(),
133+
cardPresentPaymentService: paymentService,
134+
orderController: PointOfSalePreviewOrderController())
135+
paymentService.readerConnectionStatus = .connected(.init(name: "", batteryLevel: 0.6))
136+
return POSFloatingControlView(showExitPOSModal: .constant(false), showSupport: .constant(false))
137+
.environment(\.posBackgroundAppearance, .primary)
138+
.environment(posModel)
139+
}
140+
141+
@available(iOS 17.0, *)
142+
#Preview("Secondary/disabled Background") {
143+
let posModel = PointOfSaleAggregateModel(
144+
itemsController: PointOfSalePreviewItemsController(),
145+
cardPresentPaymentService: CardPresentPaymentPreviewService(),
146+
orderController: PointOfSalePreviewOrderController())
147+
POSFloatingControlView(showExitPOSModal: .constant(false), showSupport: .constant(false))
148+
.environment(\.posBackgroundAppearance, .secondary)
149+
.environment(posModel)
150+
}
151+
152+
#endif

0 commit comments

Comments
 (0)