Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
This commit is contained in:
parent
a25e414d4e
commit
4ecdb8fbfe
@ -87,10 +87,18 @@ final class SettingsViewModel: RingLightConfigurable {
|
|||||||
// MARK: - Premium Manager
|
// MARK: - Premium Manager
|
||||||
|
|
||||||
/// Premium manager for checking subscription status
|
/// Premium manager for checking subscription status
|
||||||
private let premiumManager = PremiumManager()
|
@ObservationIgnored private let premiumManager = PremiumManager()
|
||||||
|
|
||||||
/// Whether the user has premium access
|
/// Whether the user has premium access (stored property for proper UI updates)
|
||||||
var isPremiumUnlocked: Bool { premiumManager.isPremiumUnlocked }
|
private var _isPremiumUnlocked: Bool = false
|
||||||
|
|
||||||
|
/// Whether the user has premium access (observable for UI updates)
|
||||||
|
var isPremiumUnlocked: Bool {
|
||||||
|
get { _isPremiumUnlocked }
|
||||||
|
set {
|
||||||
|
_isPremiumUnlocked = newValue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// MARK: - Cloud Sync Manager
|
// MARK: - Cloud Sync Manager
|
||||||
|
|
||||||
@ -340,7 +348,64 @@ final class SettingsViewModel: RingLightConfigurable {
|
|||||||
/// Debug premium toggle for testing (DEBUG builds only)
|
/// Debug premium toggle for testing (DEBUG builds only)
|
||||||
var isDebugPremiumEnabled: Bool {
|
var isDebugPremiumEnabled: Bool {
|
||||||
get { premiumManager.isDebugPremiumToggleEnabled }
|
get { premiumManager.isDebugPremiumToggleEnabled }
|
||||||
set { premiumManager.isDebugPremiumToggleEnabled = newValue }
|
set {
|
||||||
|
let wasPremium = premiumManager.isDebugPremiumToggleEnabled
|
||||||
|
premiumManager.isDebugPremiumToggleEnabled = newValue
|
||||||
|
|
||||||
|
// Update premium status for UI refresh
|
||||||
|
isPremiumUnlocked = premiumManager.isPremiumUnlocked
|
||||||
|
|
||||||
|
// Reset premium settings when toggling OFF
|
||||||
|
if wasPremium && !newValue {
|
||||||
|
resetPremiumSettingsToDefaults()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Reset premium-only settings to their free defaults when debug premium is disabled
|
||||||
|
private func resetPremiumSettingsToDefaults() {
|
||||||
|
// Clear cached values that depend on premium status
|
||||||
|
_cachedRingSize = nil
|
||||||
|
_cachedLightColorId = nil
|
||||||
|
_cachedCustomColor = nil
|
||||||
|
|
||||||
|
// Reset premium settings to defaults (bypass premium gates for direct reset)
|
||||||
|
updateSettings { settings in
|
||||||
|
if settings.lightColorId != Self.defaultFreeColorId {
|
||||||
|
settings.lightColorId = Self.defaultFreeColorId
|
||||||
|
}
|
||||||
|
|
||||||
|
if settings.isMirrorFlipped {
|
||||||
|
settings.isMirrorFlipped = false
|
||||||
|
}
|
||||||
|
|
||||||
|
if settings.isSkinSmoothingEnabled {
|
||||||
|
settings.isSkinSmoothingEnabled = false
|
||||||
|
}
|
||||||
|
|
||||||
|
if settings.isFlashSyncedWithRingLight {
|
||||||
|
settings.isFlashSyncedWithRingLight = false
|
||||||
|
}
|
||||||
|
|
||||||
|
if settings.hdrModeRaw != CameraHDRMode.off.rawValue {
|
||||||
|
settings.hdrModeRaw = CameraHDRMode.off.rawValue
|
||||||
|
}
|
||||||
|
|
||||||
|
if settings.photoQualityRaw != PhotoQuality.medium.rawValue {
|
||||||
|
settings.photoQualityRaw = PhotoQuality.medium.rawValue
|
||||||
|
}
|
||||||
|
|
||||||
|
if settings.selectedTimerRaw != TimerOption.three.rawValue {
|
||||||
|
settings.selectedTimerRaw = TimerOption.three.rawValue
|
||||||
|
}
|
||||||
|
|
||||||
|
if settings.isCenterStageEnabled {
|
||||||
|
settings.isCenterStageEnabled = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Force sync to ensure changes are saved
|
||||||
|
forceSync()
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Sets the custom color and selects it (PREMIUM)
|
/// Sets the custom color and selects it (PREMIUM)
|
||||||
@ -373,6 +438,8 @@ final class SettingsViewModel: RingLightConfigurable {
|
|||||||
// MARK: - Initialization
|
// MARK: - Initialization
|
||||||
|
|
||||||
init() {
|
init() {
|
||||||
|
// Initialize premium status
|
||||||
|
_isPremiumUnlocked = premiumManager.isPremiumUnlocked
|
||||||
// CloudSyncManager handles syncing automatically
|
// CloudSyncManager handles syncing automatically
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user