From b68d338097ef3bbb28cc357ca7cf5b0587a66bd6 Mon Sep 17 00:00:00 2001 From: cdricms <36056008+cdricms@users.noreply.github.com> Date: Sun, 2 Aug 2026 10:02:49 +0200 Subject: [PATCH] refactor(apple): remove diagnostics opt-in toggle, keep bug reports Drop the Share-diagnostics preference, its Settings toggle and the DiagnosticsBuildConfig stub. Bug reporting (NoopBugReportService) and the diagnostics install id used for bug-report correlation are retained. --- apple/Tests/SettingsModelTests.swift | 3 +-- apple/VniDrop/App/AppGraph.swift | 3 +-- apple/VniDrop/Core/AppPreferences.swift | 10 ---------- .../Features/Settings/BugReportService.swift | 5 ----- .../Features/Settings/SettingsModel.swift | 20 ++----------------- .../Features/Settings/SettingsSections.swift | 11 ---------- 6 files changed, 4 insertions(+), 48 deletions(-) diff --git a/apple/Tests/SettingsModelTests.swift b/apple/Tests/SettingsModelTests.swift index e565762..209fefe 100644 --- a/apple/Tests/SettingsModelTests.swift +++ b/apple/Tests/SettingsModelTests.swift @@ -15,8 +15,7 @@ final class SettingsModelTests: XCTestCase { preferences: preferences, notifications: LocalNotificationService(), messages: UiMessageController(), - bugReports: NoopBugReportService(), - diagnosticsIncluded: false + bugReports: NoopBugReportService() ) } diff --git a/apple/VniDrop/App/AppGraph.swift b/apple/VniDrop/App/AppGraph.swift index 9cd7f97..bc41554 100644 --- a/apple/VniDrop/App/AppGraph.swift +++ b/apple/VniDrop/App/AppGraph.swift @@ -24,8 +24,7 @@ final class AppGraph: ObservableObject { fallback: AppPreferencesDefaults( username: dependencies.environment.defaultUsername, receiveFolder: dependencies.fileSystemService.defaultReceiveFolder(), - themeMode: .system, - diagnosticsEnabled: false + themeMode: .system ) ) self.approvalCoordinator = ApprovalCoordinator( diff --git a/apple/VniDrop/Core/AppPreferences.swift b/apple/VniDrop/Core/AppPreferences.swift index df56a2c..ea62b80 100644 --- a/apple/VniDrop/Core/AppPreferences.swift +++ b/apple/VniDrop/Core/AppPreferences.swift @@ -120,7 +120,6 @@ struct AppPreferences: Equatable { var username: String var receiveFolder: ReceiveFolder var themeMode: ThemeMode - var diagnosticsEnabled: Bool var diagnosticsInstallId: String var relayConfiguration: RelayConfiguration } @@ -129,7 +128,6 @@ struct AppPreferencesDefaults { let username: String let receiveFolder: ReceiveFolder let themeMode: ThemeMode - var diagnosticsEnabled: Bool = false } @MainActor @@ -145,7 +143,6 @@ final class AppPreferencesRepository: ObservableObject { static let receiveFolderValue = "receive_folder_value" static let receiveFolderDisplayName = "receive_folder_display_name" static let themeMode = "theme_mode" - static let diagnosticsEnabled = "diagnostics_enabled" static let diagnosticsInstallId = "diagnostics_install_id" static let relayConfiguration = "relay_configuration" } @@ -160,13 +157,11 @@ final class AppPreferencesRepository: ObservableObject { let username = (defaults.string(forKey: Key.username)).flatMap { $0.isEmpty ? nil : $0 } ?? fallback.username let folder = resolveReceiveFolder(defaults, fallback: fallback.receiveFolder) let themeMode = defaults.string(forKey: Key.themeMode).flatMap(ThemeMode.init(rawValue:)) ?? fallback.themeMode - let diagnostics = defaults.object(forKey: Key.diagnosticsEnabled) as? Bool ?? fallback.diagnosticsEnabled let installId = defaults.string(forKey: Key.diagnosticsInstallId) ?? "" return AppPreferences( username: username, receiveFolder: folder, themeMode: themeMode, - diagnosticsEnabled: diagnostics, diagnosticsInstallId: installId, relayConfiguration: resolveRelayConfiguration(defaults) ) @@ -219,11 +214,6 @@ final class AppPreferencesRepository: ObservableObject { reload() } - func setDiagnosticsEnabled(_ enabled: Bool) { - defaults.set(enabled, forKey: Key.diagnosticsEnabled) - reload() - } - func setRelayConfiguration(_ configuration: RelayConfiguration) { guard let encoded = try? JSONEncoder().encode(configuration) else { return } defaults.set(encoded, forKey: Key.relayConfiguration) diff --git a/apple/VniDrop/Features/Settings/BugReportService.swift b/apple/VniDrop/Features/Settings/BugReportService.swift index 17be101..57915e3 100644 --- a/apple/VniDrop/Features/Settings/BugReportService.swift +++ b/apple/VniDrop/Features/Settings/BugReportService.swift @@ -24,8 +24,3 @@ struct NoopBugReportService: BugReportService { } func previewLogBytes() async -> Int { 0 } } - -/// Whether the diagnostics stack is compiled in (mirrors DiagnosticsBuildConfig). -enum DiagnosticsBuildConfig { - static let included = false -} diff --git a/apple/VniDrop/Features/Settings/SettingsModel.swift b/apple/VniDrop/Features/Settings/SettingsModel.swift index 8158926..c3f26d0 100644 --- a/apple/VniDrop/Features/Settings/SettingsModel.swift +++ b/apple/VniDrop/Features/Settings/SettingsModel.swift @@ -44,7 +44,6 @@ struct SettingsState: Equatable { var supportsCustomReceiveFolders = true var themeMode: ThemeMode = .system var notificationPermission: NotificationPermission = .notDetermined - var diagnosticsEnabled = false var relayMode: RelayPreferenceMode = .automatic var relayURLs: [String] = [] var relayValidationError: RelayConfigurationValidationError? @@ -76,7 +75,7 @@ struct SettingsState: Equatable { && lhs.supportsCustomReceiveFolders == rhs.supportsCustomReceiveFolders && lhs.themeMode == rhs.themeMode && lhs.notificationPermission == rhs.notificationPermission - && lhs.diagnosticsEnabled == rhs.diagnosticsEnabled && lhs.appVersion == rhs.appVersion + && lhs.appVersion == rhs.appVersion && lhs.relayMode == rhs.relayMode && lhs.relayURLs == rhs.relayURLs && lhs.relayValidationError == rhs.relayValidationError && lhs.relayConfigurationIsDirty == rhs.relayConfigurationIsDirty @@ -111,7 +110,6 @@ final class SettingsModel: ObservableObject { private let notifications: LocalNotificationService private let messages: UiMessageController private let bugReports: BugReportService - private let diagnosticsIncluded: Bool private var usernamePersistTask: Task? private var hasLocalUsernameDraft = false @@ -126,8 +124,7 @@ final class SettingsModel: ObservableObject { preferences: AppPreferencesRepository, notifications: LocalNotificationService, messages: UiMessageController, - bugReports: BugReportService, - diagnosticsIncluded: Bool = DiagnosticsBuildConfig.included + bugReports: BugReportService ) { self.environment = environment self.deviceInfoProvider = deviceInfoProvider @@ -137,7 +134,6 @@ final class SettingsModel: ObservableObject { self.notifications = notifications self.messages = messages self.bugReports = bugReports - self.diagnosticsIncluded = diagnosticsIncluded self.state = SettingsState( supportsCustomReceiveFolders: fileSystemService.supportsCustomReceiveFolders, appVersion: environment.appVersion @@ -151,7 +147,6 @@ final class SettingsModel: ObservableObject { self.state.username = self.hasLocalUsernameDraft ? self.state.username : prefs.username self.state.receiveFolder = folder self.state.themeMode = prefs.themeMode - self.state.diagnosticsEnabled = prefs.diagnosticsEnabled if !self.hasRelayConfigurationDraft { self.state.relayMode = prefs.relayConfiguration.mode self.state.relayURLs = prefs.relayConfiguration.relayURLs @@ -230,17 +225,6 @@ final class SettingsModel: ObservableObject { } } - func setDiagnosticsEnabled(_ enabled: Bool) { - if !diagnosticsIncluded { return } - Task { - preferences.setDiagnosticsEnabled(enabled) - messages.show(UiMessage( - text: .resource(enabled ? L10n.Diagnostics.enabledMessage : L10n.Diagnostics.disabledMessage), - tone: .success - )) - } - } - // MARK: - Network func setRelayMode(_ mode: RelayPreferenceMode) { diff --git a/apple/VniDrop/Features/Settings/SettingsSections.swift b/apple/VniDrop/Features/Settings/SettingsSections.swift index e8c5a1a..c14c105 100644 --- a/apple/VniDrop/Features/Settings/SettingsSections.swift +++ b/apple/VniDrop/Features/Settings/SettingsSections.swift @@ -415,17 +415,6 @@ struct AboutSettings: View { Label(String(localized: L10n.About.privacyPolicyLabel), systemSymbol: .handRaised) } } - - if DiagnosticsBuildConfig.included { - Section { - Toggle(isOn: Binding( - get: { model.state.diagnosticsEnabled }, - set: { model.setDiagnosticsEnabled($0) } - )) { - Text(String(localized: L10n.Diagnostics.title)) - } - } - } } }