From 211ca1e1bd692c0f437b48d5465801385a9e497b Mon Sep 17 00:00:00 2001 From: jvsena42 Date: Wed, 7 Jan 2026 08:20:21 -0300 Subject: [PATCH 1/2] fix: remove pin from backup and reset pin on restore --- Bitkit/Models/SettingsBackupConfig.swift | 4 ++-- Bitkit/Services/BackupService.swift | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Bitkit/Models/SettingsBackupConfig.swift b/Bitkit/Models/SettingsBackupConfig.swift index 248ebcf9..c0242321 100644 --- a/Bitkit/Models/SettingsBackupConfig.swift +++ b/Bitkit/Models/SettingsBackupConfig.swift @@ -64,9 +64,9 @@ enum SettingsBackupConfig { "warnWhenSendingOver100": "enableSendAmountWarning", "bitcoinDisplayUnit": "displayUnit", "enableQuickpay": "isQuickPayEnabled", - "useBiometrics": "isBiometricEnabled", - "requirePinForPayments": "isPinForPaymentsEnabled", "enableNotifications": "notificationsGranted", + // Note: PIN settings are intentionally NOT backed up for security + // PIN itself cannot be backed up, so PIN settings shouldn't be either ] static let algorithmMapping: [String: String] = [ diff --git a/Bitkit/Services/BackupService.swift b/Bitkit/Services/BackupService.swift index db893e44..ac2e2d58 100644 --- a/Bitkit/Services/BackupService.swift +++ b/Bitkit/Services/BackupService.swift @@ -244,6 +244,11 @@ class BackupService { } Logger.info("Full restore success", context: "BackupService") + + // Always reset PIN settings after restore (PIN is never backed up for security) + Task { @MainActor in + SettingsViewModel.shared.resetPinSettings() + } } catch { Logger.warn("Full restore error: \(error)", context: "BackupService") } From aa19dda0ceb0b8df7ddbce804ad2db319a27cc5b Mon Sep 17 00:00:00 2001 From: jvsena42 Date: Wed, 7 Jan 2026 08:34:52 -0300 Subject: [PATCH 2/2] chore: await resetPinSettings --- Bitkit/Services/BackupService.swift | 4 +--- Bitkit/ViewModels/Extensions/SettingsViewModel+PIN.swift | 1 + 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/Bitkit/Services/BackupService.swift b/Bitkit/Services/BackupService.swift index ac2e2d58..6c058763 100644 --- a/Bitkit/Services/BackupService.swift +++ b/Bitkit/Services/BackupService.swift @@ -246,9 +246,7 @@ class BackupService { Logger.info("Full restore success", context: "BackupService") // Always reset PIN settings after restore (PIN is never backed up for security) - Task { @MainActor in - SettingsViewModel.shared.resetPinSettings() - } + await SettingsViewModel.shared.resetPinSettings() } catch { Logger.warn("Full restore error: \(error)", context: "BackupService") } diff --git a/Bitkit/ViewModels/Extensions/SettingsViewModel+PIN.swift b/Bitkit/ViewModels/Extensions/SettingsViewModel+PIN.swift index edf6b48b..53e065f9 100644 --- a/Bitkit/ViewModels/Extensions/SettingsViewModel+PIN.swift +++ b/Bitkit/ViewModels/Extensions/SettingsViewModel+PIN.swift @@ -61,6 +61,7 @@ extension SettingsViewModel { pinFailedAttempts = 0 } + @MainActor func resetPinSettings() { pinEnabled = false pinFailedAttempts = 0