From 5bbb719a282ea032f804ed93cd4b8af5d7c5a900 Mon Sep 17 00:00:00 2001 From: mojganii Date: Tue, 17 Sep 2024 13:28:12 +0200 Subject: [PATCH] Bump minimum target deployment to 15.0 --- ios/MullvadTypes/Duration.swift | 2 +- ios/MullvadVPN.xcodeproj/project.pbxproj | 50 +++++++++---------- .../ListCustomListViewController.swift | 2 +- .../Edit/EditAccessMethodViewController.swift | 4 +- ...ethodSettingsDataSourceConfiguration.swift | 12 ++--- ...ffableDataSourceSnapshot+Reconfigure.swift | 21 -------- .../Login/AccountTextField.swift | 6 +-- .../RedeemVoucher/VoucherTextField.swift | 3 +- .../LocationDiffableDataSourceProtocol.swift | 2 +- .../Actor/Task+Duration.swift | 4 +- 10 files changed, 40 insertions(+), 66 deletions(-) delete mode 100644 ios/MullvadVPN/Extensions/NSDiffableDataSourceSnapshot+Reconfigure.swift diff --git a/ios/MullvadTypes/Duration.swift b/ios/MullvadTypes/Duration.swift index a2d30c52496c..37bb3126a8ad 100644 --- a/ios/MullvadTypes/Duration.swift +++ b/ios/MullvadTypes/Duration.swift @@ -11,7 +11,7 @@ import Foundation /// Custom implementation of iOS native `Duration` (available from iOS16). Meant as a /// drop-in replacement until the app supports iOS16. Ideally this whole file can /// then be deleted without affecting the rest of the code base. -@available(iOS, introduced: 14.0, obsoleted: 16.0, message: "Replace with native Duration type.") +@available(iOS, introduced: 15.0, obsoleted: 16.0, message: "Replace with native Duration type.") public struct Duration { private(set) var components: (seconds: Int64, attoseconds: Int64) diff --git a/ios/MullvadVPN.xcodeproj/project.pbxproj b/ios/MullvadVPN.xcodeproj/project.pbxproj index 7e4fcbbfc2a2..1441486f87c3 100644 --- a/ios/MullvadVPN.xcodeproj/project.pbxproj +++ b/ios/MullvadVPN.xcodeproj/project.pbxproj @@ -95,7 +95,6 @@ 5827B0BB2B14A28300CCBBA1 /* MethodTestingStatusCellContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5827B0BA2B14A28300CCBBA1 /* MethodTestingStatusCellContentView.swift */; }; 5827B0BD2B14AC9200CCBBA1 /* AccessViewModel+TestingStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5827B0BC2B14AC9200CCBBA1 /* AccessViewModel+TestingStatus.swift */; }; 5827B0BF2B14B37D00CCBBA1 /* Publisher+PreviousValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5827B0BE2B14B37D00CCBBA1 /* Publisher+PreviousValue.swift */; }; - 5827B0C52B14D3E800CCBBA1 /* NSDiffableDataSourceSnapshot+Reconfigure.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5827B0C42B14D3E800CCBBA1 /* NSDiffableDataSourceSnapshot+Reconfigure.swift */; }; 58293FAE2510CA58005D0BB5 /* ProblemReportViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58293FAC2510CA58005D0BB5 /* ProblemReportViewController.swift */; }; 58293FB125124117005D0BB5 /* CustomTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58293FB025124117005D0BB5 /* CustomTextField.swift */; }; 58293FB3251241B4005D0BB5 /* CustomTextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58293FB2251241B3005D0BB5 /* CustomTextView.swift */; }; @@ -1460,7 +1459,6 @@ 5827B0BA2B14A28300CCBBA1 /* MethodTestingStatusCellContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MethodTestingStatusCellContentView.swift; sourceTree = ""; }; 5827B0BC2B14AC9200CCBBA1 /* AccessViewModel+TestingStatus.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AccessViewModel+TestingStatus.swift"; sourceTree = ""; }; 5827B0BE2B14B37D00CCBBA1 /* Publisher+PreviousValue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Publisher+PreviousValue.swift"; sourceTree = ""; }; - 5827B0C42B14D3E800CCBBA1 /* NSDiffableDataSourceSnapshot+Reconfigure.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSDiffableDataSourceSnapshot+Reconfigure.swift"; sourceTree = ""; }; 58293FAC2510CA58005D0BB5 /* ProblemReportViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProblemReportViewController.swift; sourceTree = ""; }; 58293FB025124117005D0BB5 /* CustomTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomTextField.swift; sourceTree = ""; }; 58293FB2251241B3005D0BB5 /* CustomTextView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomTextView.swift; sourceTree = ""; }; @@ -2946,7 +2944,6 @@ 7A0C0F622A979C4A0058EFCE /* Coordinator+Router.swift */, 5811DE4F239014550011EB53 /* NEVPNStatus+Debug.swift */, 58DFF7CF2B02560400F864E0 /* NSAttributedString+Extensions.swift */, - 5827B0C42B14D3E800CCBBA1 /* NSDiffableDataSourceSnapshot+Reconfigure.swift */, 587D9675288989DB00CD8F1C /* NSLayoutConstraint+Helpers.swift */, 7AE90B672C2D726000375A60 /* NSParagraphStyle+Extensions.swift */, 5871FB9F254C26BF0051A0A4 /* NSRegularExpression+IPAddress.swift */, @@ -5904,7 +5901,6 @@ 58ACF64B26553C3F00ACE4B7 /* SettingsSwitchCell.swift in Sources */, 7AF9BE952A40461100DBFEDB /* RelayFilterView.swift in Sources */, 7A09C98129D99215000C2CAC /* String+FuzzyMatch.swift in Sources */, - 5827B0C52B14D3E800CCBBA1 /* NSDiffableDataSourceSnapshot+Reconfigure.swift in Sources */, 58A8EE5E2976DB00009C0F8D /* StorePaymentManagerError+Display.swift in Sources */, 58A8EE5A2976BFBB009C0F8D /* SKError+Localized.swift in Sources */, F02F41A12B9723AF00625A4F /* AddLocationsDataSource.swift in Sources */, @@ -6800,7 +6796,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 14.2; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; @@ -6859,7 +6855,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 14.2; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; SDKROOT = iphoneos; @@ -7337,7 +7333,7 @@ DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = CKG9MXH72F; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 14.2; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = net.mullvad.MullvadVPN.RoutingTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -7362,7 +7358,7 @@ DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = CKG9MXH72F; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 14.2; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = net.mullvad.MullvadVPN.RoutingTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -7398,7 +7394,7 @@ GENERATE_INFOPLIST_FILE = YES; HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/mullvad-api/include"; INFOPLIST_FILE = MullvadVPNUITests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 14.2; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; "LIBRARY_SEARCH_PATHS[sdk=iphoneos*][arch=arm64]" = "$(PROJECT_DIR)/../target/aarch64-apple-ios/debug"; "LIBRARY_SEARCH_PATHS[sdk=iphonesimulator*][arch=arm64]" = "$(PROJECT_DIR)/../target/aarch64-apple-ios-sim/debug"; "LIBRARY_SEARCH_PATHS[sdk=iphonesimulator*][arch=x86_64]" = "$(PROJECT_DIR)/../target/x86_64-apple-ios/debug"; @@ -7432,7 +7428,7 @@ GENERATE_INFOPLIST_FILE = YES; HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/mullvad-api/include"; INFOPLIST_FILE = MullvadVPNUITests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 14.2; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; "LIBRARY_SEARCH_PATHS[sdk=iphoneos*][arch=arm64]" = "$(PROJECT_DIR)/../target/aarch64-apple-ios/release"; "LIBRARY_SEARCH_PATHS[sdk=iphonesimulator*][arch=arm64]" = "$(PROJECT_DIR)/../target/aarch64-apple-ios-sim/release"; "LIBRARY_SEARCH_PATHS[sdk=iphonesimulator*][arch=x86_64]" = "$(PROJECT_DIR)/../target/x86_64-apple-ios/release"; @@ -7502,7 +7498,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 14.2; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; @@ -7932,7 +7928,7 @@ DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = CKG9MXH72F; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 14.2; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = net.mullvad.MullvadVPN.RoutingTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -7957,6 +7953,7 @@ GENERATE_INFOPLIST_FILE = YES; HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/../mullvad-api/include"; INFOPLIST_FILE = MullvadVPNUITests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; "LIBRARY_SEARCH_PATHS[sdk=iphoneos*][arch=arm64]" = "$(PROJECT_DIR)/../target/aarch64-apple-ios/debug"; "LIBRARY_SEARCH_PATHS[sdk=iphonesimulator*][arch=arm64]" = "$(PROJECT_DIR)/../target/aarch64-apple-ios-sim/debug"; "LIBRARY_SEARCH_PATHS[sdk=iphonesimulator*][arch=x86_64]" = "$(PROJECT_DIR)/../target/x86_64-apple-ios/debug"; @@ -7981,6 +7978,7 @@ GENERATE_INFOPLIST_FILE = YES; HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/../mullvad-api/include"; INFOPLIST_FILE = MullvadVPNUITests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; "LIBRARY_SEARCH_PATHS[sdk=iphoneos*][arch=arm64]" = "$(PROJECT_DIR)/../target/aarch64-apple-ios/release"; "LIBRARY_SEARCH_PATHS[sdk=iphonesimulator*][arch=arm64]" = "$(PROJECT_DIR)/../target/aarch64-apple-ios-sim/release"; "LIBRARY_SEARCH_PATHS[sdk=iphonesimulator*][arch=x86_64]" = "$(PROJECT_DIR)/../target/x86_64-apple-ios/release"; @@ -8018,7 +8016,7 @@ GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Mullvad VPN AB. All rights reserved."; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 14.2; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -8070,7 +8068,7 @@ GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Mullvad VPN AB. All rights reserved."; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 14.2; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -8122,7 +8120,7 @@ GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Mullvad VPN AB. All rights reserved."; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 14.2; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -8172,7 +8170,7 @@ GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Mullvad VPN AB. All rights reserved."; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 14.2; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -8211,7 +8209,7 @@ ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu17; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 14.2; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LOCALIZATION_PREFERS_STRING_CATALOGS = YES; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = net.mullvad.MullvadRustRuntimeTests; @@ -8236,7 +8234,7 @@ ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu17; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 14.2; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LOCALIZATION_PREFERS_STRING_CATALOGS = YES; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = net.mullvad.MullvadRustRuntimeTests; @@ -8260,7 +8258,7 @@ ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu17; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 14.2; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LOCALIZATION_PREFERS_STRING_CATALOGS = YES; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = net.mullvad.MullvadRustRuntimeTests; @@ -8284,7 +8282,7 @@ ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu17; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 14.2; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LOCALIZATION_PREFERS_STRING_CATALOGS = YES; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = net.mullvad.MullvadRustRuntimeTests; @@ -8341,7 +8339,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 14.2; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; SDKROOT = iphoneos; @@ -8763,7 +8761,7 @@ DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = CKG9MXH72F; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 14.2; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = net.mullvad.MullvadVPN.RoutingTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -8798,7 +8796,7 @@ GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Mullvad VPN AB. All rights reserved."; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 14.2; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -8846,7 +8844,7 @@ GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Mullvad VPN AB. All rights reserved."; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 14.2; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -8894,7 +8892,7 @@ GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Mullvad VPN AB. All rights reserved."; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 14.2; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -8943,7 +8941,7 @@ GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Mullvad VPN AB. All rights reserved."; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 14.2; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/ios/MullvadVPN/Coordinators/CustomLists/ListCustomListViewController.swift b/ios/MullvadVPN/Coordinators/CustomLists/ListCustomListViewController.swift index 3295124592d7..75a64e2b3ce8 100644 --- a/ios/MullvadVPN/Coordinators/CustomLists/ListCustomListViewController.swift +++ b/ios/MullvadVPN/Coordinators/CustomLists/ListCustomListViewController.swift @@ -68,7 +68,7 @@ class ListCustomListViewController: UIViewController { if reloadExisting { for item in fetchedItems { - snapshot.reconfigureOrReloadItems([ItemIdentifier(id: item.id)]) + snapshot.reconfigureItems([ItemIdentifier(id: item.id)]) } } diff --git a/ios/MullvadVPN/Coordinators/Settings/APIAccess/Edit/EditAccessMethodViewController.swift b/ios/MullvadVPN/Coordinators/Settings/APIAccess/Edit/EditAccessMethodViewController.swift index 710ea4a40315..f5158ebed50b 100644 --- a/ios/MullvadVPN/Coordinators/Settings/APIAccess/Edit/EditAccessMethodViewController.swift +++ b/ios/MullvadVPN/Coordinators/Settings/APIAccess/Edit/EditAccessMethodViewController.swift @@ -282,7 +282,7 @@ class EditAccessMethodViewController: UITableViewController { // Reconfigure the test button on status changes. if let previousValue, previousValue.testingStatus != newValue.testingStatus { - snapshot.reconfigureOrReloadItems([.testMethod]) + snapshot.reconfigureItems([.testMethod]) } snapshot.appendSections([.testingStatus]) @@ -293,7 +293,7 @@ class EditAccessMethodViewController: UITableViewController { snapshot.appendItems([.testingStatus], toSection: .testingStatus) if let previousValue, previousValue.testingStatus != newValue.testingStatus { - snapshot.reconfigureOrReloadItems([.testingStatus]) + snapshot.reconfigureItems([.testingStatus]) } // Show cancel test button below test status. diff --git a/ios/MullvadVPN/Coordinators/Settings/APIAccess/Edit/MethodSettings/MethodSettingsDataSourceConfiguration.swift b/ios/MullvadVPN/Coordinators/Settings/APIAccess/Edit/MethodSettings/MethodSettingsDataSourceConfiguration.swift index c026f607e883..c0f1e750d0b2 100644 --- a/ios/MullvadVPN/Coordinators/Settings/APIAccess/Edit/MethodSettings/MethodSettingsDataSourceConfiguration.swift +++ b/ios/MullvadVPN/Coordinators/Settings/APIAccess/Edit/MethodSettings/MethodSettingsDataSourceConfiguration.swift @@ -40,7 +40,7 @@ class MethodSettingsDataSourceConfiguration { snapshot.appendItems([.protocol], toSection: .protocol) // Reconfigure protocol cell on change. if let previousValue, previousValue.method != newValue.method { - snapshot.reconfigureOrReloadItems([.protocol]) + snapshot.reconfigureItems([.protocol]) } // Add proxy configuration section if the access method is configurable. @@ -56,12 +56,12 @@ class MethodSettingsDataSourceConfiguration { snapshot.appendItems(MethodSettingsItemIdentifier.allShadowsocksItems, toSection: .proxyConfiguration) // Reconfigure cipher cell on change. if let previousValue, previousValue.shadowsocks.cipher != newValue.shadowsocks.cipher { - snapshot.reconfigureOrReloadItems([.proxyConfiguration(.shadowsocks(.cipher))]) + snapshot.reconfigureItems([.proxyConfiguration(.shadowsocks(.cipher))]) } // Reconfigure the proxy configuration cell if validation error changed. if previousValidationError != newValidationError { - snapshot.reconfigureOrReloadItems(MethodSettingsItemIdentifier.allShadowsocksItems) + snapshot.reconfigureItems(MethodSettingsItemIdentifier.allShadowsocksItems) } case .socks5: snapshot.appendItems( @@ -71,7 +71,7 @@ class MethodSettingsDataSourceConfiguration { // Reconfigure the proxy configuration cell if validation error changed. if previousValidationError != newValidationError { - snapshot.reconfigureOrReloadItems( + snapshot.reconfigureItems( MethodSettingsItemIdentifier.allSocksItems(authenticate: newValue.socks.authenticate) ) } @@ -94,7 +94,7 @@ class MethodSettingsDataSourceConfiguration { } if let previousValue, previousValue.testingStatus != newValue.testingStatus { - snapshot.reconfigureOrReloadItems(snapshot.itemIdentifiers) + snapshot.reconfigureItems(snapshot.itemIdentifiers) } dataSource?.apply(snapshot, animatingDifferences: animated, completion: completion) @@ -114,7 +114,7 @@ class MethodSettingsDataSourceConfiguration { MethodSettingsItemIdentifier.allSocksItems(authenticate: viewModel.socks.authenticate) } - snapshot.reconfigureOrReloadItems(itemsToReload + [.validationError]) + snapshot.reconfigureItems(itemsToReload + [.validationError]) dataSource?.apply(snapshot, animatingDifferences: false) } } diff --git a/ios/MullvadVPN/Extensions/NSDiffableDataSourceSnapshot+Reconfigure.swift b/ios/MullvadVPN/Extensions/NSDiffableDataSourceSnapshot+Reconfigure.swift deleted file mode 100644 index bd0c42f28f06..000000000000 --- a/ios/MullvadVPN/Extensions/NSDiffableDataSourceSnapshot+Reconfigure.swift +++ /dev/null @@ -1,21 +0,0 @@ -// -// NSDiffableDataSourceSnapshot+Reconfigure.swift -// MullvadVPN -// -// Created by pronebird on 27/11/2023. -// Copyright © 2023 Mullvad VPN AB. All rights reserved. -// - -import UIKit - -extension NSDiffableDataSourceSnapshot { - /// Reconfigures cell on iOS 15 or newer, with fallback to reloading cells on earlier iOS. - /// - Parameter itemIdentifiers: item identifiers to reconfigure when possible, otherwise reload. - mutating func reconfigureOrReloadItems(_ itemIdentifiers: [ItemIdentifierType]) { - if #available(iOS 15, *) { - reconfigureItems(itemIdentifiers) - } else { - reloadItems(itemIdentifiers) - } - } -} diff --git a/ios/MullvadVPN/View controllers/Login/AccountTextField.swift b/ios/MullvadVPN/View controllers/Login/AccountTextField.swift index 133c1b6b2c78..e8b101a2c3f9 100644 --- a/ios/MullvadVPN/View controllers/Login/AccountTextField.swift +++ b/ios/MullvadVPN/View controllers/Login/AccountTextField.swift @@ -84,10 +84,8 @@ class AccountTextField: CustomTextField, UITextFieldDelegate { } override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool { - if #available(iOS 15.0, *) { - if action == #selector(captureTextFromCamera(_:)) { - return false - } + if action == #selector(captureTextFromCamera(_:)) { + return false } return super.canPerformAction(action, withSender: sender) } diff --git a/ios/MullvadVPN/View controllers/RedeemVoucher/VoucherTextField.swift b/ios/MullvadVPN/View controllers/RedeemVoucher/VoucherTextField.swift index 1475fc939776..fad518a80cf8 100644 --- a/ios/MullvadVPN/View controllers/RedeemVoucher/VoucherTextField.swift +++ b/ios/MullvadVPN/View controllers/RedeemVoucher/VoucherTextField.swift @@ -43,8 +43,7 @@ class VoucherTextField: CustomTextField, UITextFieldDelegate { } override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool { - if #available(iOS 15.0, *), - action == #selector(captureTextFromCamera(_:)) { return false } + if action == #selector(captureTextFromCamera(_:)) { return false } return super.canPerformAction(action, withSender: sender) } diff --git a/ios/MullvadVPN/View controllers/SelectLocation/LocationDiffableDataSourceProtocol.swift b/ios/MullvadVPN/View controllers/SelectLocation/LocationDiffableDataSourceProtocol.swift index 0450be0a81e8..0dce2859e0ea 100644 --- a/ios/MullvadVPN/View controllers/SelectLocation/LocationDiffableDataSourceProtocol.swift +++ b/ios/MullvadVPN/View controllers/SelectLocation/LocationDiffableDataSourceProtocol.swift @@ -77,7 +77,7 @@ extension LocationDiffableDataSourceProtocol { snapshot.appendItems(items, toSection: section) if reloadExisting { - snapshot.reconfigureOrReloadItems(items) + snapshot.reconfigureItems(items) } } diff --git a/ios/PacketTunnelCore/Actor/Task+Duration.swift b/ios/PacketTunnelCore/Actor/Task+Duration.swift index fdbc6be0381c..46e90bd196df 100644 --- a/ios/PacketTunnelCore/Actor/Task+Duration.swift +++ b/ios/PacketTunnelCore/Actor/Task+Duration.swift @@ -19,7 +19,7 @@ extension Task where Success == Never, Failure == Never { - Parameter duration: duration that determines how long the task should be suspended. */ - @available(iOS, introduced: 14.0, obsoleted: 16.0, message: "Replace with Task.sleep(for:tolerance:clock:).") + @available(iOS, introduced: 15.0, obsoleted: 16.0, message: "Replace with Task.sleep(for:tolerance:clock:).") static func sleep(duration: Duration) async throws { let millis = UInt64(max(0, duration.milliseconds)) let nanos = millis.saturatingMultiplication(1_000_000) @@ -34,7 +34,7 @@ extension Task where Success == Never, Failure == Never { - Parameter duration: duration that determines how long the task should be suspended. */ - @available(iOS, introduced: 14.0, obsoleted: 16.0, message: "Replace with Task.sleep(for:tolerance:clock:).") + @available(iOS, introduced: 15.0, obsoleted: 16.0, message: "Replace with Task.sleep(for:tolerance:clock:).") static func sleepUsingContinuousClock(for duration: Duration) async throws { let timer = DispatchSource.makeTimerSource()