Skip to content

Commit

Permalink
Merge branch 'develop' into sam/vpn-waitlist
Browse files Browse the repository at this point in the history
* develop:
  Use upstream fastlane 2.217.0 (#2161)
  Update about screen (#2152)
  Fixes a crasher due to a test line merged by mistake. (#2162)
  • Loading branch information
samsymons committed Nov 16, 2023
2 parents 1585dcd + 78a1066 commit 534c085
Show file tree
Hide file tree
Showing 33 changed files with 285 additions and 353 deletions.
2 changes: 1 addition & 1 deletion DuckDuckGo.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -9159,7 +9159,7 @@
repositoryURL = "https://github.com/DuckDuckGo/BrowserServicesKit";
requirement = {
kind = exactVersion;
version = 84.0.0;
version = 84.0.1;
};
};
C14882EB27F211A000D59F0C /* XCRemoteSwiftPackageReference "SwiftSoup" */ = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@
"repositoryURL": "https://github.com/DuckDuckGo/BrowserServicesKit",
"state": {
"branch": null,
"revision": "9c2c7f39679a1f4441fec95fda86f4c089724e2e",
"version": "84.0.0"
"revision": "075773533bfca9196115674d2ab1b085570854dd",
"version": "84.0.1"
}
},
{
Expand Down
96 changes: 48 additions & 48 deletions DuckDuckGo/AboutViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -19,64 +19,64 @@

import UIKit
import Core
import SwiftUI
import DesignResourcesKit

class AboutViewController: UIViewController {
class AboutViewController: UIHostingController<AboutView> {

@IBOutlet weak var headerText: UILabel!
@IBOutlet weak var descriptionText: UILabel!
@IBOutlet weak var logoImage: UIImageView!
@IBOutlet weak var moreButton: UIButton!

override func viewDidLoad() {
super.viewDidLoad()

applyTheme(ThemeManager.shared.currentTheme)
convenience init() {
self.init(rootView: AboutView())
}

@IBAction func onPrivacyLinkTapped(_ sender: UIButton) {
dismiss(animated: true) {
UIApplication.shared.open(URL.aboutLink, options: [:])
}

struct AboutView: View {

var body: some View {
ScrollView {
VStack(spacing: 12) {
Image("Logo")
.resizable()
.frame(width: 96, height: 96)
.padding(.top)

Image("TextDuckDuckGo")

Text("Welcome to the Duck Side!")
.daxHeadline()

Rectangle()
.frame(width: 80, height: 0.5)
.foregroundColor(Color(designSystemColor: .lines))
.padding()

Text(LocalizedStringKey(UserText.aboutText))
.lineLimit(nil)
.multilineTextAlignment(.leading)
.foregroundColor(.primary)
.tintIfAvailable(Color(designSystemColor: .accent))
.padding(.horizontal, 32)
.padding(.bottom)

Spacer()
}
.frame(maxWidth: .infinity)
}
.background(Rectangle()
.ignoresSafeArea()
.foregroundColor(Color(designSystemColor: .background)))
}

}

extension AboutViewController: Themable {
private extension View {

func decorate(with theme: Theme) {
view.backgroundColor = theme.backgroundColor

switch theme.currentImageSet {
case .light:
logoImage?.image = UIImage(named: "LogoDarkText")
case .dark:
logoImage?.image = UIImage(named: "LogoLightText")
@ViewBuilder func tintIfAvailable(_ color: Color) -> some View {
if #available(iOS 16.0, *) {
tint(color)
} else {
self
}

decorateDescription(with: theme)

headerText.textColor = theme.aboutScreenTextColor
moreButton.setTitleColor(theme.aboutScreenButtonColor, for: .normal)
}

private func decorateDescription(with theme: Theme) {
if let attributedText = descriptionText.attributedText,
var font = attributedText.attribute(NSAttributedString.Key.font, at: 0, effectiveRange: nil) as? UIFont {

let attributes: [NSAttributedString.Key: Any]
if traitCollection.horizontalSizeClass == .regular,
traitCollection.verticalSizeClass == .regular {
font = font.withSize(24.0)
attributes = [.foregroundColor: theme.aboutScreenTextColor,
.font: font]
} else {
attributes = [.foregroundColor: theme.aboutScreenTextColor,
.font: font]
}

let decoratedText = NSMutableAttributedString(string: UserText.settingsAboutText)
decoratedText.addAttributes(attributes, range: NSRange(location: 0, length: decoratedText.length))

descriptionText.attributedText = decoratedText
}
}
}
199 changes: 26 additions & 173 deletions DuckDuckGo/Base.lproj/Settings.storyboard

Large diffs are not rendered by default.

6 changes: 5 additions & 1 deletion DuckDuckGo/SettingsViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -600,7 +600,11 @@ class SettingsViewController: UITableViewController {
AppDependencyProvider.shared.voiceSearchHelper.enableVoiceSearch(enableVoiceSearch)
}
}


@IBAction func onAboutTapped() {
navigationController?.pushViewController(AboutViewController(), animated: true)
}

private func showNoMicrophonePermissionAlert() {
let alertController = NoMicPermissionAlert.buildAlert()
present(alertController, animated: true, completion: nil)
Expand Down
16 changes: 12 additions & 4 deletions DuckDuckGo/UserText.swift
Original file line number Diff line number Diff line change
Expand Up @@ -261,9 +261,7 @@ public struct UserText {

public static let homeTabSearchAndFavorites = NSLocalizedString("homeTab.searchAndFavorites", value: "Search or enter address", comment: "This describes empty tab")
public static let homeTabTitle = NSLocalizedString("homeTab.title", value: "Home", comment: "Home tab title")

public static let settingsAboutText = NSLocalizedString("settings.about.text", value: "At DuckDuckGo, we’re setting the new standard of trust online.\n\nDuckDuckGo Privacy Browser provides all the privacy essentials you need to protect yourself as you search and browse the web, including tracker blocking, smarter encryption, and DuckDuckGo private search.\n\nAfter all, the Internet shouldn’t feel so creepy, and getting the privacy you deserve online should be as simple as closing the blinds.", comment: "")


public static let daxDialogHomeInitial = NSLocalizedString("dax.onboarding.home.initial", value: "Next, try visiting one of your favorite sites!\n\nI’ll block trackers so they can’t spy on you. I’ll also upgrade the security of your connection if possible. 🔒", comment: "")
public static let daxDialogHomeSubsequent = NSLocalizedString("dax.onboarding.home.subsequent", value: "You’ve got this!\n\nRemember: Every time you browse with me, a creepy ad loses its wings. 👍", comment: "ad = advertisment")
public static let daxDialogHomeAddFavorite = NSLocalizedString("dax.onboarding.home.add.favorite", value: "Visit your favorite sites in a flash!\n\nGo to a site you love. Then tap the \"\" icon and select *Add to Favorites*.", comment: "Encourage user to add favorite site using the browsing menu.")
Expand Down Expand Up @@ -719,7 +717,17 @@ In addition to the details entered into this form, your app issue report will co
let message = NSLocalizedString("autofill.logins.search.no-results.subtitle", value: "for '%@'", comment: "Subtitle displayed when there are no results on Autofill search, example : No Result (Title) for Duck (Subtitle)")
return message.format(arguments: query)
}


public static let aboutText = NSLocalizedString("settings.about.text", value: """
DuckDuckGo is the independent Internet privacy company founded in 2008 for anyone who’s tired of being tracked online and wants an easy solution. We’re proof you can get real privacy protection online without tradeoffs.
The DuckDuckGo browser comes with the features you expect from a go-to browser, like bookmarks, tabs, passwords, and more, plus over [a dozen powerful privacy protections](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/) not offered in most popular browsers by default. This uniquely comprehensive set of privacy protections helps protect your online activities, from searching to browsing, emailing, and more.
Our privacy protections work without having to know anything about the technical details or deal with complicated settings. All you have to do is switch your browser to DuckDuckGo across all your devices and you get privacy by default.
But if you *do* want a peek under the hood, you can find more information about how DuckDuckGo privacy protections work on our [help pages](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/).
""", comment: "about page")

public static let autofillEnableSettings = NSLocalizedString("autofill.logins.list.enable", value:"Save and Autofill Logins", comment: "Title for a toggle that enables autofill")
public static let autofillLoginListTitle = NSLocalizedString("autofill.logins.list.title", value:"Logins", comment: "Title for screen listing autofill logins")
public static let autofillLoginListSearchPlaceholder = NSLocalizedString("autofill.logins.list.search-placeholder", value:"Search Logins", comment: "Placeholder for search field on autofill login listing")
Expand Down
7 changes: 5 additions & 2 deletions DuckDuckGo/bg.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -1597,8 +1597,8 @@
/* No comment provided by engineer. */
"section.title.favorites" = "Любими";

/* No comment provided by engineer. */
"settings.about.text" = "В DuckDuckGo задаваме новия стандарт на доверие онлайн.\n\nБраузърът за поверителност DuckDuckGo осигурява всички необходими елементи за защита на поверителността, докато търсите и сърфирате в мрежата, включително блокиране на тракери, по-интелигентно криптиране и поверително търсене с DuckDuckGo.\n\nВ крайна сметка интернет не трябва да създава чувство на страх, а получаването на поверителността, която заслужавате онлайн, трябва да е толкова просто, колкото пускането на щорите.";
/* about page */
"settings.about.text" = "DuckDuckGo е независима компания, основана през 2008 г., за защита на личните данни в интернет за всеки, на когото му е омръзнало да бъде проследяван онлайн и иска лесно решение на проблема. Ние сме доказателство, че можете да получите реална и безкомпромисна защита на личните данни онлайн.\n\nБраузърът DuckDuckGo притежава функциите, които очаквате от един основен браузър, като отметки, раздели, пароли и много други, както и [редица мощни защити на поверителността](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/), които не се предлагат в повечето популярни браузъри по подразбиране. Този уникален и комплексен набор от защити на поверителността предлага сигурност при онлайн дейностите – търсене, сърфиране, изпращане на имейли и др.\n\nЗа да работят, нашите защити на поверителността не изискват да имате технически познания или да се извършвате сложни настройки. Необходимо е да използвате браузъра DuckDuckGo на всички Ваши устройства и ще получите поверителност по подразбиране.\n\nНо ако *наистина* искате да надникнете зад кулисите, и да разберете как работят защитите на поверителността на DuckDuckGo, можете да намерите повече информация на нашите [страници за помощ](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/).";

/* Report a Broken Site screen confirmation button */
"siteFeedback.buttonText" = "Изпращане на доклад";
Expand Down Expand Up @@ -1768,6 +1768,9 @@
/* Alert title explaining the message is shown by a website */
"webJSAlert.website-message.format" = "Съобщение от %@:";

/* No comment provided by engineer. */
"Welcome to the Duck Side!" = "Добре дошли на наша страна!";

/* Title for the Windows waitlist notification */
"windows-waitlist.available.notification.title" = "Изпробвайте DuckDuckGo за Windows!";

Expand Down
7 changes: 5 additions & 2 deletions DuckDuckGo/cs.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -1597,8 +1597,8 @@
/* No comment provided by engineer. */
"section.title.favorites" = "Oblíbené";

/* No comment provided by engineer. */
"settings.about.text" = "V DuckDuckGo přinášíme nový standard důvěry online.\n\nDuckDuckGo Privacy Browser poskytuje všechny základní prvky ochrany osobních údajů, které potřebujete k ochraně při vyhledávání a prohlížení webu, včetně blokování sledovacích zařízení, chytřejšího šifrování a soukromého vyhledávání DuckDuckGo.\n\nInternet by v konečném důsledku neměl být tak nebezpečný a získat ochranu osobních údajů, kterou si zasloužíte online, by mělo být stejně jednoduché jako zatáhnout žaluzie.";
/* about page */
"settings.about.text" = "DuckDuckGo je nezávislá společnost založená v roce 2008, která se zabývá ochranou soukromí pro všechny, kdo už mají dost sledování na internetu a chtějí snadné řešení. Jsme důkazem, že skutečná ochrana soukromí na internetu nemusí mít kompromisy.\n\nProhlížeč DuckDuckGo má všechno, co od prohlížeče očekáváš, jako jsou záložky, karty, hesla a další funkce. A k tomu má víc než [desítku účinných funkcí na ochranu soukromí](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/), které většina oblíbených prohlížečů ve výchozím nastavení nenabízí. Tahle jedinečná komplexní sada na ochranu soukromí pomáhá chránit tvoje aktivity na internetu, ať už zrovna něco vyhledáváš, jen tak surfuješ, nebo posíláš e-maily.\n\nAby naše ochrana soukromí fungovala, nemusíš znát technické detaily ani řešit žádná složitá nastavení. Stačí přejít na prohlížeč DuckDuckGo ve všech zařízeních a dostaneš soukromí pro všechny své aktivity.\n\nJestli chceš nahlédnout pod pokličku, víc informací o tom, jak ochrana soukromí DuckDuckGo funguje, najdeš v naší [nápovědě](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/).";

/* Report a Broken Site screen confirmation button */
"siteFeedback.buttonText" = "Odešlete zprávu";
Expand Down Expand Up @@ -1768,6 +1768,9 @@
/* Alert title explaining the message is shown by a website */
"webJSAlert.website-message.format" = "Zpráva od %@:";

/* No comment provided by engineer. */
"Welcome to the Duck Side!" = "Vítejte na Kačeří straně!";

/* Title for the Windows waitlist notification */
"windows-waitlist.available.notification.title" = "Vyzkoušej DuckDuckGo pro Windows!";

Expand Down
7 changes: 5 additions & 2 deletions DuckDuckGo/da.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -1597,8 +1597,8 @@
/* No comment provided by engineer. */
"section.title.favorites" = "Favoritter";

/* No comment provided by engineer. */
"settings.about.text" = "Hos DuckDuckGo sætter vi den nye standard for tillid online.\n\nDuckDuckGo Privacy Browser giver dig alle de nødvendige værktøjer til at værne over privatlivets fred, så du kan beskytte dig selv, når du søger og surfer på nettet, herunder tracker-blokering, smartere kryptering og DuckDuckGo-privat søgning.\n\nInternettet bør trods alt ikke føles så skummelt, og det bør være lige så enkelt at få det privatliv, du fortjener online, som at lukke dine persienner ned.";
/* about page */
"settings.about.text" = "DuckDuckGo er en uafhængig virksomhed, grundlagt i 2008, der beskytter privatlivet på internettet for alle, der er trætte af at blive sporet online og ønsker en nem løsning. Vi er bevis på, at du kan få ægte beskyttelse af privatlivet online uden at gå på kompromis.\n\nDuckDuckGo-browseren kommer med de funktioner, du forventer af en standardbrowser, som bogmærker, faner, adgangskoder og meget mere, plus over [et dusin kraftfulde beskyttelser af privatlivet](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/), som ikke tilbydes i de fleste populære browsere som standard. Dette unikke og omfattende sæt af beskyttelsesfunktioner hjælper med at beskytte dine onlineaktiviteter, fra søgning til browsing, e-mailing og meget mere.\n\nVores beskyttelse af privatlivet fungerer, uden at du behøver at vide noget om de tekniske detaljer eller håndtere komplicerede indstillinger. Det eneste, du skal gøre, er at skifte din browser til DuckDuckGo på alle dine enheder, så får du privatliv som standard.\n\nMen hvis du gerne vil have et kig under motorhjelmen, kan du finde flere oplysninger om, hvordan DuckDuckGos beskyttelse af privatlivet fungerer, på vores [hjælpesider](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/).";

/* Report a Broken Site screen confirmation button */
"siteFeedback.buttonText" = "Indsend rapport";
Expand Down Expand Up @@ -1768,6 +1768,9 @@
/* Alert title explaining the message is shown by a website */
"webJSAlert.website-message.format" = "En besked fra %@:";

/* No comment provided by engineer. */
"Welcome to the Duck Side!" = "Velkommen til Duck siden";

/* Title for the Windows waitlist notification */
"windows-waitlist.available.notification.title" = "Prøv DuckDuckGo til Windows!";

Expand Down
7 changes: 5 additions & 2 deletions DuckDuckGo/de.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -1597,8 +1597,8 @@
/* No comment provided by engineer. */
"section.title.favorites" = "Favoriten";

/* No comment provided by engineer. */
"settings.about.text" = "Wir bei DuckDuckGo setzen den neuen Vertrauensstandard im Internet.\n\nDer DuckDuckGo Privacy Browser bietet dir alles Grundlegende zum Datenschutz, um dich beim Suchen und Browsen im Internet zu schützen, u. a. eine Tracker-Blockade, eine klügere Verschlüsselung und die private DuckDuckGo-Suche.\n\nSchließlich muss das Internet kein gruseliger Ort sein. Die Online-Privatsphäre zu bekommen, die du verdienst, sollte so einfach sein, wie die Jalousien herunterzulassen.";
/* about page */
"settings.about.text" = "DuckDuckGo ist die unabhängige Firma für Internet-Datenschutz, die 2008 für alle gegründet wurde, die es leid sind, online getrackt zu werden, und eine einfache Lösung suchen. Wir sind der Beweis, dass du echten Online-Datenschutz ohne Kompromisse erhalten kannst.\n\nDer DuckDuckGo-Browser bietet die Funktionen, die von einem alltagstauglichen Browser erwartet werden, wie Lesezeichen, Tabs, Passwörter und mehr, sowie über [ein Dutzend leistungsstarke Datenschutzmaßnahmen](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/), die in den meisten gängigen Browsern nicht standardmäßig angeboten werden. Dieser einzigartige, umfassende Datenschutz hilft dir, deine Online-Aktivitäten zu schützen – von der Suche über das Browsen bis hin zu E-Mails und vielem mehr.\n\nUnser Datenschutz funktioniert, ohne dass du etwas über die technischen Details wissen oder dich mit komplizierten Einstellungen auseinandersetzen musst. Du musst lediglich den Browser auf allen deinen Geräten auf DuckDuckGo umstellen und schon erhältst du echte Privatsphäre als Standard.\n\nWenn du jedoch einen Blick unter die Haube werfen möchtest, findest du auf unseren [Hilfeseiten](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/) weitere Informationen darüber, wie der Datenschutz bei DuckDuckGo funktioniert.";

/* Report a Broken Site screen confirmation button */
"siteFeedback.buttonText" = "Bericht senden";
Expand Down Expand Up @@ -1768,6 +1768,9 @@
/* Alert title explaining the message is shown by a website */
"webJSAlert.website-message.format" = "Eine Nachricht von %@:";

/* No comment provided by engineer. */
"Welcome to the Duck Side!" = "Willkommen auf der Duck-len Seite!";

/* Title for the Windows waitlist notification */
"windows-waitlist.available.notification.title" = "Teste DuckDuckGo für Windows!";

Expand Down
Loading

0 comments on commit 534c085

Please sign in to comment.