Skip to content

Commit 349779f

Browse files
committed
Merge branch 'WOOMOB-1363-hide-POS-tab-for-CIAB-sites' into woomob-1231-ios-bookings-tab
2 parents 2115397 + 8b32ea3 commit 349779f

File tree

1 file changed

+38
-23
lines changed

1 file changed

+38
-23
lines changed

WooCommerce/Classes/ViewRelated/MainTabBarController.swift

Lines changed: 38 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ final class MainTabBarController: UITabBarController {
136136
private var hubMenuTabCoordinator: HubMenuCoordinator?
137137

138138
private var cancellableSiteID: AnyCancellable?
139+
private var cancellableSite: AnyCancellable?
139140
private let featureFlagService: FeatureFlagService
140141
private let noticePresenter: NoticePresenter
141142
private let productImageUploader: ProductImageUploaderProtocol
@@ -227,6 +228,7 @@ final class MainTabBarController: UITabBarController {
227228
// POS and Bookings tabs are hidden by default.
228229
updateTabViewControllers(isPOSTabVisible: false, isBookingsTabVisible: false)
229230
observeSiteIDForViewControllers()
231+
observeSiteForConditionalTabs()
230232
observeProductImageUploadStatusUpdates()
231233

232234
startListeningToHubMenuTabBadgeUpdates()
@@ -766,20 +768,51 @@ private extension MainTabBarController {
766768
}
767769
}
768770

771+
func observeSiteForConditionalTabs() {
772+
cancellableSite = stores.site
773+
.compactMap { $0 }
774+
.sink { [weak self] site in
775+
guard let self else {
776+
return
777+
}
778+
779+
observeConditionalTabsAvailabilityWith(site)
780+
}
781+
}
782+
769783
func observeSiteIDForViewControllers() {
770-
cancellableSiteID = stores.site.sink { [weak self] site in
784+
cancellableSiteID = stores.siteID.sink { [weak self] siteID in
771785
guard let self = self else {
772786
return
773787
}
774-
self.updateViewControllers(site: site)
788+
self.updateViewControllers(siteID: siteID)
775789
}
776790
}
777791

778-
func updateViewControllers(site: Site?) {
779-
guard let site else {
792+
func observeConditionalTabsAvailabilityWith(_ site: Site) {
793+
// Configures POS tab coordinator once per logged in site session.
794+
let posEligibilityChecker = posEligibilityCheckerFactory(site)
795+
self.posEligibilityChecker = posEligibilityChecker
796+
posTabCoordinator = POSTabCoordinator(
797+
siteID: site.siteID,
798+
tabContainerController: posContainerController,
799+
viewControllerToPresent: self,
800+
storesManager: stores,
801+
eligibilityChecker: posEligibilityChecker
802+
)
803+
804+
observePOSEligibilityForPOSTabVisibility(siteID: site.siteID)
805+
806+
// Configures Booking tab.
807+
let bookingsViewController = createBookingsViewController(siteID: site.siteID)
808+
bookingsContainerController.wrappedController = bookingsViewController
809+
observeBookingsEligibilityForBookingsTabVisibility(site: site)
810+
}
811+
812+
func updateViewControllers(siteID: Int64?) {
813+
guard let siteID else {
780814
return
781815
}
782-
let siteID = site.siteID
783816

784817
// Update view model with `siteID` to query correct Orders Status
785818
viewModel.configureOrdersStatusesListener(for: siteID)
@@ -798,21 +831,6 @@ private extension MainTabBarController {
798831
navigateToContent: { _ in })]
799832
}
800833

801-
// Configures Booking tab.
802-
let bookingsViewController = createBookingsViewController(siteID: site.siteID)
803-
bookingsContainerController.wrappedController = bookingsViewController
804-
805-
// Configures POS tab coordinator once per logged in site session.
806-
let posEligibilityChecker = posEligibilityCheckerFactory(site)
807-
self.posEligibilityChecker = posEligibilityChecker
808-
posTabCoordinator = POSTabCoordinator(
809-
siteID: siteID,
810-
tabContainerController: posContainerController,
811-
viewControllerToPresent: self,
812-
storesManager: stores,
813-
eligibilityChecker: posEligibilityChecker
814-
)
815-
816834
// Configure POS catalog sync coordinator for local catalog syncing
817835
// Get POS catalog sync coordinator (will be nil if feature flag disabled or not authenticated)
818836
posCatalogSyncCoordinator = ServiceLocator.posCatalogSyncCoordinator
@@ -826,9 +844,6 @@ private extension MainTabBarController {
826844

827845
// Set dashboard to be the default tab.
828846
selectedIndex = WooTab.myStore.visibleIndex(isPOSTabVisible: isPOSTabVisible, isBookingsTabVisible: isBookingsTabVisible)
829-
830-
observePOSEligibilityForPOSTabVisibility(siteID: siteID)
831-
observeBookingsEligibilityForBookingsTabVisibility(site: site)
832847
}
833848

834849
func createDashboardViewController(siteID: Int64) -> UIViewController {

0 commit comments

Comments
 (0)