@@ -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)
@@ -385,6 +397,9 @@ struct AppScene: View {
385397 do {
386398 try await wallet. start ( )
387399 try await activity. syncLdkNodePayments ( )
400+ if !PaykitFeatureFlags. isUIEnabled {
401+ await retryPendingPaykitEndpointRemoval ( )
402+ }
388403
389404 // Start watching pending orders after wallet is ready
390405 await blocktank. startWatchingPendingOrders ( transferViewModel: transfer)
@@ -546,6 +561,10 @@ struct AppScene: View {
546561 app. markAppStatusInit ( )
547562 BackupService . shared. startObservingBackups ( )
548563 Task {
564+ if !PaykitFeatureFlags. isUIEnabled {
565+ await retryPendingPaykitEndpointRemoval ( )
566+ }
567+ guard PaykitFeatureFlags . isUIEnabled else { return }
549568 await PrivatePaykitAddressReservationStore . shared. reconcileReservedIndexesWithLdk ( )
550569 await PrivatePaykitService . shared. prepareSavedContacts (
551570 contactsManager. contacts. map ( \. publicKey) ,
@@ -578,20 +597,26 @@ struct AppScene: View {
578597 await clearDeliveredNotifications ( )
579598 await LightningService . shared. reconnectPeers ( )
580599 try ? await wallet. sync ( )
581- await PrivatePaykitService . shared. retryPendingEndpointRemoval (
582- wallet: wallet,
583- savedPublicKeys: contactsManager. contacts. map ( \. publicKey)
584- )
600+ await retryPendingPaykitEndpointRemoval ( )
585601 await wallet. refreshPublicPaykitEndpointsOnForeground ( )
586- await PrivatePaykitService . shared. refreshSavedContactEndpoints (
587- for: contactsManager. contacts. map ( \. publicKey) ,
588- wallet: wallet
589- )
602+ if PaykitFeatureFlags . isUIEnabled {
603+ await PrivatePaykitService . shared. refreshSavedContactEndpoints (
604+ for: contactsManager. contacts. map ( \. publicKey) ,
605+ wallet: wallet
606+ )
607+ }
590608 }
591609 }
592610 }
593611 }
594612
613+ private func retryPendingPaykitEndpointRemoval( ) async {
614+ await PrivatePaykitService . shared. retryPendingEndpointRemoval (
615+ wallet: wallet,
616+ savedPublicKeys: contactsManager. contacts. map ( \. publicKey)
617+ )
618+ }
619+
595620 /// Removes all delivered notifications from Notification Center so the app can handle them when opened.
596621 private func clearDeliveredNotifications( ) async {
597622 let center = UNUserNotificationCenter . current ( )
0 commit comments