mirror of
https://github.com/sudosylabs/vnidrop.git
synced 2026-08-07 11:19:58 +02:00
Device list, detail, and block list under Settings, plus the two sheets: an incoming offer and a device asking to be remembered. Both are answer-only, since swiping away would leave the sender waiting. Accepting an offer routes the released ticket into the ordinary receive path, so the platform still chooses the destination. The prompt does not ask a second time; it only falls back to the review sheet when the destination is unusable.
56 lines
2.0 KiB
Swift
56 lines
2.0 KiB
Swift
import Foundation
|
|
import Combine
|
|
|
|
/// Object graph wiring the repositories and coordinators together, ported from
|
|
/// `AppGraph.kt`. Owned by the app root for the process lifetime.
|
|
@MainActor
|
|
final class AppGraph: ObservableObject {
|
|
let dependencies: AppDependencies
|
|
let coreRepository: CoreRepository
|
|
let visibility = AppVisibility()
|
|
let messages = UiMessageController()
|
|
let preferencesRepository: AppPreferencesRepository
|
|
let filePreviewRepository: FilePreviewRepository
|
|
let approvalCoordinator: ApprovalCoordinator
|
|
let contactsModel: ContactsModel
|
|
let transferNotificationCoordinator: TransferNotificationCoordinator
|
|
let backgroundActivity: BackgroundActivityController
|
|
|
|
init(dependencies: AppDependencies, coreRepository: CoreRepository? = nil) {
|
|
self.dependencies = dependencies
|
|
let coreRepository = coreRepository ?? CoreRepository()
|
|
self.coreRepository = coreRepository
|
|
self.filePreviewRepository = FilePreviewRepository(appDataDir: dependencies.environment.defaultCoreDataDir)
|
|
self.preferencesRepository = AppPreferencesRepository(
|
|
fallback: AppPreferencesDefaults(
|
|
username: dependencies.environment.defaultUsername,
|
|
receiveFolder: dependencies.fileSystemService.defaultReceiveFolder(),
|
|
themeMode: .system
|
|
)
|
|
)
|
|
self.contactsModel = ContactsModel(
|
|
repository: coreRepository,
|
|
messages: messages,
|
|
preferences: preferencesRepository
|
|
)
|
|
self.approvalCoordinator = ApprovalCoordinator(
|
|
repository: coreRepository,
|
|
notifications: dependencies.notificationService,
|
|
visibility: visibility,
|
|
messages: messages
|
|
)
|
|
self.transferNotificationCoordinator = TransferNotificationCoordinator(
|
|
repository: coreRepository,
|
|
notifications: dependencies.notificationService,
|
|
visibility: visibility,
|
|
messages: messages
|
|
)
|
|
self.backgroundActivity = BackgroundActivityController(repository: coreRepository)
|
|
AppLogger.info("lifecycle", "graph created", ["platform": dependencies.environment.name])
|
|
}
|
|
|
|
func close() {
|
|
coreRepository.shutdown()
|
|
}
|
|
}
|