Skip to content

Commit a0d2b89

Browse files
committed
Merge branch 'release/2.5.1'
2 parents 3bcf43a + 0ee3f8b commit a0d2b89

File tree

46 files changed

+184
-75
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+184
-75
lines changed

.github/workflows/build.yml

+8-6
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,24 @@ on:
66
jobs:
77
build:
88
name: Build and test
9-
runs-on: macos-13
9+
runs-on: macos-14
1010
env:
1111
DERIVED_DATA_PATH: 'DerivedData'
12-
DEVICE: 'iPhone 14 Pro'
12+
DEVICE: 'iPhone 15 Pro'
1313
if: "!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]')"
1414
strategy:
1515
matrix:
1616
config: ['freemium', 'premium']
1717
steps:
18-
- uses: actions/checkout@v3
19-
- uses: actions/cache@v3
18+
- uses: actions/checkout@v4
19+
- uses: actions/cache@v4
2020
with:
2121
path: .build
2222
key: ${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }}
2323
restore-keys: |
2424
${{ runner.os }}-spm-
25+
- name: Install SwiftLint
26+
run: brew install swiftlint
2527
- name: Run process.sh script
2628
run: |
2729
./Scripts/process.sh
@@ -30,8 +32,8 @@ jobs:
3032
run: |
3133
cd fastlane
3234
./scripts/create-cloud-access-secrets.sh
33-
- name: Select Xcode 15.1
34-
run: sudo xcode-select -s /Applications/Xcode_15.1.app
35+
- name: Select Xcode 15.2
36+
run: sudo xcode-select -s /Applications/Xcode_15.2.app
3537
- name: Configuration for freemium
3638
if: ${{ matrix.config == 'freemium' }}
3739
run: |

Cryptomator.xcodeproj/project.pbxproj

+2-2
Original file line numberDiff line numberDiff line change
@@ -3300,7 +3300,7 @@
33003300
GCC_WARN_UNUSED_FUNCTION = YES;
33013301
GCC_WARN_UNUSED_VARIABLE = YES;
33023302
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
3303-
MARKETING_VERSION = 2.5.0;
3303+
MARKETING_VERSION = 2.5.1;
33043304
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
33053305
MTL_FAST_MATH = YES;
33063306
ONLY_ACTIVE_ARCH = YES;
@@ -3362,7 +3362,7 @@
33623362
GCC_WARN_UNUSED_FUNCTION = YES;
33633363
GCC_WARN_UNUSED_VARIABLE = YES;
33643364
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
3365-
MARKETING_VERSION = 2.5.0;
3365+
MARKETING_VERSION = 2.5.1;
33663366
MTL_ENABLE_DEBUG_INFO = NO;
33673367
MTL_FAST_MATH = YES;
33683368
OTHER_SWIFT_FLAGS = "-Xfrontend -warn-long-expression-type-checking=200 -Xfrontend -warn-long-function-bodies=200";

Cryptomator.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved

