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
32 lines
1.0 KiB
Swift
32 lines
1.0 KiB
Swift
import Foundation
|
|
|
|
/// Bug-report draft, ported from `diagnostics/BugReportService.kt`.
|
|
struct BugReportDraft {
|
|
let whatHappened: String
|
|
let expected: String
|
|
let steps: String
|
|
let contact: String
|
|
let includeLogs: Bool
|
|
}
|
|
|
|
/// Bug-report submission. The full diagnostics transport (URLSession + build
|
|
/// config) lands in the diagnostics phase; this protocol is the stable seam.
|
|
@MainActor
|
|
protocol BugReportService {
|
|
func submit(_ draft: BugReportDraft, deviceInfo: DeviceInfo?) async -> Result<Void, Error>
|
|
func previewLogBytes() async -> Int
|
|
}
|
|
|
|
/// Offline-safe no-op used until the diagnostics transport is configured.
|
|
struct NoopBugReportService: BugReportService {
|
|
func submit(_ draft: BugReportDraft, deviceInfo: DeviceInfo?) async -> Result<Void, Error> {
|
|
.failure(InvitationError.message("Bug reporting is not configured"))
|
|
}
|
|
func previewLogBytes() async -> Int { 0 }
|
|
}
|
|
|
|
/// Whether the diagnostics stack is compiled in (mirrors DiagnosticsBuildConfig).
|
|
enum DiagnosticsBuildConfig {
|
|
static let included = false
|
|
}
|