Skip to content

Commit 662dcf7

Browse files
committed
Pass JCP feature flag to AccountAction.synchronizeSites and AccountAction.loadAndSynchronizeSiteIfNeeded for JCP workaround.
1 parent 910c01a commit 662dcf7

File tree

4 files changed

+24
-13
lines changed

4 files changed

+24
-13
lines changed

WooCommerce/Classes/Authentication/Epilogue/StorePickerViewController.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,10 @@ private extension StorePickerViewController {
274274
//
275275
private extension StorePickerViewController {
276276
func synchronizeSites(onCompletion: @escaping (Result<Void, Error>) -> Void) {
277-
let action = AccountAction.synchronizeSites(selectedSiteID: currentlySelectedSite?.siteID, onCompletion: onCompletion)
277+
let action = AccountAction
278+
.synchronizeSites(selectedSiteID: currentlySelectedSite?.siteID,
279+
isJetpackConnectionPackageSupported: ServiceLocator.featureFlagService.isFeatureFlagEnabled(.jetpackConnectionPackageSupport),
280+
onCompletion: onCompletion)
278281
ServiceLocator.stores.dispatch(action)
279282
}
280283
}

WooCommerce/Classes/Yosemite/DefaultStoresManager.swift

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,10 @@ private extension DefaultStoresManager {
284284
/// Synchronizes the WordPress.com Sites, associated with the current credentials.
285285
///
286286
func synchronizeSites(onCompletion: @escaping (Result<Void, Error>) -> Void) {
287-
let action = AccountAction.synchronizeSites(selectedSiteID: sessionManager.defaultStoreID, onCompletion: onCompletion)
287+
let action = AccountAction
288+
.synchronizeSites(selectedSiteID: sessionManager.defaultStoreID,
289+
isJetpackConnectionPackageSupported: ServiceLocator.featureFlagService.isFeatureFlagEnabled(.jetpackConnectionPackageSupport),
290+
onCompletion: onCompletion)
288291
dispatch(action)
289292
}
290293

@@ -449,7 +452,10 @@ private extension DefaultStoresManager {
449452
/// If the site does not exist in storage, it synchronizes the site asynchronously.
450453
///
451454
func restoreSessionSiteAndSynchronizeIfNeeded(with siteID: Int64) {
452-
let action = AccountAction.loadAndSynchronizeSiteIfNeeded(siteID: siteID) { [weak self] result in
455+
let isJCPEnabled = ServiceLocator.featureFlagService.isFeatureFlagEnabled(.jetpackConnectionPackageSupport)
456+
let action = AccountAction
457+
.loadAndSynchronizeSiteIfNeeded(siteID: siteID,
458+
isJetpackConnectionPackageSupported: isJCPEnabled) { [weak self] result in
453459
guard let self = self else { return }
454460
guard case .success(let site) = result else {
455461
return

Yosemite/Yosemite/Actions/AccountAction.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@ import Networking
77
//
88
public enum AccountAction: Action {
99
case loadAccount(userID: Int64, onCompletion: (Account?) -> Void)
10-
case loadAndSynchronizeSiteIfNeeded(siteID: Int64, onCompletion: (Result<Site, Error>) -> Void)
10+
case loadAndSynchronizeSiteIfNeeded(siteID: Int64, isJetpackConnectionPackageSupported: Bool, onCompletion: (Result<Site, Error>) -> Void)
1111
case synchronizeAccount(onCompletion: (Result<Account, Error>) -> Void)
1212
case synchronizeAccountSettings(userID: Int64, onCompletion: (Result<AccountSettings, Error>) -> Void)
13-
case synchronizeSites(selectedSiteID: Int64?, onCompletion: (Result<Void, Error>) -> Void)
13+
case synchronizeSites(selectedSiteID: Int64?, isJetpackConnectionPackageSupported: Bool, onCompletion: (Result<Void, Error>) -> Void)
1414
case synchronizeSitePlan(siteID: Int64, onCompletion: (Result<Void, Error>) -> Void)
1515
case updateAccountSettings(userID: Int64, tracksOptOut: Bool, onCompletion: (Result<Void, Error>) -> Void)
1616
}

Yosemite/Yosemite/Stores/AccountStore.swift

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,16 @@ public class AccountStore: Store {
4343
switch action {
4444
case .loadAccount(let userID, let onCompletion):
4545
loadAccount(userID: userID, onCompletion: onCompletion)
46-
case .loadAndSynchronizeSiteIfNeeded(let siteID, let onCompletion):
47-
loadAndSynchronizeSiteIfNeeded(siteID: siteID, onCompletion: onCompletion)
46+
case .loadAndSynchronizeSiteIfNeeded(let siteID, let isJetpackConnectionPackageSupported, let onCompletion):
47+
loadAndSynchronizeSiteIfNeeded(siteID: siteID, isJetpackConnectionPackageSupported: isJetpackConnectionPackageSupported, onCompletion: onCompletion)
4848
case .synchronizeAccount(let onCompletion):
4949
synchronizeAccount(onCompletion: onCompletion)
5050
case .synchronizeAccountSettings(let userID, let onCompletion):
5151
synchronizeAccountSettings(userID: userID, onCompletion: onCompletion)
52-
case .synchronizeSites(let selectedSiteID, let onCompletion):
53-
synchronizeSites(selectedSiteID: selectedSiteID, onCompletion: onCompletion)
52+
case .synchronizeSites(let selectedSiteID, let isJetpackConnectionPackageSupported, let onCompletion):
53+
synchronizeSites(selectedSiteID: selectedSiteID,
54+
isJetpackConnectionPackageSupported: isJetpackConnectionPackageSupported,
55+
onCompletion: onCompletion)
5456
case .synchronizeSitePlan(let siteID, let onCompletion):
5557
synchronizeSitePlan(siteID: siteID, onCompletion: onCompletion)
5658
case .updateAccountSettings(let userID, let tracksOptOut, let onCompletion):
@@ -92,11 +94,11 @@ private extension AccountStore {
9294

9395
/// Returns the site if it exists in storage already. Otherwise, it synchronizes the WordPress.com sites and returns the site if it exists.
9496
///
95-
func loadAndSynchronizeSiteIfNeeded(siteID: Int64, onCompletion: @escaping (Result<Site, Error>) -> Void) {
97+
func loadAndSynchronizeSiteIfNeeded(siteID: Int64, isJetpackConnectionPackageSupported: Bool, onCompletion: @escaping (Result<Site, Error>) -> Void) {
9698
if let site = storageManager.viewStorage.loadSite(siteID: siteID)?.toReadOnly() {
9799
onCompletion(.success(site))
98100
} else {
99-
synchronizeSites(selectedSiteID: siteID) { [weak self] result in
101+
synchronizeSites(selectedSiteID: siteID, isJetpackConnectionPackageSupported: isJetpackConnectionPackageSupported) { [weak self] result in
100102
guard let self = self else { return }
101103
guard let site = self.storageManager.viewStorage.loadSite(siteID: siteID)?.toReadOnly() else {
102104
return onCompletion(.failure(SynchronizeSiteError.unknownSite))
@@ -108,7 +110,7 @@ private extension AccountStore {
108110

109111
/// Synchronizes the WordPress.com sites associated with the Network's Auth Token.
110112
///
111-
func synchronizeSites(selectedSiteID: Int64?, onCompletion: @escaping (Result<Void, Error>) -> Void) {
113+
func synchronizeSites(selectedSiteID: Int64?, isJetpackConnectionPackageSupported: Bool, onCompletion: @escaping (Result<Void, Error>) -> Void) {
112114
remote.loadSites()
113115
.flatMap { result -> AnyPublisher<Result<[Site], Error>, Never> in
114116
switch result {
@@ -124,7 +126,7 @@ private extension AccountStore {
124126
// As a workaround, we need to make 2 other API requests (ref p91TBi-6lK-p2):
125127
// - Check if WooCommerce plugin is active via `wc/v3/settings` endpoint
126128
// - Fetch site metadata like the site name, description, and URL via `wp/v2/settings` endpoint
127-
if site.isJetpackCPConnected {
129+
if site.isJetpackCPConnected, isJetpackConnectionPackageSupported {
128130
let wcAvailabilityPublisher = self.remote.checkIfWooCommerceIsActive(for: site.siteID)
129131
let wpSiteSettingsPublisher = self.remote.fetchWordPressSiteSettings(for: site.siteID)
130132
return Publishers.Zip3(sitePublisher, wcAvailabilityPublisher, wpSiteSettingsPublisher)

0 commit comments

Comments
 (0)