+27-27
Original file line numberDiff line numberDiff line change
@@ -14,26 +14,26 @@
1414
"kind" : "remoteSourceControl",
1515
"location" : "https://github.com/leif-ibsen/ASN1",
1616
"state" : {
17-
"revision" : "5bb6eca2e4b250995f189c3d04ec53b6cd8257c5",
18-
"version" : "2.2.0"
17+
"revision" : "8a5cb6ce9b4a009a5b8d82465caf1aafb720096e",
18+
"version" : "2.5.0"
1919
}
2020
},
2121
{
2222
"identity" : "asn1swift",
2323
"kind" : "remoteSourceControl",
2424
"location" : "https://github.com/tikhop/ASN1Swift",
2525
"state" : {
26-
"revision" : "b53bee03a942623db25afc5bfb80227b2cb3b425",
27-
"version" : "1.2.4"
26+
"revision" : "177417b6bf89431a0750ee640012b6aed8961c6a",
27+
"version" : "1.2.5"
2828
}
2929
},
3030
{
3131
"identity" : "aws-sdk-ios-spm",
3232
"kind" : "remoteSourceControl",
3333
"location" : "https://github.com/aws-amplify/aws-sdk-ios-spm.git",
3434
"state" : {
35-
"revision" : "59fdc9ca7ff3f5d38e07af27526a527c199b8de6",
36-
"version" : "2.33.7"
35+
"revision" : "cfcf97f6994b6ffd9a3244dc638458f5822aba56",
36+
"version" : "2.34.0"
3737
}
3838
},
3939
{
@@ -50,26 +50,26 @@
5050
"kind" : "remoteSourceControl",
5151
"location" : "https://github.com/leif-ibsen/BigInt",
5252
"state" : {
53-
"revision" : "3fe07ec38afa732e86d4f3e867cb43b05d004941",
54-
"version" : "1.14.0"
53+
"revision" : "ba54c8b51392627d4cc9b05a672cce558be56e04",
54+
"version" : "1.17.0"
5555
}
5656
},
5757
{
5858
"identity" : "cloud-access-swift",
5959
"kind" : "remoteSourceControl",
6060
"location" : "https://github.com/cryptomator/cloud-access-swift.git",
6161
"state" : {
62-
"revision" : "63fd1cfee9e4d1c0a8d585dd0c7008eb37d2f037",
63-
"version" : "1.9.0"
62+
"revision" : "bb9cc1c300be890f3a47efa0ac0808ee7c42146d",
63+
"version" : "1.9.2"
6464
}
6565
},
6666
{
6767
"identity" : "cocoalumberjack",
6868
"kind" : "remoteSourceControl",
6969
"location" : "https://github.com/CocoaLumberjack/CocoaLumberjack.git",
7070
"state" : {
71-
"revision" : "67ec5818a757aba4d7c534e21a905d878d128dbf",
72-
"version" : "3.8.1"
71+
"revision" : "4b8714a7fb84d42393314ce897127b3939885ec3",
72+
"version" : "3.8.5"
7373
}
7474
},
7575
{
@@ -86,26 +86,26 @@
8686
"kind" : "remoteSourceControl",
8787
"location" : "https://github.com/leif-ibsen/Digest",
8888
"state" : {
89-
"revision" : "fd501645c5f14c17207c4ada4281a1e6b7cb03df",
90-
"version" : "1.1.0"
89+
"revision" : "1202dcb976e481e7c228492c5a8d5159cfa4ea97",
90+
"version" : "1.4.0"
9191
}
9292
},
9393
{
9494
"identity" : "dropbox-sdk-obj-c-spm",
9595
"kind" : "remoteSourceControl",
9696
"location" : "https://github.com/phil1995/dropbox-sdk-obj-c-spm.git",
9797
"state" : {
98-
"revision" : "f0eafe25d26c52377c4a1c08f1dbd77320164994",
99-
"version" : "7.0.0"
98+
"revision" : "87c1fcf96622ab90a956bdf89331ddb4164f4855",
99+
"version" : "7.2.0"
100100
}
101101
},
102102
{
103103
"identity" : "google-api-objectivec-client-for-rest",
104104
"kind" : "remoteSourceControl",
105105
"location" : "https://github.com/google/google-api-objectivec-client-for-rest.git",
106106
"state" : {
107-
"revision" : "40930b2c3add6234b8be1a780c08cf88b6a7a1f7",
108-
"version" : "3.2.0"
107+
"revision" : "bcb0439b37d16d39da6f62139d4009d09e7aef14",
108+
"version" : "3.4.0"
109109
}
110110
},
111111
{
@@ -149,8 +149,8 @@
149149
"kind" : "remoteSourceControl",
150150
"location" : "https://github.com/AzureAD/microsoft-authentication-library-for-objc.git",
151151
"state" : {
152-
"revision" : "e9ef281b2f281c3ba2d32608138b1431cba5e4df",
153-
"version" : "1.2.20"
152+
"revision" : "9d15d7980a52945dd17ea529bcf4c92f2c0d9a12",
153+
"version" : "1.3.1"
154154
}
155155
},
156156
{
@@ -201,19 +201,19 @@
201201
{
202202
"identity" : "swift-log",
203203
"kind" : "remoteSourceControl",
204-
"location" : "https://github.com/apple/swift-log.git",
204+
"location" : "https://github.com/apple/swift-log",
205205
"state" : {
206-
"revision" : "532d8b529501fb73a2455b179e0bbb6d49b652ed",
207-
"version" : "1.5.3"
206+
"revision" : "e97a6fcb1ab07462881ac165fdbb37f067e205d5",
207+
"version" : "1.5.4"
208208
}
209209
},
210210
{
211211
"identity" : "swiftecc",
212212
"kind" : "remoteSourceControl",
213213
"location" : "https://github.com/leif-ibsen/SwiftECC",
214214
"state" : {
215-
"revision" : "18c0e462882d0a4fa910472a0a6cc13ef97bbc21",
216-
"version" : "5.0.0"
215+
"revision" : "0efa7eed9eeedb93e6d42bc4a18a40ef5c1ef2d0",
216+
"version" : "5.3.0"
217217
}
218218
},
219219
{
@@ -239,8 +239,8 @@
239239
"kind" : "remoteSourceControl",
240240
"location" : "https://github.com/pointfreeco/xctest-dynamic-overlay",
241241
"state" : {
242-
"revision" : "23cbf2294e350076ea4dbd7d5d047c1e76b03631",
243-
"version" : "1.0.2"
242+
"revision" : "b13b1d1a8e787a5ffc71ac19dcaf52183ab27ba2",
243+
"version" : "1.1.1"
244244
}
245245
}
246246
],

