Skip to content
This repository has been archived by the owner on Feb 24, 2025. It is now read-only.

Implement VPN App Exclusions management view #3800

Merged
merged 33 commits into from
Feb 3, 2025
Merged
Changes from 1 commit
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
d651390
Adds the VPN App Exclusions remote feature flag
diegoreymendez Jan 15, 2025
2a99818
WIP
diegoreymendez Jan 15, 2025
50ae50e
Creates PreferencesUI package
diegoreymendez Jan 23, 2025
69d8f07
Rolls back some unintentional string changes
diegoreymendez Jan 23, 2025
c0f0d5a
Rolls back some changes
diegoreymendez Jan 23, 2025
60b2d30
Merges the latest from main
diegoreymendez Jan 23, 2025
7d27544
Fixes a swiftlint warning
diegoreymendez Jan 23, 2025
375f060
Fixes a bad merge
diegoreymendez Jan 23, 2025
22e0456
Renaming for clarity
diegoreymendez Jan 23, 2025
1c26266
Initial implementation for new exclusions in VPN settings complete
diegoreymendez Jan 25, 2025
1a6acb5
Swiftlint fixes
diegoreymendez Jan 25, 2025
dedaf62
Merges the latest from main
diegoreymendez Jan 25, 2025
8f24a92
Fixes a swiftlint error
diegoreymendez Jan 25, 2025
4e4e2d1
Merges the latest from develop
diegoreymendez Jan 28, 2025
2f453a3
Adds translations
diegoreymendez Jan 29, 2025
7f48ad6
Merges the latest from main
diegoreymendez Jan 29, 2025
e38b913
WIP
diegoreymendez Jan 29, 2025
3d77bf4
Merge branch 'diego/vpn-app-exclusions-settings-pane-changes' into di…
diegoreymendez Jan 29, 2025
3b5e770
WIP
diegoreymendez Jan 29, 2025
b6bbe27
Implements app exclusions management view
diegoreymendez Jan 29, 2025
de4e6fa
Localized a string that wasn't localized by mistake
diegoreymendez Jan 29, 2025
12ae307
Addresses some review feedback
diegoreymendez Jan 29, 2025
e11dcf3
Fixes the rounded corner of the SubfeatureView
diegoreymendez Jan 29, 2025
ba57596
Renames a file
diegoreymendez Jan 29, 2025
72dbb3f
Merge branch 'diego/vpn-app-exclusions-settings-pane-changes' into di…
diegoreymendez Jan 29, 2025
3a2d571
Merges the latest from main
diegoreymendez Jan 29, 2025
9d001b2
Implements the app-exclusions management view
diegoreymendez Jan 30, 2025
195a546
Rolls back an unintentional change and pushes an improvement
diegoreymendez Jan 31, 2025
860b1e3
Fixes the file name in a header
diegoreymendez Feb 3, 2025
8050810
Fixes the message in an assertion failure
diegoreymendez Feb 3, 2025
aee7ccd
Adds app exclusion translations
diegoreymendez Feb 3, 2025
263857e
Removes empty files
diegoreymendez Feb 3, 2025
62d13ae
Exclusion counts in VPN settings now update dynamically
diegoreymendez Feb 3, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Merges the latest from main
diegoreymendez committed Jan 23, 2025
commit 60b2d307a0d7ca668dbe10f4bee273de73919243
2 changes: 2 additions & 0 deletions DuckDuckGo.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
@@ -10079,6 +10079,7 @@
374EFDEC2D01A1DE00B30939 /* Utilities */,
5641734C2CFE169400F4B716 /* PixelExperimentKit */,
7BCD16F02D4266F5006B0C67 /* PreferencesUI */,
379230952D3852860019E130 /* HistoryView */,
);
productName = DuckDuckGo;
productReference = 3706FD05293F65D500E42796 /* DuckDuckGo App Store.app */;
@@ -10567,6 +10568,7 @@
374EFDEA2D01A1D800B30939 /* Utilities */,
5641734A2CFE168700F4B716 /* PixelExperimentKit */,
7BCD16EE2D4266ED006B0C67 /* PreferencesUI */,
379230932D38527E0019E130 /* HistoryView */,
);
productName = DuckDuckGo;
productReference = AA585D7E248FD31100E9A3E2 /* DuckDuckGo.app */;
2 changes: 1 addition & 1 deletion LocalPackages/SubscriptionUI/Package.swift
Original file line number Diff line number Diff line change
@@ -13,7 +13,7 @@ let package = Package(
targets: ["SubscriptionUI"]),
],
dependencies: [
.package(url: "https://github.com/duckduckgo/BrowserServicesKit", exact: "227.2.0"),
.package(url: "https://github.com/duckduckgo/BrowserServicesKit", exact: "229.0.0"),
.package(path: "../PreferencesUI"),
.package(path: "../SwiftUIExtensions"),
.package(path: "../FeatureFlags")

Unchanged files with check annotations Beta

/// Convenience Hashable support for `NWConnection`, so we can use `Set<NWConnection>`
///
extension NWConnection: Hashable {

Check warning on line 25 in LocalPackages/UDSHelper/Sources/UDSHelper/UDSServer.swift

GitHub Actions / Test (Sandbox)

extension declares a conformance of imported type 'NWConnection' to imported protocols 'Hashable', 'Equatable'; this will not behave correctly if the owners of 'Network' introduce this conformance in the future

Check warning on line 25 in LocalPackages/UDSHelper/Sources/UDSHelper/UDSServer.swift

GitHub Actions / Test (Sandbox)

extension declares a conformance of imported type 'NWConnection' to imported protocols 'Hashable', 'Equatable'; this will not behave correctly if the owners of 'Network' introduce this conformance in the future

Check warning on line 25 in LocalPackages/UDSHelper/Sources/UDSHelper/UDSServer.swift

GitHub Actions / Test (Non-Sandbox)

extension declares a conformance of imported type 'NWConnection' to imported protocols 'Hashable', 'Equatable'; this will not behave correctly if the owners of 'Network' introduce this conformance in the future

Check warning on line 25 in LocalPackages/UDSHelper/Sources/UDSHelper/UDSServer.swift

GitHub Actions / Make Release Build

extension declares a conformance of imported type 'NWConnection' to imported protocols 'Hashable', 'Equatable'; this will not behave correctly if the owners of 'Network' introduce this conformance in the future

Check warning on line 25 in LocalPackages/UDSHelper/Sources/UDSHelper/UDSServer.swift

GitHub Actions / Make Release Build

extension declares a conformance of imported type 'NWConnection' to imported protocols 'Hashable', 'Equatable'; this will not behave correctly if the owners of 'Network' introduce this conformance in the future
public static func == (lhs: NWConnection, rhs: NWConnection) -> Bool {
return lhs === rhs
}
}
}
extension NSEvent.KeyEquivalent: ExpressibleByStringLiteral, ExpressibleByUnicodeScalarLiteral, ExpressibleByExtendedGraphemeClusterLiteral {

Check warning on line 118 in LocalPackages/AppKitExtensions/Sources/AppKitExtensions/NSEventExtension.swift

GitHub Actions / Test (Sandbox)

extension declares a conformance of imported type 'Set' to imported protocols 'ExpressibleByStringLiteral', 'ExpressibleByExtendedGraphemeClusterLiteral', 'ExpressibleByUnicodeScalarLiteral'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future

Check warning on line 118 in LocalPackages/AppKitExtensions/Sources/AppKitExtensions/NSEventExtension.swift

GitHub Actions / Test (Sandbox)

extension declares a conformance of imported type 'Set' to imported protocols 'ExpressibleByStringLiteral', 'ExpressibleByExtendedGraphemeClusterLiteral', 'ExpressibleByUnicodeScalarLiteral'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
public typealias StringLiteralType = String
public static let backspace: Self = [.backspace]
//
import Foundation
import NetworkExtension

Check warning on line 20 in LocalPackages/NetworkProtectionMac/Sources/NetworkProtectionProxy/FlowManagers/TCPFlowManager.swift

GitHub Actions / Test (Sandbox)

add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NetworkExtension'
import os.log
/// A private global actor to handle UDP flows management
Task { @TCPFlowActor in
remoteConnection.receive(minimumIncompleteLength: 1,
maximumLength: Self.maxReceiveSize) { [weak flow] (data, _, isComplete, error) in
guard let flow else {

Check warning on line 194 in LocalPackages/NetworkProtectionMac/Sources/NetworkProtectionProxy/FlowManagers/TCPFlowManager.swift

GitHub Actions / Test (Sandbox)

capture of 'flow' with non-sendable type 'NEAppProxyTCPFlow?' in a `@Sendable` closure
continuation.resume(throwing: RemoteConnectionError.cancelled)
return
}
extension UDPConnectionManager: Hashable, Equatable {
// MARK: - Equatable
static func == (lhs: UDPConnectionManager, rhs: UDPConnectionManager) -> Bool {

Check warning on line 173 in LocalPackages/NetworkProtectionMac/Sources/NetworkProtectionProxy/FlowManagers/UDPFlowManager.swift

GitHub Actions / Test (Sandbox)

global actor 'UDPFlowActor'-isolated operator function '==' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
lhs.endpoint == rhs.endpoint
}
// MARK: - Hashable
func hash(into hasher: inout Hasher) {

Check warning on line 179 in LocalPackages/NetworkProtectionMac/Sources/NetworkProtectionProxy/FlowManagers/UDPFlowManager.swift

GitHub Actions / Test (Sandbox)

global actor 'UDPFlowActor'-isolated instance method 'hash(into:)' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
hasher.combine(endpoint)
}
}
}
extension UDPFlowManager: Hashable {
static func == (lhs: UDPFlowManager, rhs: UDPFlowManager) -> Bool {

Check warning on line 322 in LocalPackages/NetworkProtectionMac/Sources/NetworkProtectionProxy/FlowManagers/UDPFlowManager.swift

GitHub Actions / Test (Sandbox)

global actor 'UDPFlowActor'-isolated operator function '==' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
lhs === rhs
}
func hash(into hasher: inout Hasher) {

Check warning on line 326 in LocalPackages/NetworkProtectionMac/Sources/NetworkProtectionProxy/FlowManagers/UDPFlowManager.swift

GitHub Actions / Test (Sandbox)

global actor 'UDPFlowActor'-isolated instance method 'hash(into:)' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
hasher.combine(flow)
}
}
//
import SwiftUI
import SwiftUIExtensions

Check failure on line 20 in LocalPackages/PreferencesUI/Sources/PreferencesUI/PreferencesViews.swift

GitHub Actions / Test (Non-Sandbox)

no such module 'SwiftUIExtensions'

Check failure on line 20 in LocalPackages/PreferencesUI/Sources/PreferencesUI/PreferencesViews.swift

GitHub Actions / Make Release Build

no such module 'SwiftUIExtensions'
public struct TextMenuTitle: View {
public let text: String
//

Check failure on line 1 in LocalPackages/PreferencesUI/Sources/PreferencesUI/SubfeatureGroup.swift

GitHub Actions / SwiftLint

Header comments should be consistent with project patterns (file_header)
// SubfeatureView.swift
//
// Copyright © 2024 DuckDuckGo. All rights reserved.
import SwiftUIExtensions
import NetworkProtection
import PixelKit
import PreferencesUI

Check failure on line 24 in DuckDuckGo/Preferences/View/PreferencesVPNView.swift

GitHub Actions / SwiftLint

Imports should be unique (duplicate_imports)
extension Preferences {
}
}

Check failure on line 77 in DuckDuckGo/Preferences/Model/VPNPreferencesModel.swift

GitHub Actions / SwiftLint

Limit vertical whitespace to a single empty line; currently 2 (vertical_whitespace)
var appExclusionsFeatureEnabled: Bool {
featureFlagger.isFeatureOn(.networkProtectionAppExclusions)
}
You are viewing a condensed version of this merge commit. You can view the full changes here.