mirror of
https://github.com/sudosylabs/vnidrop.git
synced 2026-08-05 10:29:58 +02:00
51 lines
1.7 KiB
Swift
51 lines
1.7 KiB
Swift
#if os(iOS)
|
|
import Foundation
|
|
import UIKit
|
|
|
|
/// Builds the iOS dependency graph, ported from `rememberIosAppDependencies`.
|
|
@MainActor
|
|
func makeAppDependencies(externalInvitations: ExternalInvitationController) -> AppDependencies {
|
|
let device = UIDevice.current
|
|
let version = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String ?? "unknown"
|
|
let env = PlatformEnvironment(
|
|
name: "\(device.systemName) \(device.systemVersion)",
|
|
appVersion: version,
|
|
defaultCoreDataDir: applicationDataDirectory(),
|
|
defaultUsername: device.name.isEmpty ? "Receiver" : device.name
|
|
)
|
|
return AppDependencies(
|
|
environment: env,
|
|
deviceInfoProvider: IosDeviceInfoProvider(),
|
|
fileSystemService: IosFileSystemService(),
|
|
notificationService: LocalNotificationService(),
|
|
externalInvitations: externalInvitations
|
|
)
|
|
}
|
|
|
|
private func applicationDataDirectory() -> String {
|
|
let base = FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask).first!
|
|
return base.appendingPathComponent("VniDrop").path
|
|
}
|
|
|
|
private struct IosDeviceInfoProvider: DeviceInfoProvider {
|
|
@MainActor
|
|
func load() async -> DeviceInfo {
|
|
let device = UIDevice.current
|
|
let battery: String? = {
|
|
let wasMonitoring = device.isBatteryMonitoringEnabled
|
|
device.isBatteryMonitoringEnabled = true
|
|
defer { device.isBatteryMonitoringEnabled = wasMonitoring }
|
|
let level = device.batteryLevel
|
|
return level >= 0 ? L10n.Battery.levelValue(level: "\(Int(level * 100))") : nil
|
|
}()
|
|
return DeviceInfo(
|
|
deviceName: device.name,
|
|
deviceModel: device.model,
|
|
operatingSystem: "\(device.systemName) \(device.systemVersion)",
|
|
network: nil,
|
|
batteryLevel: battery
|
|
)
|
|
}
|
|
}
|
|
#endif
|