From 0ab8d02620f4bd6137b58b7eb5644c452324ca3e Mon Sep 17 00:00:00 2001 From: Evgeny Aleksandrov Date: Mon, 2 Jan 2023 21:06:30 +0300 Subject: [PATCH 1/3] Add productsBulkEditing feature flag --- Experiments/Experiments/DefaultFeatureFlagService.swift | 2 ++ Experiments/Experiments/FeatureFlag.swift | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/Experiments/Experiments/DefaultFeatureFlagService.swift b/Experiments/Experiments/DefaultFeatureFlagService.swift index adad4f99bea..da53ba2a912 100644 --- a/Experiments/Experiments/DefaultFeatureFlagService.swift +++ b/Experiments/Experiments/DefaultFeatureFlagService.swift @@ -60,6 +60,8 @@ public struct DefaultFeatureFlagService: FeatureFlagService { return false case .generateAllVariations: return buildConfig == .localDeveloper || buildConfig == .alpha + case .productsBulkEditing: + return buildConfig == .localDeveloper || buildConfig == .alpha default: return true } diff --git a/Experiments/Experiments/FeatureFlag.swift b/Experiments/Experiments/FeatureFlag.swift index 32a7b4eb254..1ad15d1187c 100644 --- a/Experiments/Experiments/FeatureFlag.swift +++ b/Experiments/Experiments/FeatureFlag.swift @@ -141,4 +141,8 @@ public enum FeatureFlag: Int { /// Allows merchants to create all variations from a single button /// case generateAllVariations + + /// Bulk editing of status and price in products list + /// + case productsBulkEditing } From 8c1f1f9694fd221f71880a4305d597a0024382a7 Mon Sep 17 00:00:00 2001 From: Evgeny Aleksandrov Date: Mon, 2 Jan 2023 21:06:30 +0300 Subject: [PATCH 2/3] Add multiselect icon --- WooCommerce/Classes/Extensions/UIImage+Woo.swift | 6 ++++++ .../icon-multiselect.imageset/Contents.json | 15 +++++++++++++++ .../icon-multiselect.pdf | Bin 0 -> 1866 bytes .../WooCommerceTests/Extensions/IconsTests.swift | 4 ++++ 4 files changed, 25 insertions(+) create mode 100644 WooCommerce/Resources/Images.xcassets/icon-multiselect.imageset/Contents.json create mode 100644 WooCommerce/Resources/Images.xcassets/icon-multiselect.imageset/icon-multiselect.pdf diff --git a/WooCommerce/Classes/Extensions/UIImage+Woo.swift b/WooCommerce/Classes/Extensions/UIImage+Woo.swift index 9a42b0d57e6..7fdaf1dae1c 100644 --- a/WooCommerce/Classes/Extensions/UIImage+Woo.swift +++ b/WooCommerce/Classes/Extensions/UIImage+Woo.swift @@ -704,6 +704,12 @@ extension UIImage { return ellipsisImage.imageWithTintColor(tintColor)! } + /// Select multiple items icon + /// + static var multiSelectIcon: UIImage { + return UIImage(named: "icon-multiselect")! + } + /// Payment celebration /// static var celebrationImage: UIImage { diff --git a/WooCommerce/Resources/Images.xcassets/icon-multiselect.imageset/Contents.json b/WooCommerce/Resources/Images.xcassets/icon-multiselect.imageset/Contents.json new file mode 100644 index 00000000000..e97433ea5d1 --- /dev/null +++ b/WooCommerce/Resources/Images.xcassets/icon-multiselect.imageset/Contents.json @@ -0,0 +1,15 @@ +{ + "images" : [ + { + "filename" : "icon-multiselect.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/WooCommerce/Resources/Images.xcassets/icon-multiselect.imageset/icon-multiselect.pdf b/WooCommerce/Resources/Images.xcassets/icon-multiselect.imageset/icon-multiselect.pdf new file mode 100644 index 0000000000000000000000000000000000000000..184329714cb041c4f8994e38e4bf14601c472ca9 GIT binary patch literal 1866 zcmZvdO>fjN5Qgvm6?3W7BGvKuGm)xFw513EqHMWU975J@7iAOJq^R)g8D}@Px7{38 z&NH5OK4Q-v-CSLtB6o}-2B z|EwCncz*$xxA|K$u-^>1m>v-G;xw*a+oGviGr?V1N@d7X3Rh~1%e6w~6bwzr(9D8y zvCg2Jt!)McFDs*!1k@abHnvJ>p_)BX5-h4j)>2-Rh)Ax{81*BG0uA}?I*}p;u^DC= zP5KC_!l;r^!(!P9wizsElU2;S%=-yPc(V_;iTqW-4&pN{ddDgtW%e z`J$2(Iu-O4w^|tEh-u|yr9gA(lvFAZE76ohtSc$);8!~7aLP+Nt1!gVlCG+x9H=^J zD030&-1T9imPUlsp}@HhNIPYzTwuFC(CSt18agTWZ&=5^vM}~`Gi@G#Vb*O2BT8xF zT+|WMye!^!T|W+R_nqb^J;k@bzdRH-^@HDm&wjb8FZyS=J1{fSZAhzGY2kwUPQb{r4=+MmGjYI(A4O0nqs5kkRJgNxhMKTp|D|9bUi PoXSC~H9I Date: Mon, 2 Jan 2023 21:06:30 +0300 Subject: [PATCH 3/3] Add bulk editing button behind feature flag --- .../Products/ProductsViewController.swift | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/WooCommerce/Classes/ViewRelated/Products/ProductsViewController.swift b/WooCommerce/Classes/ViewRelated/Products/ProductsViewController.swift index d3726d9c08a..087cbe88975 100644 --- a/WooCommerce/Classes/ViewRelated/Products/ProductsViewController.swift +++ b/WooCommerce/Classes/ViewRelated/Products/ProductsViewController.swift @@ -262,6 +262,10 @@ private extension ProductsViewController { } coordinatingController.start() } + + @objc func startBulkEditing() { + // TODO-8517: implement selection state + } } // MARK: - View Configuration @@ -319,6 +323,25 @@ private extension ProductsViewController { }() rightBarButtonItems.append(searchItem) + if ServiceLocator.featureFlagService.isFeatureFlagEnabled(.productsBulkEditing) { + let bulkEditItem: UIBarButtonItem = { + let button = UIBarButtonItem(image: .multiSelectIcon, + style: .plain, + target: self, + action: #selector(startBulkEditing)) + button.accessibilityTraits = .button + button.accessibilityLabel = NSLocalizedString("Edit products", + comment: "Action to start bulk editing of products") + button.accessibilityHint = NSLocalizedString( + "Edit status or price for multiple products at once", + comment: "VoiceOver accessibility hint, informing the user the button can be used to bulk edit products" + ) + + return button + }() + rightBarButtonItems.append(bulkEditItem) + } + navigationItem.rightBarButtonItems = rightBarButtonItems }