Skip to content

Commit cd381c4

Browse files
authored
Merge pull request #8078 from woocommerce/issue/8069-hide-ipp-banner
[Mobile Payments] Remove upsellCardReader banner from OrderList
2 parents 7bbef09 + 40fece8 commit cd381c4

File tree

4 files changed

+5
-122
lines changed

4 files changed

+5
-122
lines changed

RELEASE-NOTES.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
11.2
44
-----
55
- [*] The survey at the end of the login onboarding flow is no longer available. [https://github.com/woocommerce/woocommerce-ios/pull/8062]
6+
- [*] The Accept Payments Easily banner has been removed from the order list [https://github.com/woocommerce/woocommerce-ios/pull/8078]
67

78
11.1
89
-----

WooCommerce/Classes/ViewRelated/Orders/OrderListViewController.swift

Lines changed: 0 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -185,8 +185,6 @@ final class OrderListViewController: UIViewController, GhostableViewController {
185185
// Reload table view to update selected state on the list when changing rotation
186186
tableView.reloadData()
187187
}
188-
189-
updateUpsellCardReaderTopBannerVisibility(with: newCollection)
190188
}
191189

192190
/// Returns a function that creates cells for `dataSource`.
@@ -248,11 +246,6 @@ private extension OrderListViewController {
248246
switch topBannerType {
249247
case .none:
250248
self.hideTopBannerView()
251-
case .upsellCardReaders:
252-
// The banner is too large to be shown when the vertical size class is compact
253-
if self.traitCollection.verticalSizeClass == .regular {
254-
self.showUpsellCardReadersBanner()
255-
}
256249
case .error:
257250
self.setErrorTopBanner()
258251
case .orderCreation:
@@ -411,48 +404,6 @@ extension OrderListViewController: SyncingCoordinatorDelegate {
411404

412405
tableView.updateHeaderHeight()
413406
}
414-
415-
private func showUpsellCardReadersBanner() {
416-
let view = FeatureAnnouncementCardView(viewModel: viewModel.upsellCardReadersAnnouncementViewModel,
417-
dismiss: { [weak self] in
418-
self?.viewModel.dismissUpsellCardReadersBanner()
419-
}, callToAction: { [weak self] in
420-
self?.openCardReaderProductPageInWebView()
421-
})
422-
.background(Color(.listForeground))
423-
424-
guard let hostingView = UIHostingController(rootView: view).view else {
425-
return
426-
}
427-
428-
hostingView.translatesAutoresizingMaskIntoConstraints = false
429-
topBannerView = hostingView
430-
431-
showTopBannerView()
432-
}
433-
434-
private func openCardReaderProductPageInWebView() {
435-
let configuration = CardPresentConfigurationLoader().configuration
436-
let url = configuration.purchaseCardReaderUrl(utmProvider: viewModel.upsellCardReadersCampaign.utmProvider)
437-
let cardReaderWebview = WebViewSheet(
438-
viewModel: WebViewSheetViewModel(
439-
url: url,
440-
navigationTitle: UpsellCardReadersCampaign.Localization.cardReaderWebViewTitle,
441-
wpComAuthenticated: true),
442-
done: { [weak self] in
443-
self?.dismiss(animated: true)
444-
})
445-
let hostingController = UIHostingController(rootView: cardReaderWebview)
446-
present(hostingController, animated: true, completion: nil)
447-
}
448-
449-
func updateUpsellCardReaderTopBannerVisibility(with newCollection: UITraitCollection) {
450-
guard viewModel.topBanner == .upsellCardReaders else {
451-
return
452-
}
453-
454-
newCollection.verticalSizeClass == .regular ? showUpsellCardReadersBanner() : hideTopBannerView()
455-
}
456407
}
457408

458409
// MARK: - Spinner Helpers

WooCommerce/Classes/ViewRelated/Orders/OrderListViewModel.swift

Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,6 @@ final class OrderListViewModel {
2424
private let pushNotificationsManager: PushNotesManager
2525
private let notificationCenter: NotificationCenter
2626

27-
/// Used to show the upsell card readers banner and discern its visibility
28-
///
29-
let upsellCardReadersCampaign = UpsellCardReadersCampaign(source: .orderList)
30-
let upsellCardReadersAnnouncementViewModel: FeatureAnnouncementCardViewModel
31-
3227
/// Used for cancelling the observer for Remote Notifications when `self` is deallocated.
3328
///
3429
private var foregroundNotificationsSubscription: AnyCancellable?
@@ -107,11 +102,6 @@ final class OrderListViewModel {
107102
self.pushNotificationsManager = pushNotificationsManager
108103
self.notificationCenter = notificationCenter
109104
self.filters = filters
110-
self.upsellCardReadersAnnouncementViewModel =
111-
.init(analytics: ServiceLocator.analytics,
112-
configuration: upsellCardReadersCampaign.configuration,
113-
stores: stores)
114-
115105
}
116106

117107
deinit {
@@ -137,10 +127,6 @@ final class OrderListViewModel {
137127
loadOrdersBannerVisibility()
138128
}
139129

140-
func dismissUpsellCardReadersBanner() {
141-
bindTopBannerState()
142-
}
143-
144130
func dismissOrdersBanner() {
145131
let action = AppSettingsAction.updateFeedbackStatus(type: .ordersCreation,
146132
status: .dismissed) { [weak self] result in
@@ -293,20 +279,14 @@ extension OrderListViewModel {
293279
///
294280
private func bindTopBannerState() {
295281
let errorState = $hasErrorLoadingData.removeDuplicates()
296-
let cppConfiguration = CardPresentConfigurationLoader(stores: stores).configuration
297-
let isSupportedCountryForCPP = cppConfiguration.isSupportedCountry
298282

299-
Publishers.CombineLatest3(errorState, $hideOrdersBanners, upsellCardReadersAnnouncementViewModel.$shouldBeVisible)
300-
.map { hasError, hasDismissedOrdersBanners, upsellCardReadersBannerAvailable -> TopBanner in
283+
Publishers.CombineLatest(errorState, $hideOrdersBanners)
284+
.map { hasError, hasDismissedOrdersBanners -> TopBanner in
301285

302286
if hasError {
303287
return .error
304288
}
305289

306-
if upsellCardReadersBannerAvailable && isSupportedCountryForCPP {
307-
return .upsellCardReaders
308-
}
309-
310290
if hasDismissedOrdersBanners {
311291
return .none
312292
}
@@ -353,7 +333,6 @@ extension OrderListViewModel {
353333
///
354334
enum TopBanner {
355335
case error
356-
case upsellCardReaders
357336
case orderCreation
358337
case none
359338
}

WooCommerce/WooCommerceTests/ViewRelated/Orders/OrderListViewModelTests.swift

Lines changed: 2 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -239,59 +239,13 @@ final class OrderListViewModelTests: XCTestCase {
239239
XCTAssertFalse(resynchronizeRequested)
240240
}
241241

242-
func test_when_having_no_error_and_upsellCardReaders_banner_should_be_shown_shows_upsellCardReaders_banner_if_country_supported() {
243-
// Given
244-
stores.whenReceivingAction(ofType: AppSettingsAction.self) { action in
245-
switch action {
246-
case let .getFeatureAnnouncementVisibility(FeatureAnnouncementCampaign.upsellCardReaders, onCompletion):
247-
onCompletion(.success(true))
248-
default:
249-
break
250-
}
251-
}
252-
setupCountry(country: .us)
253-
let viewModel = OrderListViewModel(siteID: siteID, stores: stores, filters: nil)
254-
255-
// When
256-
viewModel.activate()
257-
258-
// Then
259-
waitUntil {
260-
viewModel.topBanner == .upsellCardReaders
261-
}
262-
}
263-
264-
func test_when_having_no_error_and_upsellCardReaders_banner_should_be_shown_shows_nothing_if_country_unsupported() {
265-
// Given
266-
stores.whenReceivingAction(ofType: AppSettingsAction.self) { action in
267-
switch action {
268-
case let .getFeatureAnnouncementVisibility(FeatureAnnouncementCampaign.upsellCardReaders, onCompletion):
269-
onCompletion(.success(true))
270-
default:
271-
break
272-
}
273-
}
274-
setupCountry(country: .es)
275-
let viewModel = OrderListViewModel(siteID: siteID, stores: stores, filters: nil)
276-
277-
// When
278-
viewModel.activate()
279-
280-
// Then
281-
waitUntil {
282-
viewModel.topBanner == .none
283-
}
284-
}
285-
286-
func test_when_having_no_error_and_upsellCardReaders_banner_should_not_be_shown_and_orders_banner_should_not_be_shown_shows_nothing() {
242+
func test_when_having_no_error__and_orders_banner_should_not_be_shown_shows_nothing() {
287243
// Given
288244
let viewModel = OrderListViewModel(siteID: siteID, stores: stores, filters: nil)
289245
stores.whenReceivingAction(ofType: AppSettingsAction.self) { action in
290246
switch action {
291247
case let .loadFeedbackVisibility(_, onCompletion):
292248
onCompletion(.success(false))
293-
case let .getFeatureAnnouncementVisibility(FeatureAnnouncementCampaign.upsellCardReaders, onCompletion):
294-
onCompletion(.success(false))
295249
default:
296250
break
297251
}
@@ -306,15 +260,13 @@ final class OrderListViewModelTests: XCTestCase {
306260
}
307261
}
308262

309-
func test_when_having_no_error_and_upsellCardReaders_banner_should_not_be_shown_and_orders_banner_should_be_shown_shows_orders_banner() {
263+
func test_when_having_no_error_and_orders_banner_should_be_shown_shows_orders_banner() {
310264
// Given
311265
let viewModel = OrderListViewModel(siteID: siteID, stores: stores, filters: nil)
312266
stores.whenReceivingAction(ofType: AppSettingsAction.self) { action in
313267
switch action {
314268
case let .loadFeedbackVisibility(_, onCompletion):
315269
onCompletion(.success(true))
316-
case let .getFeatureAnnouncementVisibility(FeatureAnnouncementCampaign.upsellCardReaders, onCompletion):
317-
onCompletion(.success(false))
318270
default:
319271
break
320272
}

0 commit comments

Comments
 (0)