From 68a3c30debb751d0f94697cc322cfbfe5bb5c7b2 Mon Sep 17 00:00:00 2001 From: Federico Cappelli Date: Wed, 8 Nov 2023 13:28:30 +0100 Subject: [PATCH 01/19] experiments and tests --- DuckDuckGo.xcodeproj/project.pbxproj | 2 + .../xcshareddata/swiftpm/Package.resolved | 9 -- .../xcschemes/DuckDuckGo.xcscheme | 1 + .../PrivacyDashboardViewController.swift | 6 +- DuckDuckGo/ReportBrokenSiteView.swift | 121 +++++++++++++----- .../ReportBrokenSiteViewController.swift | 70 +++++++++- DuckDuckGo/UserText.swift | 20 ++- DuckDuckGo/en.lproj/Localizable.strings | 12 +- 8 files changed, 187 insertions(+), 54 deletions(-) diff --git a/DuckDuckGo.xcodeproj/project.pbxproj b/DuckDuckGo.xcodeproj/project.pbxproj index 10a58401c4..a88fd01184 100644 --- a/DuckDuckGo.xcodeproj/project.pbxproj +++ b/DuckDuckGo.xcodeproj/project.pbxproj @@ -2387,6 +2387,7 @@ F1134ECF1F40EBE200B73467 /* JsonTestDataLoader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = JsonTestDataLoader.swift; sourceTree = ""; }; F1134ED41F40F15800B73467 /* StatisticsUserDefaultsTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StatisticsUserDefaultsTests.swift; sourceTree = ""; }; F114C55A1E66EB020018F95F /* NibLoading.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NibLoading.swift; sourceTree = ""; }; + F1303C322AFBB54E0043204C /* BrowserServicesKit */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = BrowserServicesKit; path = ../BrowserServicesKit; sourceTree = ""; }; F130D7391E5776C500C45811 /* OmniBarDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OmniBarDelegate.swift; sourceTree = ""; }; F1386BA31E6846C40062FC3C /* TabDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TabDelegate.swift; sourceTree = ""; }; F13B4BBF1F180D8A00814661 /* TabsModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TabsModel.swift; sourceTree = ""; }; @@ -3544,6 +3545,7 @@ 83ED3B8D1FA8E63700B47556 /* README.md */, 83ED3B8C1FA8E61D00B47556 /* ManualTestsScript.md */, 85A313962028E78A00327D00 /* release_notes.txt */, + F1303C322AFBB54E0043204C /* BrowserServicesKit */, ); sourceTree = ""; }; diff --git a/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 0836aa38a9..b440d27622 100644 --- a/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -10,15 +10,6 @@ "version": "3.0.0" } }, - { - "package": "BrowserServicesKit", - "repositoryURL": "https://github.com/DuckDuckGo/BrowserServicesKit", - "state": { - "branch": null, - "revision": "71e916d070cedcba9ccb3ce9431797260bf5cbea", - "version": "82.1.0" - } - }, { "package": "CocoaAsyncSocket", "repositoryURL": "https://github.com/robbiehanson/CocoaAsyncSocket", diff --git a/DuckDuckGo.xcodeproj/xcshareddata/xcschemes/DuckDuckGo.xcscheme b/DuckDuckGo.xcodeproj/xcshareddata/xcschemes/DuckDuckGo.xcscheme index 5383c46f83..76f625d2e3 100644 --- a/DuckDuckGo.xcodeproj/xcshareddata/xcschemes/DuckDuckGo.xcscheme +++ b/DuckDuckGo.xcodeproj/xcshareddata/xcschemes/DuckDuckGo.xcscheme @@ -90,6 +90,7 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + language = "IDELaunchSchemeLanguageDoubleLocalizedStrings" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" diff --git a/DuckDuckGo/PrivacyDashboardViewController.swift b/DuckDuckGo/PrivacyDashboardViewController.swift index 319e31b91e..14e619d424 100644 --- a/DuckDuckGo/PrivacyDashboardViewController.swift +++ b/DuckDuckGo/PrivacyDashboardViewController.swift @@ -71,8 +71,10 @@ class PrivacyDashboardViewController: UIViewController { override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if let navController = segue.destination as? UINavigationController, - let brokenSiteScreen = navController.topViewController as? ReportBrokenSiteViewController { - brokenSiteScreen.brokenSiteInfo = tabViewController?.getCurrentWebsiteInfo() + let brokenSiteVC = navController.topViewController as? ReportBrokenSiteViewController { + brokenSiteVC.brokenSiteInfo = tabViewController?.getCurrentWebsiteInfo() + brokenSiteVC.privacyConfigurationManager = privacyConfigurationManager + brokenSiteVC.contentBlockingManager = contentBlockingManager } } } diff --git a/DuckDuckGo/ReportBrokenSiteView.swift b/DuckDuckGo/ReportBrokenSiteView.swift index 788c524e29..14819627c0 100644 --- a/DuckDuckGo/ReportBrokenSiteView.swift +++ b/DuckDuckGo/ReportBrokenSiteView.swift @@ -25,21 +25,54 @@ struct ReportBrokenSiteView: View { let categories: [BrokenSite.Category] let submitReport: (BrokenSite.Category?, String) -> Void - + let toggleProtection: (Bool) -> Void @State private var selectedCategory: BrokenSite.Category? @State private var description: String = "" @State private var placeholderText: String = UserText.brokenSiteCommentPlaceholder + @State var isProtected: Bool + func submitForm() { submitReport(selectedCategory, description) } var form: some View { Form { + Section { + HStack { + let protectionStatusString = isProtected ? "ON" : "OFF" + let label = UserText.brokenSiteProtectionSwitchLabel.replacingOccurrences(of: "%@", with: protectionStatusString) + + Text(label) + .lineLimit(1) + .daxBodyRegular() + .foregroundColor(Color(designSystemColor: .textPrimary)) + + Spacer() + + Toggle("", isOn: $isProtected) + .labelsHidden() + .onChange(of: isProtected) { value in + toggleProtection(value) + } + } + .listRowBackground(Color(designSystemColor: .container)) +// .frame(maxWidth: .infinity) - } header: { + if isProtected { + let baseColor = UIColor(Color(designSystemColor: .accent)).withAlphaComponent(0.18) + let sectionBgColor = Color(baseColor) + Text(UserText.brokenSiteProtectionBanner) + .lineLimit(1) + .daxBodyRegular() + .foregroundColor(Color(designSystemColor: .textPrimary)) + .listRowBackground(sectionBgColor) + } + } + +// Section { VStack { Image("Breakage-128") .resizable() @@ -50,58 +83,67 @@ struct ReportBrokenSiteView: View { .textCase(nil) .multilineTextAlignment(.center) .daxBodyRegular() - .foregroundColor(Color(designSystemColor: .textSecondary)) + .foregroundColor(Color(designSystemColor: .textPrimary)) } .frame(maxWidth: .infinity) - } - .listRowBackground(Color.clear) +// } +// .listRowBackground(Color.clear) + // TODO: delete (header: Text(UserText.brokenSiteCategoryTitle)) Section { - HStack { - Picker("", selection: $selectedCategory) { - HStack { - Text(UserText.brokenSiteCategoryPlaceholder) - Spacer() - } + Picker("", selection: $selectedCategory) { + Text("Select the type of issue") .tag(nil as BrokenSite.Category?) - - ForEach(categories) { cat in - HStack { - Text(cat.categoryText) - Spacer() - } - .tag(Optional(cat)) - } - } - .labelsHidden() - Spacer() + ForEach(categories) { cat in + Text(cat.categoryText) + .tag(Optional(cat)) + } } - .padding(.leading, Const.Size.pickerPadding) - } header: { - Text(UserText.brokenSiteCategoryTitle) - } - - Section { + .frame(maxWidth: .infinity) + .labelsHidden() +// .padding(.leading, Const.Size.pickerPadding) + // As of July 2023 SwiftUI STILL does not support placeholders for `TextEditor` // Until that time we have to use this hack to show a placeholder // https://stackoverflow.com/a/65406506 ZStack { if self.description.isEmpty { TextEditor(text: $placeholderText) - .font(.body) + .daxSubheadRegular() .foregroundColor(Color(UIColor.placeholderText)) .disabled(true) } TextEditor(text: $description) - .font(.body) + .daxSubheadRegular() } .padding(.leading, Const.Size.commentFieldPadding) .frame(minHeight: Const.Size.minCommentHeight) - } header: { - Text(UserText.brokenSiteSectionTitle) } + .frame(maxWidth: .infinity) + .listRowBackground(Color(designSystemColor: .container)) + + // TODO: delete (header: Text(UserText.brokenSiteSectionTitle)) +// Section { +// // As of July 2023 SwiftUI STILL does not support placeholders for `TextEditor` +// // Until that time we have to use this hack to show a placeholder +// // https://stackoverflow.com/a/65406506 +// ZStack { +// if self.description.isEmpty { +// TextEditor(text: $placeholderText) +// .daxSubheadRegular() +// .foregroundColor(Color(UIColor.placeholderText)) +// .disabled(true) +// } +// +// TextEditor(text: $description) +// .daxSubheadRegular() +// } +// .padding(.leading, Const.Size.commentFieldPadding) +// .frame(minHeight: Const.Size.minCommentHeight) +// } +// .listRowBackground(Color(designSystemColor: .container)) Section { Button(action: { @@ -113,6 +155,15 @@ struct ReportBrokenSiteView: View { .listRowBackground(Color.clear) } .listRowInsets(EdgeInsets()) + + Section { + Text("Reports sent to DuckDuckGo only include info required to help us address your feedback.") + .multilineTextAlignment(.center) + .daxSubheadRegular() + .foregroundColor(Color(designSystemColor: .textPrimary)) + } + .frame(maxWidth: .infinity) + .listRowInsets(EdgeInsets()) } } @@ -121,7 +172,7 @@ struct ReportBrokenSiteView: View { if #available(iOS 16, *) { form .scrollContentBackground(.hidden) - .background(Color(designSystemColor: .background)) + .background(Color(designSystemColor: .surface)) } else { form .background(Color(designSystemColor: .background)) @@ -136,7 +187,7 @@ struct ReportBrokenSiteView: View { private enum Const { enum Size { static let imageSize: CGFloat = 128 - static let minCommentHeight: CGFloat = 60 + static let minCommentHeight: CGFloat = 80 static let commentFieldPadding: CGFloat = -4 static let pickerPadding: CGFloat = -12 static let buttonHeight: CGFloat = 30 @@ -145,6 +196,6 @@ private enum Const { struct ReportBrokenSiteView_Previews: PreviewProvider { static var previews: some View { - ReportBrokenSiteView(categories: BrokenSite.Category.allCases, submitReport: { _, _ in }) + ReportBrokenSiteView(categories: BrokenSite.Category.allCases, submitReport: { _, _ in }, toggleProtection: { _ in }, isProtected: true) } } diff --git a/DuckDuckGo/ReportBrokenSiteViewController.swift b/DuckDuckGo/ReportBrokenSiteViewController.swift index ea23d8112c..87bfbbce6e 100644 --- a/DuckDuckGo/ReportBrokenSiteViewController.swift +++ b/DuckDuckGo/ReportBrokenSiteViewController.swift @@ -19,12 +19,21 @@ import UIKit import SwiftUI +import BrowserServicesKit class ReportBrokenSiteViewController: UIViewController { +// enum ReportBrokenSiteSource { +// case privacyDashboard +// case +// } + public var brokenSiteInfo: BrokenSiteInfo? + var privacyConfigurationManager: PrivacyConfigurationManaging? + var contentBlockingManager: ContentBlockerRulesManager? private var reportView: ReportBrokenSiteView? +// private let source: private let categories: [BrokenSite.Category] = { var categories = BrokenSite.Category.allCases @@ -34,12 +43,25 @@ class ReportBrokenSiteViewController: UIViewController { return categories }() +// init(privacyConfigurationManager: PrivacyConfigurationManaging, contentBlockingManager: ContentBlockerRulesManager) { +// super.init( +// self.privacyConfigurationManager = privacyConfigurationManager +// self.contentBlockingManager = contentBlockingManager +// } +// +// required init?(coder: NSCoder) { +// fatalError("init(coder:) has not been implemented") +// } + override func viewDidLoad() { super.viewDidLoad() applyTheme(ThemeManager.shared.currentTheme) - reportView = ReportBrokenSiteView(categories: categories, submitReport: submitForm(category:description:)) + reportView = ReportBrokenSiteView(categories: categories, + submitReport: submitForm(category:description:), + toggleProtection: protectionSwitchChangeHandler(enabled:), + isProtected: true) // TODO: here let hc = UIHostingController(rootView: reportView) self.addChild(hc) @@ -67,6 +89,31 @@ class ReportBrokenSiteViewController: UIViewController { ActionMessageView.present(message: UserText.feedbackSumbittedConfirmation) dismiss(animated: true) } + + func protectionSwitchChangeHandler(enabled: Bool) { + + let domain = "" // TODO: + guard let privacyConfigurationManager = privacyConfigurationManager, + let contentBlockingManager = contentBlockingManager else { + fatalError("Dependencies not configured") + } + + let privacyConfiguration = privacyConfigurationManager.privacyConfig + + if enabled { + privacyConfiguration.userEnabledProtection(forDomain: domain) + ActionMessageView.present(message: UserText.messageProtectionEnabled.format(arguments: domain)) + } else { + privacyConfiguration.userDisabledProtection(forDomain: domain) + ActionMessageView.present(message: UserText.messageProtectionDisabled.format(arguments: domain)) + } + + contentBlockingManager.scheduleCompilation() + +// privacyDashboardController.didStartRulesCompilation() + +// Pixel.fire(pixel: enabled ? .privacyDashboardProtectionEnabled : .privacyDashboardProtectionDisabled) + } } extension ReportBrokenSiteViewController: Themable { @@ -74,6 +121,25 @@ extension ReportBrokenSiteViewController: Themable { func decorate(with theme: Theme) { decorateNavigationBar(with: theme) - view.backgroundColor = theme.backgroundColor + /* + navigationController?.navigationBar.barTintColor = theme.barBackgroundColor + navigationController?.navigationBar.tintColor = theme.navigationBarTintColor + + var titleAttrs = navigationController?.navigationBar.titleTextAttributes ?? [:] + titleAttrs[NSAttributedString.Key.foregroundColor] = theme.navigationBarTitleColor + navigationController?.navigationBar.titleTextAttributes = titleAttrs + + if #available(iOS 15.0, *) { + let appearance = UINavigationBarAppearance() + appearance.shadowColor = .clear + appearance.backgroundColor = theme.backgroundColor + appearance.titleTextAttributes = titleAttrs + + navigationController?.navigationBar.standardAppearance = appearance + navigationController?.navigationBar.scrollEdgeAppearance = appearance + } + */ + + view.backgroundColor = UIColor(Color(designSystemColor: .surface)) } } diff --git a/DuckDuckGo/UserText.swift b/DuckDuckGo/UserText.swift index 0447b01e09..667a3b56ec 100644 --- a/DuckDuckGo/UserText.swift +++ b/DuckDuckGo/UserText.swift @@ -91,12 +91,26 @@ public struct UserText { public static let navigationTitleEdit = NSLocalizedString("navigation.title.edit", value: "Edit", comment: "Edit button") public static let navigationTitleDone = NSLocalizedString("navigation.title.done", value: "Done", comment: "Finish editing bookmarks button") - static let reportBrokenSiteHeader = NSLocalizedString("report.brokensite.header", value: "Submitting an anonymous broken site report helps us debug these issues and improve the app.", comment: "") + static let reportBrokenSiteHeader = NSLocalizedString("report.brokensite.header", value: "Submitting an anonymous broken site report helps us improve the app.", comment: "") + + + + + + static let brokenSiteProtectionSwitchLabel = NSLocalizedString("brokensite.switchLabel", value: "Protections are %@ for this website", comment: "Broken Site protection switch label") + static let brokenSiteProtectionBanner = NSLocalizedString("brokensite.protectionBanner", value: "Turning protection OFF maight help.", comment: "Broken Site protection banner") + + + + + static let brokenSiteSectionTitle = NSLocalizedString("brokensite.sectionTitle", value: "DESCRIBE WHAT HAPPENED", comment: "Broken Site Section Title") static let brokenSiteCategoryTitle = NSLocalizedString("brokensite.categoryTitle", value: "SELECT A CATEGORY", comment: "Broken Site Category Section Title") - static let brokenSiteCategoryPlaceholder = NSLocalizedString("brokensite.categoryPlaceholder", value: "Pick your issue from the list...", comment: "Broken Site Category Placeholder") - static let brokenSiteCommentPlaceholder = NSLocalizedString("brokensite.commentPlaceholder", value: "Sharing more details can help us address this issue", comment: "Broken Site Comment Placeholder") + static let brokenSiteCategoryPlaceholder = NSLocalizedString("brokensite.categoryPlaceholder", value: "Describe what happened", comment: "Broken Site Category Placeholder") + + static let brokenSiteCommentPlaceholder = NSLocalizedString("brokensite.commentPlaceholder", value: "Share more details (optional):\n• What happened?\n• What should have happened?\n• Did turning off protections help?", comment: "Broken Site Comment Placeholder") + static let brokenSiteCategoryImages = NSLocalizedString("brokensite.category.images", value: "Images didn’t load", comment: "Broken Site Category") static let brokenSiteCategoryPaywall = NSLocalizedString("brokensite.category.paywall", value: "The site asked me to disable", comment: "Broken Site Category") diff --git a/DuckDuckGo/en.lproj/Localizable.strings b/DuckDuckGo/en.lproj/Localizable.strings index bdcc498b88..8f3584c7af 100644 --- a/DuckDuckGo/en.lproj/Localizable.strings +++ b/DuckDuckGo/en.lproj/Localizable.strings @@ -773,17 +773,23 @@ "brokensite.category.videos" = "Video didn’t play"; /* Broken Site Category Placeholder */ -"brokensite.categoryPlaceholder" = "Pick your issue from the list..."; +"brokensite.categoryPlaceholder" = "Describe what happened"; /* Broken Site Category Section Title */ "brokensite.categoryTitle" = "SELECT A CATEGORY"; /* Broken Site Comment Placeholder */ -"brokensite.commentPlaceholder" = "Sharing more details can help us address this issue"; +"brokensite.commentPlaceholder" = "Share more details (optional):\n• What happened?\n• What should have happened?\n• Did turning off protections help?"; + +/* Broken Site protection banner */ +"brokensite.protectionBanner" = "Turning protection OFF maight help."; /* Broken Site Section Title */ "brokensite.sectionTitle" = "DESCRIBE WHAT HAPPENED"; +/* Broken Site protection switch label */ +"brokensite.switchLabel" = "Protections are %@ for this website"; + /* Title for a section containing only items from past month */ "date.range.past-month" = "Past month"; @@ -1580,7 +1586,7 @@ https://duckduckgo.com/mac"; "prompt.custom.url.scheme.title" = "Open in Another App?"; /* No comment provided by engineer. */ -"report.brokensite.header" = "Submitting an anonymous broken site report helps us debug these issues and improve the app."; +"report.brokensite.header" = "Submitting an anonymous broken site report helps us improve the app."; /* No comment provided by engineer. */ "search.hint.duckduckgo" = "Search or enter address"; From ca2449908f838a08280958963d702ef2eb04bea0 Mon Sep 17 00:00:00 2001 From: Federico Cappelli Date: Thu, 9 Nov 2023 14:41:43 +0100 Subject: [PATCH 02/19] test 2 --- DuckDuckGo.xcodeproj/project.pbxproj | 4 ++-- .../xcshareddata/xcschemes/DuckDuckGo.xcscheme | 6 +++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/DuckDuckGo.xcodeproj/project.pbxproj b/DuckDuckGo.xcodeproj/project.pbxproj index a88fd01184..4aac76e54d 100644 --- a/DuckDuckGo.xcodeproj/project.pbxproj +++ b/DuckDuckGo.xcodeproj/project.pbxproj @@ -2387,7 +2387,6 @@ F1134ECF1F40EBE200B73467 /* JsonTestDataLoader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = JsonTestDataLoader.swift; sourceTree = ""; }; F1134ED41F40F15800B73467 /* StatisticsUserDefaultsTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StatisticsUserDefaultsTests.swift; sourceTree = ""; }; F114C55A1E66EB020018F95F /* NibLoading.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NibLoading.swift; sourceTree = ""; }; - F1303C322AFBB54E0043204C /* BrowserServicesKit */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = BrowserServicesKit; path = ../BrowserServicesKit; sourceTree = ""; }; F130D7391E5776C500C45811 /* OmniBarDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OmniBarDelegate.swift; sourceTree = ""; }; F1386BA31E6846C40062FC3C /* TabDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TabDelegate.swift; sourceTree = ""; }; F13B4BBF1F180D8A00814661 /* TabsModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TabsModel.swift; sourceTree = ""; }; @@ -2429,6 +2428,7 @@ F17D723B1E8BB374003E8B0E /* AppDeepLinkSchemes.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDeepLinkSchemes.swift; sourceTree = ""; }; F189AED61F18F6DE001EBAE1 /* TabTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TabTests.swift; sourceTree = ""; }; F189AEE31F18FDAF001EBAE1 /* LinkTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LinkTests.swift; sourceTree = ""; }; + F192B2482AFBD293001ED36C /* BrowserServicesKit */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = BrowserServicesKit; path = ../BrowserServicesKit; sourceTree = ""; }; F194FAEC1F14E2B3009B4DF8 /* UIFontExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIFontExtension.swift; sourceTree = ""; }; F194FAFA1F14E622009B4DF8 /* UIFontExtensionTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIFontExtensionTests.swift; sourceTree = ""; }; F197EA3B1E6885F20029BDC1 /* TextFieldWithInsets.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = TextFieldWithInsets.swift; path = ../Core/TextFieldWithInsets.swift; sourceTree = ""; }; @@ -3545,7 +3545,7 @@ 83ED3B8D1FA8E63700B47556 /* README.md */, 83ED3B8C1FA8E61D00B47556 /* ManualTestsScript.md */, 85A313962028E78A00327D00 /* release_notes.txt */, - F1303C322AFBB54E0043204C /* BrowserServicesKit */, + F192B2482AFBD293001ED36C /* BrowserServicesKit */, ); sourceTree = ""; }; diff --git a/DuckDuckGo.xcodeproj/xcshareddata/xcschemes/DuckDuckGo.xcscheme b/DuckDuckGo.xcodeproj/xcshareddata/xcschemes/DuckDuckGo.xcscheme index 76f625d2e3..fe98091a79 100644 --- a/DuckDuckGo.xcodeproj/xcshareddata/xcschemes/DuckDuckGo.xcscheme +++ b/DuckDuckGo.xcodeproj/xcshareddata/xcschemes/DuckDuckGo.xcscheme @@ -1,7 +1,7 @@ + version = "1.7"> @@ -133,6 +133,10 @@ isEnabled = "NO"> + + Date: Tue, 14 Nov 2023 14:50:38 +0000 Subject: [PATCH 03/19] PrivacyDashboard localised strings removed, old report broken website impl commented out --- DuckDuckGo.xcodeproj/project.pbxproj | 96 ++++------- .../xcshareddata/swiftpm/Package.resolved | 18 --- DuckDuckGo/Base.lproj/Feedback.storyboard | 63 ++------ DuckDuckGo/Base.lproj/Settings.storyboard | 16 +- .../Broken site/BrokenSiteCategories.swift | 63 ++++++++ .../{ => Broken site}/BrokenSiteInfo.swift | 6 +- .../Broken site/ReportBrokenSiteView.swift | 150 ++++++++++++++++++ .../ReportBrokenSiteViewController.swift | 79 +++++++++ DuckDuckGo/BrokenSiteCategories.swift | 63 -------- DuckDuckGo/MainViewController+Segues.swift | 33 ++-- .../Base.lproj/PrivacyDashboard.storyboard | 13 +- .../PrivacyDashboardViewController.swift | 58 +++++-- DuckDuckGo/ReportBrokenSiteView.swift | 150 ------------------ .../ReportBrokenSiteViewController.swift | 79 --------- DuckDuckGo/bg.lproj/PrivacyDashboard.strings | 129 --------------- DuckDuckGo/cs.lproj/PrivacyDashboard.strings | 129 --------------- DuckDuckGo/da.lproj/PrivacyDashboard.strings | 129 --------------- DuckDuckGo/de.lproj/PrivacyDashboard.strings | 129 --------------- DuckDuckGo/el.lproj/PrivacyDashboard.strings | 129 --------------- DuckDuckGo/es.lproj/PrivacyDashboard.strings | 129 --------------- DuckDuckGo/et.lproj/PrivacyDashboard.strings | 129 --------------- DuckDuckGo/fi.lproj/PrivacyDashboard.strings | 129 --------------- DuckDuckGo/fr.lproj/PrivacyDashboard.strings | 129 --------------- DuckDuckGo/hr.lproj/PrivacyDashboard.strings | 129 --------------- DuckDuckGo/hu.lproj/PrivacyDashboard.strings | 129 --------------- DuckDuckGo/it.lproj/PrivacyDashboard.strings | 129 --------------- DuckDuckGo/lt.lproj/PrivacyDashboard.strings | 129 --------------- DuckDuckGo/lv.lproj/PrivacyDashboard.strings | 129 --------------- DuckDuckGo/nb.lproj/PrivacyDashboard.strings | 129 --------------- DuckDuckGo/nl.lproj/PrivacyDashboard.strings | 129 --------------- DuckDuckGo/pl.lproj/PrivacyDashboard.strings | 129 --------------- DuckDuckGo/pt.lproj/PrivacyDashboard.strings | 129 --------------- DuckDuckGo/ro.lproj/PrivacyDashboard.strings | 129 --------------- DuckDuckGo/ru.lproj/PrivacyDashboard.strings | 129 --------------- DuckDuckGo/sk.lproj/PrivacyDashboard.strings | 129 --------------- DuckDuckGo/sl.lproj/PrivacyDashboard.strings | 129 --------------- DuckDuckGo/sv.lproj/PrivacyDashboard.strings | 129 --------------- DuckDuckGo/tr.lproj/PrivacyDashboard.strings | 129 --------------- 38 files changed, 404 insertions(+), 3579 deletions(-) create mode 100644 DuckDuckGo/Broken site/BrokenSiteCategories.swift rename DuckDuckGo/{ => Broken site}/BrokenSiteInfo.swift (96%) create mode 100644 DuckDuckGo/Broken site/ReportBrokenSiteView.swift create mode 100644 DuckDuckGo/Broken site/ReportBrokenSiteViewController.swift delete mode 100644 DuckDuckGo/BrokenSiteCategories.swift rename DuckDuckGo/{ => PrivacyDashboard}/Base.lproj/PrivacyDashboard.storyboard (84%) rename DuckDuckGo/{ => PrivacyDashboard}/PrivacyDashboardViewController.swift (76%) delete mode 100644 DuckDuckGo/ReportBrokenSiteView.swift delete mode 100644 DuckDuckGo/ReportBrokenSiteViewController.swift delete mode 100644 DuckDuckGo/bg.lproj/PrivacyDashboard.strings delete mode 100644 DuckDuckGo/cs.lproj/PrivacyDashboard.strings delete mode 100644 DuckDuckGo/da.lproj/PrivacyDashboard.strings delete mode 100644 DuckDuckGo/de.lproj/PrivacyDashboard.strings delete mode 100644 DuckDuckGo/el.lproj/PrivacyDashboard.strings delete mode 100644 DuckDuckGo/es.lproj/PrivacyDashboard.strings delete mode 100644 DuckDuckGo/et.lproj/PrivacyDashboard.strings delete mode 100644 DuckDuckGo/fi.lproj/PrivacyDashboard.strings delete mode 100644 DuckDuckGo/fr.lproj/PrivacyDashboard.strings delete mode 100644 DuckDuckGo/hr.lproj/PrivacyDashboard.strings delete mode 100644 DuckDuckGo/hu.lproj/PrivacyDashboard.strings delete mode 100644 DuckDuckGo/it.lproj/PrivacyDashboard.strings delete mode 100644 DuckDuckGo/lt.lproj/PrivacyDashboard.strings delete mode 100644 DuckDuckGo/lv.lproj/PrivacyDashboard.strings delete mode 100644 DuckDuckGo/nb.lproj/PrivacyDashboard.strings delete mode 100644 DuckDuckGo/nl.lproj/PrivacyDashboard.strings delete mode 100644 DuckDuckGo/pl.lproj/PrivacyDashboard.strings delete mode 100644 DuckDuckGo/pt.lproj/PrivacyDashboard.strings delete mode 100644 DuckDuckGo/ro.lproj/PrivacyDashboard.strings delete mode 100644 DuckDuckGo/ru.lproj/PrivacyDashboard.strings delete mode 100644 DuckDuckGo/sk.lproj/PrivacyDashboard.strings delete mode 100644 DuckDuckGo/sl.lproj/PrivacyDashboard.strings delete mode 100644 DuckDuckGo/sv.lproj/PrivacyDashboard.strings delete mode 100644 DuckDuckGo/tr.lproj/PrivacyDashboard.strings diff --git a/DuckDuckGo.xcodeproj/project.pbxproj b/DuckDuckGo.xcodeproj/project.pbxproj index aace48e673..3f0b2542ee 100644 --- a/DuckDuckGo.xcodeproj/project.pbxproj +++ b/DuckDuckGo.xcodeproj/project.pbxproj @@ -1539,7 +1539,6 @@ 981685462521EEF000FA91A1 /* nb */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nb; path = nb.lproj/Home.strings; sourceTree = ""; }; 981685482521EEF100FA91A1 /* nb */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nb; path = nb.lproj/OmniBar.strings; sourceTree = ""; }; 981685492521EEF100FA91A1 /* nb */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nb; path = nb.lproj/Authentication.strings; sourceTree = ""; }; - 9816854A2521EEF100FA91A1 /* nb */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nb; path = nb.lproj/PrivacyDashboard.strings; sourceTree = ""; }; 9816854C2521EEF200FA91A1 /* nb */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nb; path = nb.lproj/Settings.strings; sourceTree = ""; }; 9816854D2521EEF300FA91A1 /* nb */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nb; path = nb.lproj/Tab.strings; sourceTree = ""; }; 9816854E2521EEF300FA91A1 /* nb */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nb; path = nb.lproj/TabSwitcher.strings; sourceTree = ""; }; @@ -1642,7 +1641,6 @@ 9866DB8E251CA8F400612E3A /* bg */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = bg; path = bg.lproj/Home.strings; sourceTree = ""; }; 9866DB90251CA8F400612E3A /* bg */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = bg; path = bg.lproj/OmniBar.strings; sourceTree = ""; }; 9866DB91251CA8F400612E3A /* bg */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = bg; path = bg.lproj/Authentication.strings; sourceTree = ""; }; - 9866DB92251CA8F400612E3A /* bg */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = bg; path = bg.lproj/PrivacyDashboard.strings; sourceTree = ""; }; 9866DB94251CA8F500612E3A /* bg */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = bg; path = bg.lproj/Settings.strings; sourceTree = ""; }; 9866DB95251CA8F500612E3A /* bg */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = bg; path = bg.lproj/Tab.strings; sourceTree = ""; }; 9866DB96251CA8F500612E3A /* bg */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = bg; path = bg.lproj/TabSwitcher.strings; sourceTree = ""; }; @@ -1660,7 +1658,6 @@ 9866DBA5251CA91800612E3A /* hr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hr; path = hr.lproj/Home.strings; sourceTree = ""; }; 9866DBA7251CA91800612E3A /* hr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hr; path = hr.lproj/OmniBar.strings; sourceTree = ""; }; 9866DBA8251CA91800612E3A /* hr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hr; path = hr.lproj/Authentication.strings; sourceTree = ""; }; - 9866DBA9251CA91800612E3A /* hr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hr; path = hr.lproj/PrivacyDashboard.strings; sourceTree = ""; }; 9866DBAB251CA91800612E3A /* hr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hr; path = hr.lproj/Settings.strings; sourceTree = ""; }; 9866DBAC251CA91800612E3A /* hr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hr; path = hr.lproj/Tab.strings; sourceTree = ""; }; 9866DBAD251CA91800612E3A /* hr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hr; path = hr.lproj/TabSwitcher.strings; sourceTree = ""; }; @@ -1678,7 +1675,6 @@ 9866DBBC251CA92A00612E3A /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/Home.strings; sourceTree = ""; }; 9866DBBE251CA92B00612E3A /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/OmniBar.strings; sourceTree = ""; }; 9866DBBF251CA92B00612E3A /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/Authentication.strings; sourceTree = ""; }; - 9866DBC0251CA92B00612E3A /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/PrivacyDashboard.strings; sourceTree = ""; }; 9866DBC2251CA92B00612E3A /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/Settings.strings; sourceTree = ""; }; 9866DBC3251CA92C00612E3A /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/Tab.strings; sourceTree = ""; }; 9866DBC4251CA92C00612E3A /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/TabSwitcher.strings; sourceTree = ""; }; @@ -1696,7 +1692,6 @@ 9866DBD3251CA93900612E3A /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/Home.strings; sourceTree = ""; }; 9866DBD5251CA93900612E3A /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/OmniBar.strings; sourceTree = ""; }; 9866DBD6251CA93900612E3A /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/Authentication.strings; sourceTree = ""; }; - 9866DBD7251CA93900612E3A /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/PrivacyDashboard.strings; sourceTree = ""; }; 9866DBD9251CA93A00612E3A /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/Settings.strings; sourceTree = ""; }; 9866DBDA251CA93A00612E3A /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/Tab.strings; sourceTree = ""; }; 9866DBDB251CA93A00612E3A /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/TabSwitcher.strings; sourceTree = ""; }; @@ -1714,7 +1709,6 @@ 9866DBEA251CA94F00612E3A /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/Home.strings; sourceTree = ""; }; 9866DBEC251CA94F00612E3A /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/OmniBar.strings; sourceTree = ""; }; 9866DBED251CA94F00612E3A /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/Authentication.strings; sourceTree = ""; }; - 9866DBEE251CA94F00612E3A /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/PrivacyDashboard.strings; sourceTree = ""; }; 9866DBF0251CA95000612E3A /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/Settings.strings; sourceTree = ""; }; 9866DBF1251CA95000612E3A /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/Tab.strings; sourceTree = ""; }; 9866DBF2251CA95000612E3A /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/TabSwitcher.strings; sourceTree = ""; }; @@ -1732,7 +1726,6 @@ 9866DC01251CA96200612E3A /* et */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = et; path = et.lproj/Home.strings; sourceTree = ""; }; 9866DC03251CA96300612E3A /* et */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = et; path = et.lproj/OmniBar.strings; sourceTree = ""; }; 9866DC04251CA96300612E3A /* et */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = et; path = et.lproj/Authentication.strings; sourceTree = ""; }; - 9866DC05251CA96300612E3A /* et */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = et; path = et.lproj/PrivacyDashboard.strings; sourceTree = ""; }; 9866DC07251CA96300612E3A /* et */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = et; path = et.lproj/Settings.strings; sourceTree = ""; }; 9866DC08251CA96300612E3A /* et */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = et; path = et.lproj/Tab.strings; sourceTree = ""; }; 9866DC09251CA96300612E3A /* et */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = et; path = et.lproj/TabSwitcher.strings; sourceTree = ""; }; @@ -1750,7 +1743,6 @@ 9866DC18251CA99B00612E3A /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Home.strings; sourceTree = ""; }; 9866DC1A251CA99B00612E3A /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/OmniBar.strings; sourceTree = ""; }; 9866DC1B251CA99B00612E3A /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Authentication.strings; sourceTree = ""; }; - 9866DC1C251CA99C00612E3A /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/PrivacyDashboard.strings; sourceTree = ""; }; 9866DC1E251CA99C00612E3A /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Settings.strings; sourceTree = ""; }; 9866DC1F251CA99C00612E3A /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Tab.strings; sourceTree = ""; }; 9866DC20251CA99C00612E3A /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/TabSwitcher.strings; sourceTree = ""; }; @@ -1768,7 +1760,6 @@ 9866DC2F251CA9B000612E3A /* el */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = el; path = el.lproj/Home.strings; sourceTree = ""; }; 9866DC31251CA9B000612E3A /* el */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = el; path = el.lproj/OmniBar.strings; sourceTree = ""; }; 9866DC32251CA9B000612E3A /* el */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = el; path = el.lproj/Authentication.strings; sourceTree = ""; }; - 9866DC33251CA9B000612E3A /* el */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = el; path = el.lproj/PrivacyDashboard.strings; sourceTree = ""; }; 9866DC35251CA9B100612E3A /* el */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = el; path = el.lproj/Settings.strings; sourceTree = ""; }; 9866DC36251CA9B100612E3A /* el */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = el; path = el.lproj/Tab.strings; sourceTree = ""; }; 9866DC37251CA9B100612E3A /* el */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = el; path = el.lproj/TabSwitcher.strings; sourceTree = ""; }; @@ -1786,7 +1777,6 @@ 9866DC46251CA9C000612E3A /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = hu.lproj/Home.strings; sourceTree = ""; }; 9866DC48251CA9C000612E3A /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = hu.lproj/OmniBar.strings; sourceTree = ""; }; 9866DC49251CA9C000612E3A /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = hu.lproj/Authentication.strings; sourceTree = ""; }; - 9866DC4A251CA9C000612E3A /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = hu.lproj/PrivacyDashboard.strings; sourceTree = ""; }; 9866DC4C251CA9C100612E3A /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = hu.lproj/Settings.strings; sourceTree = ""; }; 9866DC4D251CA9C100612E3A /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = hu.lproj/Tab.strings; sourceTree = ""; }; 9866DC4E251CA9C100612E3A /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = hu.lproj/TabSwitcher.strings; sourceTree = ""; }; @@ -1804,7 +1794,6 @@ 9866DC5D251CA9CE00612E3A /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/Home.strings; sourceTree = ""; }; 9866DC5F251CA9CF00612E3A /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/OmniBar.strings; sourceTree = ""; }; 9866DC60251CA9CF00612E3A /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/Authentication.strings; sourceTree = ""; }; - 9866DC61251CA9CF00612E3A /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/PrivacyDashboard.strings; sourceTree = ""; }; 9866DC63251CA9CF00612E3A /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/Settings.strings; sourceTree = ""; }; 9866DC64251CA9CF00612E3A /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/Tab.strings; sourceTree = ""; }; 9866DC65251CA9D000612E3A /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/TabSwitcher.strings; sourceTree = ""; }; @@ -1822,7 +1811,6 @@ 9866DC74251CA9E300612E3A /* lv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = lv; path = lv.lproj/Home.strings; sourceTree = ""; }; 9866DC76251CA9E300612E3A /* lv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = lv; path = lv.lproj/OmniBar.strings; sourceTree = ""; }; 9866DC77251CA9E300612E3A /* lv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = lv; path = lv.lproj/Authentication.strings; sourceTree = ""; }; - 9866DC78251CA9E300612E3A /* lv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = lv; path = lv.lproj/PrivacyDashboard.strings; sourceTree = ""; }; 9866DC7A251CA9E400612E3A /* lv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = lv; path = lv.lproj/Settings.strings; sourceTree = ""; }; 9866DC7B251CA9E400612E3A /* lv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = lv; path = lv.lproj/Tab.strings; sourceTree = ""; }; 9866DC7C251CA9E400612E3A /* lv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = lv; path = lv.lproj/TabSwitcher.strings; sourceTree = ""; }; @@ -1840,7 +1828,6 @@ 9866DC8B251CA9F500612E3A /* lt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = lt; path = lt.lproj/Home.strings; sourceTree = ""; }; 9866DC8D251CA9F500612E3A /* lt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = lt; path = lt.lproj/OmniBar.strings; sourceTree = ""; }; 9866DC8E251CA9F500612E3A /* lt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = lt; path = lt.lproj/Authentication.strings; sourceTree = ""; }; - 9866DC8F251CA9F500612E3A /* lt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = lt; path = lt.lproj/PrivacyDashboard.strings; sourceTree = ""; }; 9866DC91251CA9F600612E3A /* lt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = lt; path = lt.lproj/Settings.strings; sourceTree = ""; }; 9866DC92251CA9F600612E3A /* lt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = lt; path = lt.lproj/Tab.strings; sourceTree = ""; }; 9866DC93251CA9F600612E3A /* lt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = lt; path = lt.lproj/TabSwitcher.strings; sourceTree = ""; }; @@ -1858,7 +1845,6 @@ 9866DCA2251CAA0500612E3A /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/Home.strings; sourceTree = ""; }; 9866DCA4251CAA0500612E3A /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/OmniBar.strings; sourceTree = ""; }; 9866DCA5251CAA0500612E3A /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/Authentication.strings; sourceTree = ""; }; - 9866DCA6251CAA0600612E3A /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/PrivacyDashboard.strings; sourceTree = ""; }; 9866DCA8251CAA0600612E3A /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/Settings.strings; sourceTree = ""; }; 9866DCA9251CAA0600612E3A /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/Tab.strings; sourceTree = ""; }; 9866DCAA251CAA0600612E3A /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/TabSwitcher.strings; sourceTree = ""; }; @@ -1876,7 +1862,6 @@ 9866DCB9251CAA2600612E3A /* ro */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ro; path = ro.lproj/Home.strings; sourceTree = ""; }; 9866DCBB251CAA2600612E3A /* ro */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ro; path = ro.lproj/OmniBar.strings; sourceTree = ""; }; 9866DCBC251CAA2700612E3A /* ro */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ro; path = ro.lproj/Authentication.strings; sourceTree = ""; }; - 9866DCBD251CAA2700612E3A /* ro */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ro; path = ro.lproj/PrivacyDashboard.strings; sourceTree = ""; }; 9866DCBF251CAA2700612E3A /* ro */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ro; path = ro.lproj/Settings.strings; sourceTree = ""; }; 9866DCC0251CAA2700612E3A /* ro */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ro; path = ro.lproj/Tab.strings; sourceTree = ""; }; 9866DCC1251CAA2700612E3A /* ro */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ro; path = ro.lproj/TabSwitcher.strings; sourceTree = ""; }; @@ -1894,7 +1879,6 @@ 9866DCD0251CAA3400612E3A /* sk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sk; path = sk.lproj/Home.strings; sourceTree = ""; }; 9866DCD2251CAA3400612E3A /* sk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sk; path = sk.lproj/OmniBar.strings; sourceTree = ""; }; 9866DCD3251CAA3400612E3A /* sk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sk; path = sk.lproj/Authentication.strings; sourceTree = ""; }; - 9866DCD4251CAA3400612E3A /* sk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sk; path = sk.lproj/PrivacyDashboard.strings; sourceTree = ""; }; 9866DCD6251CAA3500612E3A /* sk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sk; path = sk.lproj/Settings.strings; sourceTree = ""; }; 9866DCD7251CAA3500612E3A /* sk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sk; path = sk.lproj/Tab.strings; sourceTree = ""; }; 9866DCD8251CAA3500612E3A /* sk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sk; path = sk.lproj/TabSwitcher.strings; sourceTree = ""; }; @@ -1912,7 +1896,6 @@ 9866DCE7251CAA4800612E3A /* sl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sl; path = sl.lproj/Home.strings; sourceTree = ""; }; 9866DCE9251CAA4900612E3A /* sl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sl; path = sl.lproj/OmniBar.strings; sourceTree = ""; }; 9866DCEA251CAA4900612E3A /* sl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sl; path = sl.lproj/Authentication.strings; sourceTree = ""; }; - 9866DCEB251CAA4900612E3A /* sl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sl; path = sl.lproj/PrivacyDashboard.strings; sourceTree = ""; }; 9866DCED251CAA4900612E3A /* sl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sl; path = sl.lproj/Settings.strings; sourceTree = ""; }; 9866DCEE251CAA4A00612E3A /* sl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sl; path = sl.lproj/Tab.strings; sourceTree = ""; }; 9866DCEF251CAA4A00612E3A /* sl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sl; path = sl.lproj/TabSwitcher.strings; sourceTree = ""; }; @@ -1966,13 +1949,6 @@ 9866DD8E251CB12D00612E3A /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Authentication.strings; sourceTree = ""; }; 9866DD90251CB12E00612E3A /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/Authentication.strings; sourceTree = ""; }; 9866DD92251CB12E00612E3A /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/Authentication.strings; sourceTree = ""; }; - 9866DD9C251CB14600612E3A /* fi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fi; path = fi.lproj/PrivacyDashboard.strings; sourceTree = ""; }; - 9866DD9E251CB17A00612E3A /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/PrivacyDashboard.strings; sourceTree = ""; }; - 9866DDA2251CB1C000612E3A /* pt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pt; path = pt.lproj/PrivacyDashboard.strings; sourceTree = ""; }; - 9866DDA4251CB1F500612E3A /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/PrivacyDashboard.strings; sourceTree = ""; }; - 9866DDA6251CB24F00612E3A /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/PrivacyDashboard.strings; sourceTree = ""; }; - 9866DDA8251CB41000612E3A /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/PrivacyDashboard.strings; sourceTree = ""; }; - 9866DDAA251CB4F500612E3A /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/PrivacyDashboard.strings; sourceTree = ""; }; 9866DDAC251CB58400612E3A /* fi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fi; path = fi.lproj/Settings.strings; sourceTree = ""; }; 9866DDAE251CB5B400612E3A /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Settings.strings; sourceTree = ""; }; 9866DDB2251CB62500612E3A /* pt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pt; path = pt.lproj/Settings.strings; sourceTree = ""; }; @@ -2490,6 +2466,8 @@ F1DA2F7C1EBCF23700313F51 /* ExternalUrlSchemeTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExternalUrlSchemeTests.swift; sourceTree = ""; }; F1DE78571E5CAE350058895A /* TabViewGridCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TabViewGridCell.swift; sourceTree = ""; }; F1DE78591E5CD2A70058895A /* UIViewExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = UIViewExtension.swift; path = ../Core/UIViewExtension.swift; sourceTree = ""; }; + F1DF094D2B037087008CC908 /* BrowserServicesKit */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = BrowserServicesKit; path = ../BrowserServicesKit; sourceTree = ""; }; + F1DF09512B03BAE9008CC908 /* privacy-dashboard */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = "privacy-dashboard"; path = "../privacy-dashboard"; sourceTree = ""; }; F1E092C01E92A72E00732CCC /* UIColorExtensionTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIColorExtensionTests.swift; sourceTree = ""; }; F1E4A4441EE89460006F2EAE /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Bookmarks.storyboard; sourceTree = ""; }; F1E90C1F1E678E7C005E7E21 /* HomeControllerDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HomeControllerDelegate.swift; sourceTree = ""; }; @@ -3089,15 +3067,6 @@ name = PrivacyIconAndTrackers; sourceTree = ""; }; - 1E87615728A1515400C7C5CE /* PrivacyDashboard */ = { - isa = PBXGroup; - children = ( - 1E87615828A1517200C7C5CE /* PrivacyDashboardViewController.swift */, - 984147B924F0268D00362052 /* PrivacyDashboard.storyboard */, - ); - name = PrivacyDashboard; - sourceTree = ""; - }; 1E8AD1C527BE45F800ABA377 /* DownloadsList */ = { isa = PBXGroup; children = ( @@ -3532,18 +3501,15 @@ 83D4A73820E2454D003A7A6D /* UI */ = { isa = PBXGroup; children = ( - 98DA6B3222243CC3006EA9EB /* Feedback.xcassets */, + F1DF094C2B0299F6008CC908 /* Broken site */, 984147B024F0261A00362052 /* Feedback.storyboard */, - 9888F77A2224980500C46159 /* FeedbackViewController.swift */, - 9838059E2228208E00385F1A /* PositiveFeedbackViewController.swift */, + 98DA6B3222243CC3006EA9EB /* Feedback.xcassets */, 984D60B1222A1284003B9E3B /* FeedbackFormViewController.swift */, - 982E562F222C3D5B008D861B /* FeedbackPickerViewController.swift */, 980891A42237D4F500313A70 /* FeedbackNavigator.swift */, + 982E562F222C3D5B008D861B /* FeedbackPickerViewController.swift */, 980891A62237D5D800313A70 /* FeedbackPresenter.swift */, - 986C7FA624171C6000A3557D /* BrokenSiteCategories.swift */, - 4BC6DD1B2A60E6AD001EC129 /* ReportBrokenSiteView.swift */, - 986C7FA82417ADE700A3557D /* ReportBrokenSiteViewController.swift */, - 98728E812417E3300033960E /* BrokenSiteInfo.swift */, + 9888F77A2224980500C46159 /* FeedbackViewController.swift */, + 9838059E2228208E00385F1A /* PositiveFeedbackViewController.swift */, ); name = UI; sourceTree = ""; @@ -3586,6 +3552,8 @@ 84E341931E2F7EFB00BDBA6F /* Products */, 83ED3B8D1FA8E63700B47556 /* README.md */, 83ED3B8C1FA8E61D00B47556 /* ManualTestsScript.md */, + F1DF09512B03BAE9008CC908 /* privacy-dashboard */, + F1DF094D2B037087008CC908 /* BrowserServicesKit */, 85A313962028E78A00327D00 /* release_notes.txt */, ); sourceTree = ""; @@ -3639,7 +3607,7 @@ 85AE668C20971FCA0014CF04 /* Notifications */, F1C4A70C1E5771F800A6CA1B /* OmniBar */, F1AE54DB1F0425BB00D9A700 /* Privacy */, - 1E87615728A1515400C7C5CE /* PrivacyDashboard */, + F1DF09502B039E6E008CC908 /* PrivacyDashboard */, 02ECEC602A965074009F0654 /* PrivacyInfo.xcprivacy */, C1B7B51D28941F160098FD6A /* RemoteMessaging */, F1AB2B401E3F75A000868554 /* Settings */, @@ -5172,6 +5140,26 @@ name = UserInterface; sourceTree = ""; }; + F1DF094C2B0299F6008CC908 /* Broken site */ = { + isa = PBXGroup; + children = ( + 4BC6DD1B2A60E6AD001EC129 /* ReportBrokenSiteView.swift */, + 986C7FA82417ADE700A3557D /* ReportBrokenSiteViewController.swift */, + 986C7FA624171C6000A3557D /* BrokenSiteCategories.swift */, + 98728E812417E3300033960E /* BrokenSiteInfo.swift */, + ); + path = "Broken site"; + sourceTree = ""; + }; + F1DF09502B039E6E008CC908 /* PrivacyDashboard */ = { + isa = PBXGroup; + children = ( + 1E87615828A1517200C7C5CE /* PrivacyDashboardViewController.swift */, + 984147B924F0268D00362052 /* PrivacyDashboard.storyboard */, + ); + path = PrivacyDashboard; + sourceTree = ""; + }; F1E092B31E92A6B900732CCC /* Core */ = { isa = PBXGroup; children = ( @@ -7187,30 +7175,6 @@ isa = PBXVariantGroup; children = ( 984147B824F0268D00362052 /* Base */, - 9866DB92251CA8F400612E3A /* bg */, - 9866DBA9251CA91800612E3A /* hr */, - 9866DBC0251CA92B00612E3A /* cs */, - 9866DBD7251CA93900612E3A /* da */, - 9866DBEE251CA94F00612E3A /* nl */, - 9866DC05251CA96300612E3A /* et */, - 9866DC1C251CA99C00612E3A /* de */, - 9866DC33251CA9B000612E3A /* el */, - 9866DC4A251CA9C000612E3A /* hu */, - 9866DC61251CA9CF00612E3A /* it */, - 9866DC78251CA9E300612E3A /* lv */, - 9866DC8F251CA9F500612E3A /* lt */, - 9866DCA6251CAA0600612E3A /* pl */, - 9866DCBD251CAA2700612E3A /* ro */, - 9866DCD4251CAA3400612E3A /* sk */, - 9866DCEB251CAA4900612E3A /* sl */, - 9866DD9C251CB14600612E3A /* fi */, - 9866DD9E251CB17A00612E3A /* fr */, - 9866DDA2251CB1C000612E3A /* pt */, - 9866DDA4251CB1F500612E3A /* ru */, - 9866DDA6251CB24F00612E3A /* es */, - 9866DDA8251CB41000612E3A /* sv */, - 9866DDAA251CB4F500612E3A /* tr */, - 9816854A2521EEF100FA91A1 /* nb */, ); name = PrivacyDashboard.storyboard; sourceTree = ""; diff --git a/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index d9cc92bff7..36ce132d4f 100644 --- a/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -10,15 +10,6 @@ "version": "3.0.0" } }, - { - "package": "BrowserServicesKit", - "repositoryURL": "https://github.com/DuckDuckGo/BrowserServicesKit", - "state": { - "branch": null, - "revision": "f7e20cd37bbc0d25ae3c3f25ef52d319366613e7", - "version": "83.0.0" - } - }, { "package": "CocoaAsyncSocket", "repositoryURL": "https://github.com/robbiehanson/CocoaAsyncSocket", @@ -100,15 +91,6 @@ "version": "9.1.0" } }, - { - "package": "PrivacyDashboardResources", - "repositoryURL": "https://github.com/duckduckgo/privacy-dashboard", - "state": { - "branch": null, - "revision": "b4ac92a444e79d5651930482623b9f6dc9265667", - "version": "2.0.0" - } - }, { "package": "Punycode", "repositoryURL": "https://github.com/gumob/PunycodeSwift.git", diff --git a/DuckDuckGo/Base.lproj/Feedback.storyboard b/DuckDuckGo/Base.lproj/Feedback.storyboard index a9b59c7cc8..28b927515d 100644 --- a/DuckDuckGo/Base.lproj/Feedback.storyboard +++ b/DuckDuckGo/Base.lproj/Feedback.storyboard @@ -1,11 +1,10 @@ - + - + - @@ -29,8 +28,8 @@ - - + + @@ -683,8 +641,5 @@ - - - diff --git a/DuckDuckGo/Base.lproj/Settings.storyboard b/DuckDuckGo/Base.lproj/Settings.storyboard index 679524ecd2..ed85ef9537 100644 --- a/DuckDuckGo/Base.lproj/Settings.storyboard +++ b/DuckDuckGo/Base.lproj/Settings.storyboard @@ -1,9 +1,9 @@ - + - + @@ -540,7 +540,7 @@ - +