Make iCloud sync available to all users (remove from premium)
- Remove PremiumGate from iCloudEnabled property - Update SettingsView to use regular toggle instead of premiumToggle - Remove premium section header for iCloud sync - Update proSection description to remove 'sync' - Remove iCloud Settings Sync from ProPaywallView benefits
This commit is contained in:
parent
53170a1de4
commit
f73da42a3d
@ -29,7 +29,6 @@ struct ProPaywallView: View {
|
||||
BenefitRow(image: "person.crop.rectangle.fill", text: String(localized: "Center Stage Auto-Framing"))
|
||||
BenefitRow(image: "timer", text: String(localized: "Extended Self-Timers (5s, 10s)"))
|
||||
BenefitRow(image: "star.fill", text: String(localized: "High Quality Photo Export"))
|
||||
BenefitRow(image: "icloud.fill", text: String(localized: "iCloud Settings Sync"))
|
||||
}
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
|
||||
|
||||
@ -129,9 +129,9 @@ struct SettingsView: View {
|
||||
|
||||
proSection
|
||||
|
||||
// MARK: - Sync Section (Premium)
|
||||
// MARK: - Sync Section
|
||||
|
||||
premiumSectionHeader(title: "iCloud Sync", systemImage: "icloud")
|
||||
SettingsSectionHeader(title: String(localized: "iCloud Sync"), systemImage: "icloud")
|
||||
|
||||
iCloudSyncSection
|
||||
|
||||
@ -543,7 +543,7 @@ struct SettingsView: View {
|
||||
.font(.system(size: Design.BaseFontSize.medium, weight: .semibold))
|
||||
.foregroundStyle(.white)
|
||||
|
||||
Text(String(localized: "Premium colors, HDR, timers, sync & more"))
|
||||
Text(String(localized: "Premium colors, HDR, timers & more"))
|
||||
.font(.system(size: Design.BaseFontSize.caption))
|
||||
.foregroundStyle(.white.opacity(Design.Opacity.medium))
|
||||
}
|
||||
@ -566,24 +566,31 @@ struct SettingsView: View {
|
||||
.accessibilityHint(String(localized: "Opens upgrade options"))
|
||||
}
|
||||
|
||||
// MARK: - iCloud Sync Section (Premium)
|
||||
// MARK: - iCloud Sync Section
|
||||
|
||||
private var iCloudSyncSection: some View {
|
||||
VStack(alignment: .leading, spacing: Design.Spacing.small) {
|
||||
// Sync toggle (premium)
|
||||
premiumToggle(
|
||||
title: String(localized: "Sync Settings"),
|
||||
subtitle: !isPremiumUnlocked
|
||||
? String(localized: "Upgrade to sync settings across devices")
|
||||
: (viewModel.iCloudAvailable
|
||||
? String(localized: "Sync settings across all your devices")
|
||||
: String(localized: "Sign in to iCloud to enable sync")),
|
||||
isOn: $viewModel.iCloudEnabled,
|
||||
accessibilityHint: String(localized: "Syncs settings across all your devices via iCloud")
|
||||
)
|
||||
// Sync toggle
|
||||
Toggle(isOn: $viewModel.iCloudEnabled) {
|
||||
VStack(alignment: .leading, spacing: Design.Spacing.xxSmall) {
|
||||
Text(String(localized: "Sync Settings"))
|
||||
.font(.system(size: Design.BaseFontSize.medium, weight: .medium))
|
||||
.foregroundStyle(.white)
|
||||
|
||||
// Sync status (only show when premium and enabled)
|
||||
if isPremiumUnlocked && viewModel.iCloudEnabled && viewModel.iCloudAvailable {
|
||||
Text(viewModel.iCloudAvailable
|
||||
? String(localized: "Sync settings across all your devices")
|
||||
: String(localized: "Sign in to iCloud to enable sync"))
|
||||
.font(.system(size: Design.BaseFontSize.body))
|
||||
.foregroundStyle(.white.opacity(Design.Opacity.medium))
|
||||
}
|
||||
}
|
||||
.tint(Color.Accent.primary)
|
||||
.padding(.vertical, Design.Spacing.xSmall)
|
||||
.disabled(!viewModel.iCloudAvailable)
|
||||
.accessibilityHint(String(localized: "Syncs settings across all your devices via iCloud"))
|
||||
|
||||
// Sync status (show when enabled and available)
|
||||
if viewModel.iCloudEnabled && viewModel.iCloudAvailable {
|
||||
HStack(spacing: Design.Spacing.small) {
|
||||
Image(systemName: syncStatusIcon)
|
||||
.font(.system(size: Design.BaseFontSize.body))
|
||||
|
||||
@ -347,13 +347,10 @@ final class SettingsViewModel: RingLightConfigurable {
|
||||
/// Whether iCloud sync is available
|
||||
var iCloudAvailable: Bool { cloudSync.iCloudAvailable }
|
||||
|
||||
/// Whether iCloud sync is enabled (PREMIUM)
|
||||
/// Whether iCloud sync is enabled (available to all users)
|
||||
var iCloudEnabled: Bool {
|
||||
get { PremiumGate.get(cloudSync.iCloudEnabled, default: false, isPremium: isPremiumUnlocked) }
|
||||
set {
|
||||
guard PremiumGate.canSet(isPremium: isPremiumUnlocked) else { return }
|
||||
cloudSync.iCloudEnabled = newValue
|
||||
}
|
||||
get { cloudSync.iCloudEnabled }
|
||||
set { cloudSync.iCloudEnabled = newValue }
|
||||
}
|
||||
|
||||
/// Last sync date
|
||||
|
||||
@ -242,8 +242,8 @@
|
||||
"comment" : "Name of a ring light color preset.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"iCloud Settings Sync" : {
|
||||
"comment" : "Description of a benefit when the user has the premium membership and can sync their iCloud settings.",
|
||||
"iCloud Sync" : {
|
||||
"comment" : "Title of the section that allows users to enable or disable iCloud sync of their photos and videos.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Last synced %@" : {
|
||||
@ -292,8 +292,9 @@
|
||||
"comment" : "Benefit description for the \"Premium Colors + Custom Color Picker\" benefit.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Premium colors, HDR, timers, sync & more" : {
|
||||
|
||||
"Premium colors, HDR, timers & more" : {
|
||||
"comment" : "A description of the additional features available in the Pro version of the app.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Purchase successful! Pro features unlocked." : {
|
||||
"comment" : "Announcement read out to the user when a premium purchase is successful.",
|
||||
@ -483,10 +484,6 @@
|
||||
"comment" : "A button label that prompts users to upgrade to the premium version of the app.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Upgrade to sync settings across devices" : {
|
||||
"comment" : "A description of the benefit of upgrading to sync settings across devices.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Upgrade to unlock 5s and 10s timers" : {
|
||||
"comment" : "A message displayed to users who want to upgrade to unlock longer self-timer durations.",
|
||||
"isCommentAutoGenerated" : true
|
||||
|
||||
Loading…
Reference in New Issue
Block a user