mirror of
https://github.com/sudosylabs/vnidrop.git
synced 2026-08-05 02:29:55 +02:00
feat(apple): native SwiftUI app for iOS and macOS
Add a native SwiftUI VniDrop app (Send/Receive/Settings) talking to the Rust core via generated UniFFI Swift bindings, plus the uniffi-bindgen helper crate. iOS uses a TabView, macOS a NavigationSplitView sidebar.
This commit is contained in:
31
apple/VniDrop/App/AppEnvironment.swift
Normal file
31
apple/VniDrop/App/AppEnvironment.swift
Normal file
@@ -0,0 +1,31 @@
|
||||
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?
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user