import SwiftUI

class TweaksManager: ObservableObject {
    private enum Keys {
        static let isFocusModeEnabled = "tweaks_isFocusModeEnabled"
        static let isLiquidGlassTabBarEnabled = "tweaks_isLiquidGlassTabBarEnabled"
        static let isLiquidGlassCollapsedTabBarEnabled = "tweaks_isLiquidGlassCollapsedTabBarEnabled"
        static let isHooksStartAtChorusEnabled = "tweaks_isHooksStartAtChorusEnabled"
        static let isHooksBackgroundPlayEnabled = "tweaks_isHooksBackgroundPlayEnabled"
        static let isHooksBackgroundPlayStartPausedEnabled = "tweaks_isHooksBackgroundPlayStartPausedEnabled"
    }

    @Published var isFocusModeEnabled: Bool {
        didSet {
            UserDefaults.standard.set(isFocusModeEnabled, forKey: Keys.isFocusModeEnabled)
        }
    }

    @Published var isLiquidGlassTabBarEnabled: Bool {
        didSet {
            UserDefaults.standard.set(isLiquidGlassTabBarEnabled, forKey: Keys.isLiquidGlassTabBarEnabled)
        }
    }

    @Published var isLiquidGlassCollapsedTabBarEnabled: Bool {
        didSet {
            UserDefaults.standard.set(isLiquidGlassCollapsedTabBarEnabled, forKey: Keys.isLiquidGlassCollapsedTabBarEnabled)
        }
    }
    
    @Published var isHooksStartAtChorusEnabled: Bool {
        didSet {
            UserDefaults.standard.set(isHooksStartAtChorusEnabled, forKey: Keys.isHooksStartAtChorusEnabled)
        }
    }

    @Published var isHooksBackgroundPlayEnabled: Bool {
        didSet {
            UserDefaults.standard.set(isHooksBackgroundPlayEnabled, forKey: Keys.isHooksBackgroundPlayEnabled)
        }
    }

    @Published var isHooksBackgroundPlayStartPausedEnabled: Bool {
        didSet {
            UserDefaults.standard.set(isHooksBackgroundPlayStartPausedEnabled, forKey: Keys.isHooksBackgroundPlayStartPausedEnabled)
        }
    }

    static let shared = TweaksManager()

    private init() {
        // Load persisted values or use defaults
        self.isFocusModeEnabled = UserDefaults.standard.object(forKey: Keys.isFocusModeEnabled) as? Bool ?? false
        self.isLiquidGlassTabBarEnabled = UserDefaults.standard.object(forKey: Keys.isLiquidGlassTabBarEnabled) as? Bool ?? true
        self.isLiquidGlassCollapsedTabBarEnabled = UserDefaults.standard.object(forKey: Keys.isLiquidGlassCollapsedTabBarEnabled) as? Bool ?? false
        self.isHooksStartAtChorusEnabled = UserDefaults.standard.object(forKey: Keys.isHooksStartAtChorusEnabled) as? Bool ?? true
        self.isHooksBackgroundPlayEnabled = UserDefaults.standard.object(forKey: Keys.isHooksBackgroundPlayEnabled) as? Bool ?? true
        self.isHooksBackgroundPlayStartPausedEnabled = UserDefaults.standard.object(forKey: Keys.isHooksBackgroundPlayStartPausedEnabled) as? Bool ?? true
    }
}
