Ariver
2026-05-28 da71eb5bccbdbd22da7cd74b6ddcec031f069482
Apptag/AppDefaults.swift
@@ -2,7 +2,7 @@
enum AppDefaults {
    static let schemaVersionKey = "initialDefaultsSchemaVersion"
    static let currentSchemaVersion = 2
    static let currentSchemaVersion = 3
    static let tagFontSize: Double = 22
    static let iconSize: Double = 80
@@ -22,34 +22,31 @@
            "hideAppNames": hideAppNames,
            "showDockIcon": showDockIcon,
            "launchAtLogin": launchAtLogin,
            "showUncommonAppBubbles": showUncommonAppBubbles
            "showUncommonAppBubbles": showUncommonAppBubbles,
            "skipTagRemovalDropConfirm": false,
            LauncherHotkeyRegistrationStore.mainStateKey: LauncherHotkeyRegistrationState.active.rawValue,
            LauncherHotkeyRegistrationStore.quickSearchStateKey: LauncherHotkeyRegistrationState.active.rawValue
        ])
        migrateShortcutDefaultsIfNeeded()
        removeShortcutCustomizationDefaults()
    }
    static func hasStoredValue(for key: String) -> Bool {
        let domain = Bundle.main.bundleIdentifier ?? "com.apptag.launcher"
        let domain = Bundle.main.bundleIdentifier ?? AppIdentity.bundleIdentifier
        return UserDefaults.standard.persistentDomain(forName: domain)?[key] != nil
    }
    private static func migrateShortcutDefaultsIfNeeded() {
    private static func removeShortcutCustomizationDefaults() {
        let defaults = UserDefaults.standard
        guard defaults.integer(forKey: schemaVersionKey) < currentSchemaVersion else { return }
        defaults.set(LauncherHotkey.defaultMain.serialized, forKey: LauncherHotkeyKind.main.storageKey)
        defaults.removeObject(forKey: LauncherHotkeyKind.main.pendingStorageKey)
        defaults.removeObject(forKey: LauncherHotkeyKind.main.statusKey)
        defaults.removeObject(forKey: LauncherHotkeyKind.main.conflictMessageKey)
        let quickSearchKey = LauncherHotkeyKind.quickSearch.storageKey
        let storedQuickSearch = defaults.string(forKey: quickSearchKey) ?? ""
        if storedQuickSearch.isEmpty {
            defaults.set(LauncherHotkey.defaultQuickSearch.serialized, forKey: quickSearchKey)
            defaults.removeObject(forKey: LauncherHotkeyKind.quickSearch.pendingStorageKey)
            defaults.removeObject(forKey: LauncherHotkeyKind.quickSearch.statusKey)
            defaults.removeObject(forKey: LauncherHotkeyKind.quickSearch.conflictMessageKey)
        }
        [
            "mainHotkey",
            "quickSearchHotkey",
            "mainHotkeyPending",
            "quickSearchHotkeyPending",
            "mainHotkeyStatus",
            "quickSearchHotkeyStatus",
            "mainHotkeyConflictMessage",
            "quickSearchHotkeyConflictMessage"
        ].forEach { defaults.removeObject(forKey: $0) }
        defaults.set(currentSchemaVersion, forKey: schemaVersionKey)
    }
}