@@ -108,15 +108,14 @@ private extension OrdersRootViewController {
108108 /// Search: Is always present.
109109 /// Simple Payments: Depends on the local feature flag, experimental feature toggle and the inPersonPayments state.
110110 ///
111- func configureNavigationButtons( isSimplePaymentsExperimentalToggleEnabled: Bool ) {
112- let isOrderCreationEnabled = ServiceLocator . featureFlagService. isFeatureFlagEnabled ( . orderCreation)
111+ func configureNavigationButtons( isSimplePaymentsExperimentalToggleEnabled: Bool , isOrderCreationExperimentalToggleEnabled: Bool ) {
113112 let shouldShowSimplePaymentsButton : Bool = {
114113 let isInPersonPaymentsConfigured = inPersonPaymentsUseCase. state == . completed
115114 return isSimplePaymentsExperimentalToggleEnabled && isInPersonPaymentsConfigured
116115 } ( )
117116 let buttons : [ UIBarButtonItem ? ] = [
118117 ordersViewController. createSearchBarButtonItem ( ) ,
119- ordersViewController. createAddOrderItem ( isOrderCreationEnabled: isOrderCreationEnabled ,
118+ ordersViewController. createAddOrderItem ( isOrderCreationEnabled: isOrderCreationExperimentalToggleEnabled ,
120119 shouldShowSimplePaymentsButton: shouldShowSimplePaymentsButton)
121120 ]
122121 navigationItem. rightBarButtonItems = buttons. compactMap { $0 }
@@ -164,11 +163,29 @@ private extension OrdersRootViewController {
164163 /// Fetches the latest value of the SimplePayments experimental feature toggle and re configures navigation buttons.
165164 ///
166165 func fetchSimplePaymentsExperimentalToggleAndConfigureNavigationButtons( ) {
167- let action = AppSettingsAction . loadSimplePaymentsSwitchState { [ weak self] result in
168- let isEnabled = ( try ? result. get ( ) ) ?? false
169- self ? . configureNavigationButtons ( isSimplePaymentsExperimentalToggleEnabled: isEnabled)
166+ let group = DispatchGroup ( )
167+
168+ var isSimplePaymentsEnabled = false
169+ var isOrderCreationEnabled = false
170+
171+ group. enter ( )
172+ let simplePaymentsAction = AppSettingsAction . loadSimplePaymentsSwitchState { result in
173+ isSimplePaymentsEnabled = ( try ? result. get ( ) ) ?? false
174+ group. leave ( )
175+ }
176+ ServiceLocator . stores. dispatch ( simplePaymentsAction)
177+
178+ group. enter ( )
179+ let orderCreationAction = AppSettingsAction . loadOrderCreationSwitchState { result in
180+ isOrderCreationEnabled = ( try ? result. get ( ) ) ?? false
181+ group. leave ( )
182+ }
183+ ServiceLocator . stores. dispatch ( orderCreationAction)
184+
185+ group. notify ( queue: . main) { [ weak self] in
186+ self ? . configureNavigationButtons ( isSimplePaymentsExperimentalToggleEnabled: isSimplePaymentsEnabled,
187+ isOrderCreationExperimentalToggleEnabled: isOrderCreationEnabled)
170188 }
171- ServiceLocator . stores. dispatch ( action)
172189 }
173190}
174191
0 commit comments