@@ -27,10 +27,12 @@ struct AppScene: View {
2727 @StateObject private var transferTracking : TransferTrackingManager
2828 @StateObject private var channelDetails = ChannelDetailsViewModel . shared
2929 @StateObject private var migrations = MigrationsService . shared
30+ @StateObject private var languageManager = LanguageManager . shared
3031 @StateObject private var pubkyProfile = PubkyProfileManager ( )
3132 @StateObject private var contactsManager = ContactsManager ( )
3233 @State private var keyboardManager = KeyboardManager ( )
3334 @State private var trezorViewModel = TrezorViewModel ( )
35+ @State private var calculatorInputManager = CalculatorInputManager ( )
3436
3537 @State private var hideSplash = false
3638 @State private var removeSplash = false
@@ -54,6 +56,7 @@ struct AppScene: View {
5456
5557 // Run app data migrations before any feature code loads migrated state
5658 AppDataMigrations . run ( )
59+ PaykitFeatureFlags . enforceBuildAvailability ( )
5760
5861 _app = StateObject ( wrappedValue: AppViewModel ( sheetViewModel: sheetViewModel, navigationViewModel: navigationViewModel) )
5962 _sheets = StateObject ( wrappedValue: sheetViewModel)
@@ -146,15 +149,24 @@ struct AppScene: View {
146149 . environmentObject ( contactsManager)
147150 . environment ( keyboardManager)
148151 . environment ( trezorViewModel)
152+ . environment ( calculatorInputManager)
149153 . onChange ( of: pubkyProfile. authState, initial: true ) { _, authState in
150154 if authState == . authenticated, let pk = pubkyProfile. publicKey {
151- Task { try ? await contactsManager. loadContacts ( for: pk) }
155+ Task {
156+ try ? await contactsManager. loadContacts ( for: pk)
157+ if !PaykitFeatureFlags. isUIEnabled, wallet. walletExists == true {
158+ await retryPendingPaykitEndpointRemoval ( )
159+ }
160+ }
152161 } else if authState == . idle {
153162 contactsManager. reset ( )
154163 }
155164 }
156165 . onReceive ( contactsManager. $contacts) { contacts in
157- guard wallet. walletExists == true , pubkyProfile. authState == . authenticated else { return }
166+ guard PaykitFeatureFlags . isUIEnabled,
167+ wallet. walletExists == true ,
168+ pubkyProfile. authState == . authenticated
169+ else { return }
158170 let publicKeys = contacts. map ( \. publicKey)
159171 Task {
160172 await PrivatePaykitService . shared. prepareSavedContacts ( publicKeys, wallet: wallet)
@@ -394,6 +406,9 @@ struct AppScene: View {
394406 do {
395407 try await wallet. start ( )
396408 try await activity. syncLdkNodePayments ( )
409+ if !PaykitFeatureFlags. isUIEnabled {
410+ await retryPendingPaykitEndpointRemoval ( )
411+ }
397412
398413 // Start watching pending orders after wallet is ready
399414 await blocktank. startWatchingPendingOrders ( transferViewModel: transfer)
@@ -555,6 +570,10 @@ struct AppScene: View {
555570 app. markAppStatusInit ( )
556571 BackupService . shared. startObservingBackups ( )
557572 Task {
573+ if !PaykitFeatureFlags. isUIEnabled {
574+ await retryPendingPaykitEndpointRemoval ( )
575+ }
576+ guard PaykitFeatureFlags . isUIEnabled else { return }
558577 await PrivatePaykitAddressReservationStore . shared. reconcileReservedIndexesWithLdk ( )
559578 await PrivatePaykitService . shared. prepareSavedContacts (
560579 contactsManager. contacts. map ( \. publicKey) ,
@@ -587,20 +606,26 @@ struct AppScene: View {
587606 await clearDeliveredNotifications ( )
588607 await LightningService . shared. reconnectPeers ( )
589608 try ? await wallet. sync ( )
590- await PrivatePaykitService . shared. retryPendingEndpointRemoval (
591- wallet: wallet,
592- savedPublicKeys: contactsManager. contacts. map ( \. publicKey)
593- )
609+ await retryPendingPaykitEndpointRemoval ( )
594610 await wallet. refreshPublicPaykitEndpointsOnForeground ( )
595- await PrivatePaykitService . shared. refreshSavedContactEndpoints (
596- for: contactsManager. contacts. map ( \. publicKey) ,
597- wallet: wallet
598- )
611+ if PaykitFeatureFlags . isUIEnabled {
612+ await PrivatePaykitService . shared. refreshSavedContactEndpoints (
613+ for: contactsManager. contacts. map ( \. publicKey) ,
614+ wallet: wallet
615+ )
616+ }
599617 }
600618 }
601619 }
602620 }
603621
622+ private func retryPendingPaykitEndpointRemoval( ) async {
623+ await PrivatePaykitService . shared. retryPendingEndpointRemoval (
624+ wallet: wallet,
625+ savedPublicKeys: contactsManager. contacts. map ( \. publicKey)
626+ )
627+ }
628+
604629 /// Removes all delivered notifications from Notification Center so the app can handle them when opened.
605630 private func clearDeliveredNotifications( ) async {
606631 let center = UNUserNotificationCenter . current ( )
0 commit comments