From 3b3441dcb72e2aae54fadf0224fcb1d8c2cd73ca Mon Sep 17 00:00:00 2001 From: iamgabrielma Date: Mon, 30 Jun 2025 12:27:08 +0700 Subject: [PATCH] Update OrderTableViewCell with new label for sales channel --- .../DefaultFeatureFlagService.swift | 2 +- .../Extensions/UILabel+SalesChannel.swift | 27 +++++++++++++++ .../Orders/Cells/OrderListCellViewModel.swift | 7 ++++ .../Orders/Cells/OrderTableViewCell.swift | 15 +++++++++ .../Orders/Cells/OrderTableViewCell.xib | 33 ++++++++++--------- .../WooCommerce.xcodeproj/project.pbxproj | 4 +++ 6 files changed, 71 insertions(+), 17 deletions(-) create mode 100644 WooCommerce/Classes/Extensions/UILabel+SalesChannel.swift diff --git a/Modules/Sources/Experiments/DefaultFeatureFlagService.swift b/Modules/Sources/Experiments/DefaultFeatureFlagService.swift index 8d0c26634fc..e713a59aaf5 100644 --- a/Modules/Sources/Experiments/DefaultFeatureFlagService.swift +++ b/Modules/Sources/Experiments/DefaultFeatureFlagService.swift @@ -94,7 +94,7 @@ public struct DefaultFeatureFlagService: FeatureFlagService { case .pointOfSaleAsATabi1: return true case .pointOfSaleOrdersi1: - return buildConfig == .localDeveloper || buildConfig == .alpha + return false default: return true } diff --git a/WooCommerce/Classes/Extensions/UILabel+SalesChannel.swift b/WooCommerce/Classes/Extensions/UILabel+SalesChannel.swift new file mode 100644 index 00000000000..d89b2861c0b --- /dev/null +++ b/WooCommerce/Classes/Extensions/UILabel+SalesChannel.swift @@ -0,0 +1,27 @@ +import UIKit + +extension UILabel { + /// Applies the appropriate style to sales channel label + /// + func applySalesChannelStyle() { + applyFootnoteStyle() + applyLayerSettings() + backgroundColor = .lightGray + textColor = .black + } + + /// Setup: Layer + /// + private func applyLayerSettings() { + layer.masksToBounds = true + layer.borderWidth = Layout.borderWidth + layer.cornerRadius = Layout.cornerRadius + } +} + +private extension UILabel { + enum Layout { + static let borderWidth = CGFloat(0.0) + static let cornerRadius = CGFloat(4.0) + } +} diff --git a/WooCommerce/Classes/ViewRelated/Orders/Cells/OrderListCellViewModel.swift b/WooCommerce/Classes/ViewRelated/Orders/Cells/OrderListCellViewModel.swift index a51496b912e..526724b6047 100644 --- a/WooCommerce/Classes/ViewRelated/Orders/Cells/OrderListCellViewModel.swift +++ b/WooCommerce/Classes/ViewRelated/Orders/Cells/OrderListCellViewModel.swift @@ -76,6 +76,13 @@ struct OrderListCellViewModel { return order.status.localizedName } + /// Textual representation of the sales channel + /// + var salesChannel: String { + // Temporarily hardcoded. Will be handled on WOOMOB-661 + return "POS" + } + /// The localized unabbreviated total for a given order item, which includes the currency. /// /// Example: $48,415,504.20 diff --git a/WooCommerce/Classes/ViewRelated/Orders/Cells/OrderTableViewCell.swift b/WooCommerce/Classes/ViewRelated/Orders/Cells/OrderTableViewCell.swift index bb9fd29d145..abcb4774e3c 100644 --- a/WooCommerce/Classes/ViewRelated/Orders/Cells/OrderTableViewCell.swift +++ b/WooCommerce/Classes/ViewRelated/Orders/Cells/OrderTableViewCell.swift @@ -23,6 +23,10 @@ final class OrderTableViewCell: UITableViewCell & SearchResultCell { /// @IBOutlet private var paymentStatusLabel: PaddedLabel! + /// Sales channel + /// + @IBOutlet private var salesChannelLabel: PaddedLabel! + /// Top-level stack view that contains the stack view of title and payment status labels, and total price label. /// @IBOutlet weak var contentStackView: UIStackView! @@ -53,6 +57,14 @@ final class OrderTableViewCell: UITableViewCell & SearchResultCell { paymentStatusLabel.applyStyle(for: viewModel.status) paymentStatusLabel.text = viewModel.statusString + if ServiceLocator.featureFlagService.isFeatureFlagEnabled(.pointOfSaleOrdersi1) { + salesChannelLabel.isHidden = false + salesChannelLabel.applySalesChannelStyle() + salesChannelLabel.text = viewModel.salesChannel + } else { + salesChannelLabel.isHidden = true + } + accessoryType = .none accessoryView = viewModel.accessoryView @@ -147,5 +159,8 @@ private extension OrderTableViewCell { paymentStatusLabel.numberOfLines = 0 dateCreatedLabel.applyCaption1Style() + + salesChannelLabel.applyFootnoteStyle() + salesChannelLabel.numberOfLines = 1 } } diff --git a/WooCommerce/Classes/ViewRelated/Orders/Cells/OrderTableViewCell.xib b/WooCommerce/Classes/ViewRelated/Orders/Cells/OrderTableViewCell.xib index af358ad43d0..ddf03f84d74 100644 --- a/WooCommerce/Classes/ViewRelated/Orders/Cells/OrderTableViewCell.xib +++ b/WooCommerce/Classes/ViewRelated/Orders/Cells/OrderTableViewCell.xib @@ -1,9 +1,9 @@ - + - + @@ -17,10 +17,10 @@ - + - + - - + + + - - - - - - - +