mirror of
https://github.com/sudosylabs/vnidrop.git
synced 2026-08-05 10:29:58 +02:00
Enable complete strict concurrency and switch the app target to Swift 6. - Isolate model dependency protocols to @MainActor - Make the CoreRepository blocking-FFI bridge race-free: nonisolated(unsafe) core handle, nonisolated runCore/readSnapshot, @Sendable work block, Sendable domain models - Fix Binding method-reference captures; @preconcurrency imports for CoreNFC/AVFoundation/VnidropCore; isolate the NFC/QR delegate helpers
33 lines
863 B
Swift
33 lines
863 B
Swift
import Foundation
|
|
|
|
/// Platform environment, ported from `Platform.kt` (`PlatformEnvironment`).
|
|
struct PlatformEnvironment {
|
|
let name: String
|
|
let appVersion: String
|
|
let defaultCoreDataDir: String
|
|
var defaultUsername: String = "Receiver"
|
|
}
|
|
|
|
/// Device info for diagnostics/about, ported from `DeviceInfo`.
|
|
struct DeviceInfo {
|
|
let deviceName: String?
|
|
let deviceModel: String?
|
|
let operatingSystem: String
|
|
let network: String?
|
|
let batteryLevel: String?
|
|
}
|
|
|
|
@MainActor
|
|
protocol DeviceInfoProvider {
|
|
func load() async -> DeviceInfo
|
|
}
|
|
|
|
/// Bundle of platform dependencies, ported from `AppDependencies`.
|
|
struct AppDependencies {
|
|
let environment: PlatformEnvironment
|
|
let deviceInfoProvider: DeviceInfoProvider
|
|
let fileSystemService: FileSystemService
|
|
let notificationService: LocalNotificationService
|
|
let externalInvitations: ExternalInvitationController
|
|
}
|