mirror of
https://github.com/h3pdesign/Neon-Vision-Editor
synced 2026-04-21 13:27:16 +00:00
appreview: add paywall disclosures and privacy policy links
This commit is contained in:
parent
48321d6164
commit
e96cd3cea1
4 changed files with 40 additions and 0 deletions
|
|
@ -39,6 +39,7 @@ struct NeonSettingsView: View {
|
|||
@State private var geminiAPIToken: String = SecureTokenStore.token(for: .gemini)
|
||||
@State private var anthropicAPIToken: String = SecureTokenStore.token(for: .anthropic)
|
||||
@State private var showSupportPurchaseDialog: Bool = false
|
||||
private let privacyPolicyURL = URL(string: "https://github.com/h3pdesign/Neon-Vision-Editor/blob/main/PRIVACY.md")!
|
||||
|
||||
@AppStorage("SettingsThemeName") private var selectedTheme: String = "Neon Glow"
|
||||
@AppStorage("SettingsThemeTextColor") private var themeTextHex: String = "#EDEDED"
|
||||
|
|
@ -454,6 +455,9 @@ struct NeonSettingsView: View {
|
|||
VStack(alignment: .leading, spacing: 12) {
|
||||
Text("In-App Purchase is optional and only used to support the app.")
|
||||
.foregroundStyle(.secondary)
|
||||
Text("One-time, non-consumable purchase. No subscription and no auto-renewal.")
|
||||
.font(.footnote)
|
||||
.foregroundStyle(.secondary)
|
||||
if supportPurchaseManager.canUseInAppPurchases {
|
||||
Text("Price: \(supportPurchaseManager.supportPriceLabel)")
|
||||
.font(.headline)
|
||||
|
|
@ -467,6 +471,11 @@ struct NeonSettingsView: View {
|
|||
}
|
||||
.disabled(supportPurchaseManager.isPurchasing || supportPurchaseManager.isLoadingProducts)
|
||||
|
||||
Button("Restore Purchases") {
|
||||
Task { await supportPurchaseManager.restorePurchases() }
|
||||
}
|
||||
.disabled(supportPurchaseManager.isLoadingProducts)
|
||||
|
||||
Button("Refresh Price") {
|
||||
Task { await supportPurchaseManager.refreshProducts() }
|
||||
}
|
||||
|
|
@ -480,6 +489,10 @@ struct NeonSettingsView: View {
|
|||
.font(.footnote)
|
||||
.foregroundStyle(.secondary)
|
||||
}
|
||||
|
||||
Link("Privacy Policy", destination: privacyPolicyURL)
|
||||
.font(.footnote.weight(.semibold))
|
||||
|
||||
if supportPurchaseManager.canBypassInCurrentBuild {
|
||||
Divider()
|
||||
Text("TestFlight/Sandbox: You can bypass purchase for testing.")
|
||||
|
|
|
|||
24
PRIVACY.md
Normal file
24
PRIVACY.md
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
# Privacy Policy
|
||||
|
||||
Neon Vision Editor does not collect, sell, or share personal data for analytics or advertising.
|
||||
|
||||
## Data Handling
|
||||
|
||||
- Local editor content stays on-device unless you explicitly open/save/export files.
|
||||
- API tokens for optional AI providers are stored in Apple Keychain.
|
||||
- No telemetry is sent by default.
|
||||
|
||||
## Network Use
|
||||
|
||||
- Network requests occur only when you explicitly use optional AI/completion providers.
|
||||
- Requests are sent over HTTPS to the selected provider endpoint.
|
||||
|
||||
## In-App Purchase
|
||||
|
||||
- The support purchase is a one-time, non-consumable purchase.
|
||||
- No auto-renewing subscription is used.
|
||||
- Core app functionality is not locked behind the support purchase.
|
||||
|
||||
## Contact
|
||||
|
||||
For privacy questions, use the security contact in `SECURITY.md`.
|
||||
|
|
@ -170,6 +170,7 @@ Full release history: [`CHANGELOG.md`](CHANGELOG.md)
|
|||
|
||||
## Privacy & Security
|
||||
|
||||
- Privacy policy: [`PRIVACY.md`](PRIVACY.md).
|
||||
- API keys are stored in Keychain (`SecureTokenStore`), not `UserDefaults`.
|
||||
- Network traffic uses HTTPS.
|
||||
- No telemetry.
|
||||
|
|
|
|||
|
|
@ -12,6 +12,8 @@
|
|||
- Users can use the full app without purchasing.
|
||||
- Purchase UI is in Settings -> Support.
|
||||
- "Restore Purchases" is available in the same Support dialog.
|
||||
- Support purchase is one-time and non-consumable (no subscription / no auto-renewal).
|
||||
- Privacy policy link is shown in-app in the Support tab and documented in `PRIVACY.md`.
|
||||
|
||||
## Test Notes
|
||||
- Local StoreKit config file included at:
|
||||
|
|
|
|||
Loading…
Reference in a new issue