Skip to content

Commit

Permalink
Updated settings to use shared user preferences from main view contro…
Browse files Browse the repository at this point in the history
…ller
  • Loading branch information
alessandroboron committed Jan 22, 2025
1 parent efca889 commit 1a42e54
Show file tree
Hide file tree
Showing 6 changed files with 23 additions and 13 deletions.
3 changes: 2 additions & 1 deletion DuckDuckGo/MainViewController+Segues.swift
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,8 @@ extension MainViewController {
syncPausedStateManager: syncPausedStateManager,
privacyProDataReporter: privacyProDataReporter,
textZoomCoordinator: textZoomCoordinator,
aiChatSettings: aiChatSettings)
aiChatSettings: aiChatSettings,
maliciousSiteProtectionPreferencesManager: maliciousSiteProtectionPreferencesManager)
Pixel.fire(pixel: .settingsPresented)

if let navigationController = self.presentedViewController as? UINavigationController,
Expand Down
2 changes: 2 additions & 0 deletions DuckDuckGo/MainViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,7 @@ class MainViewController: UIViewController {
var viewCoordinator: MainViewCoordinator!

var appDidFinishLaunchingStartTime: CFAbsoluteTime?
let maliciousSiteProtectionPreferencesManager: MaliciousSiteProtectionPreferencesManaging

private lazy var aiChatViewControllerManager: AIChatViewControllerManager = {
let manager = AIChatViewControllerManager()
Expand Down Expand Up @@ -274,6 +275,7 @@ class MainViewController: UIViewController {
self.textZoomCoordinator = textZoomCoordinator
self.websiteDataManager = websiteDataManager
self.appDidFinishLaunchingStartTime = appDidFinishLaunchingStartTime
self.maliciousSiteProtectionPreferencesManager = maliciousSiteProtectionPreferencesManager

super.init(nibName: nil, bundle: nil)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ final class MaliciousSiteProtectionSettingsViewModel: ObservableObject {
private let urlOpener: URLOpener

init(
manager: MaliciousSiteProtectionPreferencesManaging = AppDependencyProvider.shared.maliciousSiteProtectionPreferencesManager,
manager: MaliciousSiteProtectionPreferencesManaging,
featureFlagger: MaliciousSiteProtectionFeatureFlagger = MaliciousSiteProtectionFeatureFlags(featureFlagger: AppDependencyProvider.shared.featureFlagger),
urlOpener: URLOpener = UIApplication.shared
) {
Expand Down
2 changes: 1 addition & 1 deletion DuckDuckGo/SettingsGeneralView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ struct SettingsGeneralView: View {
accessory: .toggle(isOn: viewModel.universalLinksBinding))
}

SettingsMaliciousProtectionView()
SettingsMaliciousProtectionView(model: MaliciousSiteProtectionSettingsViewModel(manager: viewModel.maliciousSiteProtectionPreferencesManager))

}
.applySettingsListModifiers(title: UserText.general,
Expand Down
20 changes: 12 additions & 8 deletions DuckDuckGo/SettingsMaliciousSiteProtectionView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -21,28 +21,32 @@ import SwiftUI
import DuckUI

struct SettingsMaliciousProtectionView: View {
@StateObject private var maliciousSiteProtectionSettingsModel = MaliciousSiteProtectionSettingsViewModel()
@ObservedObject private var model: MaliciousSiteProtectionSettingsViewModel

init(model: MaliciousSiteProtectionSettingsViewModel) {
self.model = model
}

var body: some View {
if maliciousSiteProtectionSettingsModel.shouldShowMaliciousSiteProtectionSection {
if model.shouldShowMaliciousSiteProtectionSection {
Section(
header: Text(UserText.MaliciousSiteProtectionSettings.header),
footer:
VStack(alignment: .leading, spacing: 10) {
Button(action: maliciousSiteProtectionSettingsModel.learnMoreAction) {
Button(action: model.learnMoreAction) {
Text(UserText.MaliciousSiteProtectionSettings.footerLearnMore)
.foregroundColor(.blueBase)
}

Text(UserText.MaliciousSiteProtectionSettings.footerDisabledMessage)
.opacity(maliciousSiteProtectionSettingsModel.isMaliciousSiteProtectionOn ? 0 : 1)
.opacity(model.isMaliciousSiteProtectionOn ? 0 : 1)
.foregroundColor(.red)
.font(.footnote)
}
) {
SettingsCellView(
label: UserText.MaliciousSiteProtectionSettings.toggleMessage,
accessory: .toggle(isOn: $maliciousSiteProtectionSettingsModel.isMaliciousSiteProtectionOn)
accessory: .toggle(isOn: $model.isMaliciousSiteProtectionOn)
)
}
} else {
Expand All @@ -51,6 +55,6 @@ struct SettingsMaliciousProtectionView: View {
}
}

#Preview {
SettingsMaliciousProtectionView()
}
//#Preview {
// SettingsMaliciousProtectionView(model: )
//}
7 changes: 5 additions & 2 deletions DuckDuckGo/SettingsViewModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ final class SettingsViewModel: ObservableObject {
let privacyProDataReporter: PrivacyProDataReporting?
let textZoomCoordinator: TextZoomCoordinating
let aiChatSettings: AIChatSettingsProvider
let maliciousSiteProtectionPreferencesManager: MaliciousSiteProtectionPreferencesManaging

// Subscription Dependencies
let subscriptionManager: SubscriptionManager
Expand Down Expand Up @@ -416,7 +417,9 @@ final class SettingsViewModel: ObservableObject {
syncPausedStateManager: any SyncPausedStateManaging,
privacyProDataReporter: PrivacyProDataReporting,
textZoomCoordinator: TextZoomCoordinating,
aiChatSettings: AIChatSettingsProvider) {
aiChatSettings: AIChatSettingsProvider,
maliciousSiteProtectionPreferencesManager: MaliciousSiteProtectionPreferencesManaging
) {

self.state = SettingsState.defaults
self.legacyViewProvider = legacyViewProvider
Expand All @@ -429,7 +432,7 @@ final class SettingsViewModel: ObservableObject {
self.privacyProDataReporter = privacyProDataReporter
self.textZoomCoordinator = textZoomCoordinator
self.aiChatSettings = aiChatSettings

self.maliciousSiteProtectionPreferencesManager = maliciousSiteProtectionPreferencesManager
setupNotificationObservers()
updateRecentlyVisitedSitesVisibility()
}
Expand Down

0 comments on commit 1a42e54

Please sign in to comment.