iap warning view
This commit is contained in:
@@ -80,13 +80,6 @@ struct DayView: View {
|
||||
showUpdateEntryAlert = false
|
||||
})
|
||||
}
|
||||
|
||||
if iapManager.showIAP {
|
||||
VStack {
|
||||
Spacer()
|
||||
PurchaseButtonView(height: 175, iapManager: iapManager)
|
||||
}
|
||||
}
|
||||
}
|
||||
.onAppear{
|
||||
iapManager.decideShowIAP()
|
||||
@@ -173,7 +166,6 @@ struct DayView: View {
|
||||
}
|
||||
)
|
||||
}
|
||||
.disabled(iapManager.showIAP)
|
||||
.background(
|
||||
theme.currentTheme.secondaryBGColor
|
||||
)
|
||||
|
||||
62
Shared/views/IAPWarningView.swift
Normal file
62
Shared/views/IAPWarningView.swift
Normal file
@@ -0,0 +1,62 @@
|
||||
//
|
||||
// PurchaseButtonView.swift
|
||||
// Feels
|
||||
//
|
||||
// Created by Trey Tartt on 7/7/22.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
import StoreKit
|
||||
|
||||
struct IAPWarningView: View {
|
||||
@AppStorage(UserDefaultsStore.Keys.theme.rawValue, store: GroupUserDefaults.groupDefaults) private var theme: Theme = .system
|
||||
@AppStorage(UserDefaultsStore.Keys.textColor.rawValue, store: GroupUserDefaults.groupDefaults) private var textColor: Color = DefaultTextColor.textColor
|
||||
@AppStorage(UserDefaultsStore.Keys.firstLaunchDate.rawValue, store: GroupUserDefaults.groupDefaults) private var firstLaunchDate = Date()
|
||||
|
||||
var iapManager: IAPManager
|
||||
|
||||
private let height: Float
|
||||
private let showManageSubClosure: (() -> Void)?
|
||||
@State private var showSettings = false
|
||||
|
||||
public init(height: Float, iapManager: IAPManager, showManageSubClosure: (() -> Void)? = nil, showCountdownTimer: Bool = false) {
|
||||
self.height = height
|
||||
self.showManageSubClosure = showManageSubClosure
|
||||
self.iapManager = iapManager
|
||||
}
|
||||
|
||||
var body: some View {
|
||||
VStack {
|
||||
Text(String(format: String(localized: "iap_warning_view_title"), iapManager.daysLeftBeforeIAP))
|
||||
.font(.body)
|
||||
.frame(minWidth: 0, maxWidth: .infinity)
|
||||
.background(theme.currentTheme.secondaryBGColor)
|
||||
|
||||
Button(action: {
|
||||
showSettings.toggle()
|
||||
}, label: {
|
||||
Text(String(localized: "iap_warning_view_buy_button"))
|
||||
.foregroundColor(.white)
|
||||
.bold()
|
||||
.frame(maxWidth: .infinity)
|
||||
.contentShape(Rectangle())
|
||||
})
|
||||
.frame(maxWidth: .infinity)
|
||||
.frame(height: 50)
|
||||
.background(RoundedRectangle(cornerRadius: 10).fill(DefaultMoodTint.color(forMood: .great)))
|
||||
}
|
||||
// .frame(height: CGFloat(height))
|
||||
.frame(minWidth: 0, maxWidth: .infinity)
|
||||
.padding()
|
||||
.background(theme.currentTheme.secondaryBGColor)
|
||||
.sheet(isPresented: $showSettings) {
|
||||
SettingsView()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct IAPWarningView_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
IAPWarningView(height: 175, iapManager: IAPManager())
|
||||
}
|
||||
}
|
||||
@@ -27,7 +27,7 @@ struct MonthView: View {
|
||||
@State private var showingSheet = false
|
||||
@StateObject private var onboardingData = OnboardingDataDataManager.shared
|
||||
@StateObject private var filteredDays = DaysFilterClass.shared
|
||||
|
||||
|
||||
class StupidAssDetailViewObservableObject: ObservableObject {
|
||||
@Published var fuckingWrapped: MonthDetailView? = nil
|
||||
@Published var showFuckingSheet = false
|
||||
@@ -44,6 +44,7 @@ struct MonthView: View {
|
||||
]
|
||||
|
||||
@ObservedObject var viewModel: DayViewViewModel
|
||||
@State private var iAPWarningViewHidden = false
|
||||
|
||||
var body: some View {
|
||||
ZStack {
|
||||
@@ -72,6 +73,12 @@ struct MonthView: View {
|
||||
)
|
||||
}
|
||||
.padding([.leading, .trailing])
|
||||
.background(
|
||||
GeometryReader { proxy in
|
||||
let offset = proxy.frame(in: .named("scroll")).minY
|
||||
Color.clear.preference(key: ViewOffsetKey.self, value: offset)
|
||||
}
|
||||
)
|
||||
}
|
||||
.disabled(iapManager.showIAP)
|
||||
}
|
||||
@@ -81,6 +88,13 @@ struct MonthView: View {
|
||||
Spacer()
|
||||
PurchaseButtonView(height: 175, iapManager: iapManager)
|
||||
}
|
||||
} else if iapManager.showIAPWarning {
|
||||
VStack {
|
||||
Spacer()
|
||||
if !iAPWarningViewHidden {
|
||||
IAPWarningView(height: 75, iapManager: iapManager)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.onAppear(perform: {
|
||||
@@ -101,6 +115,10 @@ struct MonthView: View {
|
||||
ShareSheet(photo: uiImage)
|
||||
}
|
||||
}
|
||||
.onPreferenceChange(ViewOffsetKey.self) { value in
|
||||
print(value)
|
||||
iAPWarningViewHidden = value < 0
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -230,7 +248,7 @@ extension MonthView {
|
||||
}
|
||||
}
|
||||
|
||||
struct HomeViewTwo_Previews: PreviewProvider {
|
||||
struct MonthView_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
MonthView(viewModel: DayViewViewModel(addMonthStartWeekdayPadding: true))
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@ struct YearView: View {
|
||||
@EnvironmentObject var iapManager: IAPManager
|
||||
@StateObject public var viewModel: YearViewModel
|
||||
@StateObject private var filteredDays = DaysFilterClass.shared
|
||||
@State private var iAPWarningViewHidden = false
|
||||
//[
|
||||
// 2001: [0: [], 1: [], 2: []],
|
||||
// 2002: [0: [], 1: [], 2: []]
|
||||
@@ -62,6 +63,13 @@ struct YearView: View {
|
||||
Spacer()
|
||||
PurchaseButtonView(height: 175, iapManager: iapManager)
|
||||
}
|
||||
} else if iapManager.showIAPWarning {
|
||||
VStack {
|
||||
Spacer()
|
||||
if !iAPWarningViewHidden {
|
||||
IAPWarningView(height: 75, iapManager: iapManager)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.onAppear(perform: {
|
||||
@@ -72,6 +80,10 @@ struct YearView: View {
|
||||
theme.currentTheme.bg
|
||||
.edgesIgnoringSafeArea(.all)
|
||||
)
|
||||
.onPreferenceChange(ViewOffsetKey.self) { value in
|
||||
print(value)
|
||||
iAPWarningViewHidden = value < 0
|
||||
}
|
||||
}
|
||||
|
||||
private var monthsHeader: some View {
|
||||
@@ -135,6 +147,12 @@ struct YearView: View {
|
||||
.cornerRadius(10)
|
||||
}
|
||||
.padding([.top, .leading, .trailing])
|
||||
.background(
|
||||
GeometryReader { proxy in
|
||||
let offset = proxy.frame(in: .named("scroll")).minY
|
||||
Color.clear.preference(key: ViewOffsetKey.self, value: offset)
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user