Skip to content

Commit 1083d9a

Browse files
committed
Make logic more readable
1 parent 4b1235e commit 1083d9a

File tree

1 file changed

+17
-13
lines changed

1 file changed

+17
-13
lines changed

Modules/Sources/PointOfSale/Presentation/Orders/POSOrderDetailsView.swift

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ struct POSOrderDetailsView: View {
3333
title: POSOrderListView.Localization.orderTitle(order.number),
3434
backButtonConfiguration: shouldShowBackButton ? .init(state: .enabled, action: onBack) : nil,
3535
trailingContent: {
36-
actionsSection(actions: availableActions)
36+
actionsSection(setup: availableActionsSetup)
3737
},
3838
bottomContent: {
3939
headerBottomContent(for: order)
@@ -426,29 +426,33 @@ private extension POSOrderDetailsView {
426426
}
427427
}
428428

429-
var availableActions: [OrderDetailsAction] {
430-
OrderDetailsAction.allCases
429+
struct OrderDetailsActionsSetup {
430+
let primary: OrderDetailsAction?
431+
let secondary: [OrderDetailsAction]
432+
}
433+
434+
var availableActionsSetup: OrderDetailsActionsSetup {
435+
let available = OrderDetailsAction.allCases
431436
.filter { $0.isAvailable(for: order, flags: featureFlags) }
432437
.sorted { $0.priority > $1.priority }
438+
439+
let primary = available.first
440+
let secondary = Array(available.dropFirst())
441+
442+
return OrderDetailsActionsSetup(primary: primary, secondary: secondary)
433443
}
434444

435445
@ViewBuilder
436-
func actionsSection(actions: [OrderDetailsAction]) -> some View {
437-
if actions.isEmpty {
438-
EmptyView()
439-
} else {
446+
func actionsSection(setup: OrderDetailsActionsSetup) -> some View {
447+
if let primary = setup.primary {
440448
HStack(spacing: POSSpacing.large) {
441-
let primary = actions[0]
442449
Button(primary.title, action: handler(for: primary))
443450
.buttonStyle(POSFilledButtonStyle(size: .extraSmall))
444451
.accessibilityHint(primary.accessibilityHint)
445-
.lineLimit(1)
446-
.minimumScaleFactor(0.5)
447452

448-
let overflow = actions.dropFirst()
449-
if !overflow.isEmpty {
453+
if !setup.secondary.isEmpty {
450454
Menu {
451-
ForEach(Array(overflow)) { action in
455+
ForEach(setup.secondary) { action in
452456
Button(action.title, action: handler(for: action))
453457
.accessibilityHint(action.accessibilityHint)
454458
}

0 commit comments

Comments
 (0)