|
@@ -4,13 +4,15 @@ struct FrontPageView: View {
|
|
|
@EnvironmentObject private var subscriptions: SubscriptionManager
|
|
@EnvironmentObject private var subscriptions: SubscriptionManager
|
|
|
@EnvironmentObject private var appRating: AppRatingManager
|
|
@EnvironmentObject private var appRating: AppRatingManager
|
|
|
@Environment(AppearanceManager.self) private var appearanceManager
|
|
@Environment(AppearanceManager.self) private var appearanceManager
|
|
|
- @State private var viewModel = FrontPageViewModel()
|
|
|
|
|
- @State private var paywallViewModel = PaywallViewModel()
|
|
|
|
|
- @State private var postGeneratorViewModel = PostGeneratorViewModel()
|
|
|
|
|
- @State private var titleOptimizerViewModel = TitleOptimizerViewModel()
|
|
|
|
|
- @State private var commentWriterViewModel = CommentWriterViewModel()
|
|
|
|
|
- @State private var settingsViewModel = SettingsViewModel()
|
|
|
|
|
- @State private var historyViewModel = AIHistoryViewModel()
|
|
|
|
|
|
|
+ @Bindable var session: AppSessionState
|
|
|
|
|
+
|
|
|
|
|
+ private var viewModel: FrontPageViewModel { session.frontPage }
|
|
|
|
|
+ private var paywallViewModel: PaywallViewModel { session.paywall }
|
|
|
|
|
+ private var postGeneratorViewModel: PostGeneratorViewModel { session.postGenerator }
|
|
|
|
|
+ private var titleOptimizerViewModel: TitleOptimizerViewModel { session.titleOptimizer }
|
|
|
|
|
+ private var commentWriterViewModel: CommentWriterViewModel { session.commentWriter }
|
|
|
|
|
+ private var settingsViewModel: SettingsViewModel { session.settings }
|
|
|
|
|
+ private var historyViewModel: AIHistoryViewModel { session.history }
|
|
|
|
|
|
|
|
var body: some View {
|
|
var body: some View {
|
|
|
let _ = appearanceManager.isDarkMode
|
|
let _ = appearanceManager.isDarkMode
|
|
@@ -128,17 +130,20 @@ struct FrontPageView: View {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
ZStack {
|
|
ZStack {
|
|
|
- if viewModel.isRedditActive {
|
|
|
|
|
|
|
+ if viewModel.isRedditActive || viewModel.hasOpenedReddit {
|
|
|
RedditWebView(
|
|
RedditWebView(
|
|
|
- url: viewModel.redditLoadURL,
|
|
|
|
|
- reloadTrigger: viewModel.redditReloadTrigger,
|
|
|
|
|
- isDarkMode: appearanceManager.isDarkMode,
|
|
|
|
|
- goBackTrigger: viewModel.redditGoBackTrigger,
|
|
|
|
|
- onCanGoBackChange: { viewModel.updateRedditCanGoBack($0) },
|
|
|
|
|
- onAuthError: { viewModel.showAuthError($0) }
|
|
|
|
|
- )
|
|
|
|
|
- .id("reddit-webview")
|
|
|
|
|
- .frame(maxWidth: .infinity, maxHeight: .infinity)
|
|
|
|
|
|
|
+ url: viewModel.redditLoadURL,
|
|
|
|
|
+ reloadTrigger: viewModel.redditReloadTrigger,
|
|
|
|
|
+ isDarkMode: appearanceManager.isDarkMode,
|
|
|
|
|
+ goBackTrigger: viewModel.redditGoBackTrigger,
|
|
|
|
|
+ onCanGoBackChange: { viewModel.updateRedditCanGoBack($0) },
|
|
|
|
|
+ onAuthError: { viewModel.showAuthError($0) }
|
|
|
|
|
+ )
|
|
|
|
|
+ .id("reddit-webview")
|
|
|
|
|
+ .opacity(viewModel.isRedditActive ? 1 : 0)
|
|
|
|
|
+ .allowsHitTesting(viewModel.isRedditActive)
|
|
|
|
|
+ .accessibilityHidden(!viewModel.isRedditActive)
|
|
|
|
|
+ .frame(maxWidth: .infinity, maxHeight: .infinity)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
if viewModel.isSettingsActive {
|
|
if viewModel.isSettingsActive {
|
|
@@ -227,7 +232,7 @@ private struct ToolPlaceholderView: View {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
#Preview {
|
|
#Preview {
|
|
|
- FrontPageView()
|
|
|
|
|
|
|
+ FrontPageView(session: AppSessionState())
|
|
|
.environmentObject(SubscriptionManager())
|
|
.environmentObject(SubscriptionManager())
|
|
|
.environmentObject(AppRatingManager())
|
|
.environmentObject(AppRatingManager())
|
|
|
.environment(AppearanceManager.shared)
|
|
.environment(AppearanceManager.shared)
|