Cryptomator/Common/Cells/BindableTableViewCellViewModel.swift

+1
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ protocol ConfigurableTableViewCell: UITableViewCell {
5555
}
5656

5757
import Combine
58+
5859
protocol ViewModel {
5960
var error: AnyPublisher<Error, Never> { get }
6061
}

Cryptomator/Common/Cells/SystemSymbolButtonCell.swift

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
import Foundation
1010
import UIKit
11+
1112
class SystemSymbolButtonCell: ButtonTableViewCell {
1213
override func configure(with viewModel: TableViewCellViewModel) {
1314
super.configure(with: viewModel)

Cryptomator/Common/StaticUITableViewController.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ class StaticUITableViewController<SectionType: Hashable>: BaseUITableViewControl
3636
func applySnapshot(sections: [Section<SectionType>], animatingDifferences: Bool = true) {
3737
var snapshot = NSDiffableDataSourceSnapshot<SectionType, TableViewCellViewModel>()
3838
snapshot.appendSections(sections.map { $0.id })
39-
sections.forEach { section in
39+
for section in sections {
4040
snapshot.appendItems(section.elements, toSection: section.id)
4141
}
4242
// A snapshot can only be applied animated when the view is visible.

Cryptomator/Purchase/IAPViewController.swift

+4-4
Original file line numberDiff line numberDiff line change
@@ -316,16 +316,16 @@ class BaseIAPViewModel {
316316
}
317317

318318
private func setEnabledFlagForAllButtonCellViewModels(to enabled: Bool) {
319-
cells.forEach {
320-
if case let Item.purchaseCell(purchaseCellViewModel) = $0 {
319+
for cell in cells {
320+
if case let Item.purchaseCell(purchaseCellViewModel) = cell {
321321
purchaseCellViewModel.purchaseButtonViewModel.isEnabled.value = enabled
322322
}
323323
}
324324
}
325325

326326
private func setIsLoading(to isLoading: Bool, forCellWith productIdentifier: ProductIdentifier) {
327-
cells.forEach {
328-
if case let Item.purchaseCell(purchaseCellViewModel) = $0, purchaseCellViewModel.productIdentifier == productIdentifier {
327+
for cell in cells {
328+
if case let Item.purchaseCell(purchaseCellViewModel) = cell, purchaseCellViewModel.productIdentifier == productIdentifier {
329329
purchaseCellViewModel.purchaseButtonViewModel.isLoading.value = isLoading
330330
}
331331
}

Cryptomator/VaultDetail/ChangePassword/VaultPasswordChanging.swift

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
//
88

99
import Foundation
10+
1011
protocol VaultPasswordChanging {
1112
func changedPassword()
1213
}

Cryptomator/VaultList/EmptyListMessage.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ class EmptyListMessage: UIView {
7171

7272
private var shapeLayer: CAShapeLayer {
7373
// swiftlint:disable:next force_cast
74-
return self.layer as! CAShapeLayer
74+
return layer as! CAShapeLayer
7575
}
7676

7777
override func layoutSubviews() {

Cryptomator/VaultList/VaultListViewModel.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ class VaultListViewModel: ViewModel, VaultListViewModelProtocol {
111111
xpc.proxy.getUnlockedVaultDomainIdentifiers(reply: handler)
112112
}
113113
}.then { unlockedVaultDomainIdentifiers -> Void in
114-
unlockedVaultDomainIdentifiers.forEach { domainIdentifier in
114+
for domainIdentifier in unlockedVaultDomainIdentifiers {
115115
let vaultInfo = self.vaultCellViewModels.first { $0.vault.vaultUID == domainIdentifier.rawValue }
116116
vaultInfo?.setVaultUnlockStatus(unlocked: true)
117117
}

CryptomatorCommon/Sources/CryptomatorCommonCore/CloudPath+Contains.swift

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
import CryptomatorCloudAccessCore
1010
import Foundation
11+
1112
public extension CloudPath {
1213
func contains(_ other: CloudPath) -> Bool {
1314
return pathComponents.starts(with: other.pathComponents)

CryptomatorCommon/Sources/CryptomatorCommonCore/FileProviderXPC/LogLevelUpdating.swift

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
import FileProvider
1010
import Foundation
11+
1112
@objc public protocol LogLevelUpdating: NSFileProviderServiceSource {
1213
func logLevelUpdated()
1314
}

CryptomatorCommon/Sources/CryptomatorCommonCore/FileProviderXPC/XPCErrorHelper.swift

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
//
88

99
import Foundation
10+
1011
public enum XPCErrorHelper {
1112
/**
1213
Bridges a Swift Error to an XPC compatible NSError.

CryptomatorCommon/Sources/CryptomatorCommonCore/KeepUnlockedDuration.swift

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
//
88

99
import Foundation
10+
1011
public enum KeepUnlockedDuration: CaseIterable, Codable {
1112
case auto
1213
case fiveMinutes

CryptomatorCommon/Sources/CryptomatorCommonCore/SwiftUI/SwiftUI+Focus.swift

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import Foundation
1010
import Introspect
1111
import SwiftUI
12+
1213
// inspired by https://github.com/art-technologies/swift-focuser
1314

1415
public extension View {

CryptomatorCommon/Tests/CryptomatorCommonCoreTests/Hub/HubVaultUnlockHandlerDelegateMock.swift

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import Foundation
99
@testable import CryptomatorCommonCore
10+
1011
// swiftlint:disable all
1112
final class HubVaultUnlockHandlerDelegateMock: HubVaultUnlockHandlerDelegate {
1213
// MARK: - successfullyProcessedUnlockedVault

CryptomatorFileProvider/DB/DatabaseHelper.swift

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import CryptomatorCloudAccessCore
1010
import FileProvider
1111
import Foundation
1212
import GRDB
13+
1314
public protocol DatabaseHelping {
1415
func getDatabaseURL(for domain: NSFileProviderDomain) -> URL
1516
func getMigratedDB(at databaseURL: URL, purposeIdentifier: String) throws -> DatabaseWriter

CryptomatorFileProvider/FileProviderNotificator.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ public class FileProviderNotificator: FileProviderNotificatorType {
142142

143143
public func updateWorkingSetItems(_ items: [NSFileProviderItem]) {
144144
queue.sync(flags: .barrier) {
145-
items.forEach { item in
145+
for item in items {
146146
signalDeleteWorkingSetItemIdentifier.remove(item.itemIdentifier)
147147
signalUpdateWorkingSetItem[item.itemIdentifier] = item
148148
}

CryptomatorFileProvider/ServiceSource/CacheManagingServiceSource.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,8 @@ public class CacheManagingServiceSource: ServiceSource, CacheManaging {
6767
}
6868

6969
private func clearCache(for domains: [NSFileProviderDomain]) throws {
70-
try domains.forEach {
71-
let cacheManager = try cachedManagerFactory.createCachedFileManager(for: $0)
70+
for domain in domains {
71+
let cacheManager = try cachedManagerFactory.createCachedFileManager(for: domain)
7272
try cacheManager.clearCache()
7373
}
7474
}

CryptomatorFileProvider/Workflow/WorkflowDependencyFactory.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ class WorkflowDependencyFactory {
4040
public func createDependencies(paths: [CloudPath], lockType: LockType) -> WorkflowDependency {
4141
let unlock = Promise<Void>.pending()
4242
var locks = [Promise<Void>]()
43-
paths.forEach { path in
43+
for path in paths {
4444
let lock = createLock(path: path, type: lockType)
4545
locks.append(lock)
4646
createUnlock(path: path, type: lockType, basedOn: unlock)
Original file line numberDiff line numberDiff line change
@@ -1 +1,11 @@
11
"common.vault" = "الخزينة";
2+
"openVaultIntent.title" = "افتح المخزن";
3+
4+
"saveFileIntent.description" = "يحفظ الملف إلى المخزن.";
5+
"saveFileIntent.file" = "الملف";
6+
"saveFileIntent.parameter.ignoreExisting" = "تجاهل الملف الموجود بنفس الاسم";
7+
"saveFileIntent.text" = "حفظ ${file} إلى ${folder}";
8+
"saveFileIntent.title" = "احفظ الملف";
9+
10+
"vaultFolder.displayName" = "مجلد المخزن";
11+
"vaultFolder.vaultIdentifier" = "معرّف المخزن";

CryptomatorIntents/id.lproj/Intents.strings

+14
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,20 @@
99
"getFolderIntent.text" = "Mengambil folder yang berada di ${path} di dalam ${vault}";
1010
"getFolderIntent.title" = "Ambil Folder";
1111

12+
"isUnlockedIntent.description" = "Mengembalikan apakah vault yang diberikan tidak terkunci.";
13+
"isUnlockedIntent.title" = "Tidak Terkunci";
14+
15+
"isVaultLockedIntent.title" = "Vault tidak terkunci";
16+
"isVaultUnlockedIntent.text" = "Apakah ${vault} tidak terkunci?";
17+
18+
"lockVaultIntent.description" = "Mengunci vault yang diberikan.";
19+
"lockVaultIntent.text" = "Kunci ${vault}";
20+
"lockVaultIntent.title" = "Kunci Vault";
21+
22+
"openVaultIntent.description" = "Membuka vault yang diberikan di aplikasi Files.";
23+
"openVaultIntent.text" = "Membuka ${vault} di Files aplikasi";
24+
"openVaultIntent.title" = "Buka Vault";
25+
1226
"saveFileIntent.description" = "Simpan sebuah file ke vault.";
1327
"saveFileIntent.file" = "File";
1428
"saveFileIntent.parameter.ignoreExisting" = "Abaikan file yang sudah ada dengan nama yang sama";

0 commit comments

Comments
 (0)