Skip to content

Commit

Permalink
Merge branch 'release/2.5.1'
Browse files Browse the repository at this point in the history
  • Loading branch information
tobihagemann committed Mar 15, 2024
2 parents 3bcf43a + 0ee3f8b commit a0d2b89
Show file tree
Hide file tree
Showing 46 changed files with 184 additions and 75 deletions.
14 changes: 8 additions & 6 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,24 @@ on:
jobs:
build:
name: Build and test
runs-on: macos-13
runs-on: macos-14
env:
DERIVED_DATA_PATH: 'DerivedData'
DEVICE: 'iPhone 14 Pro'
DEVICE: 'iPhone 15 Pro'
if: "!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]')"
strategy:
matrix:
config: ['freemium', 'premium']
steps:
- uses: actions/checkout@v3
- uses: actions/cache@v3
- uses: actions/checkout@v4
- uses: actions/cache@v4
with:
path: .build
key: ${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }}
restore-keys: |
${{ runner.os }}-spm-
- name: Install SwiftLint
run: brew install swiftlint
- name: Run process.sh script
run: |
./Scripts/process.sh
Expand All @@ -30,8 +32,8 @@ jobs:
run: |
cd fastlane
./scripts/create-cloud-access-secrets.sh
- name: Select Xcode 15.1
run: sudo xcode-select -s /Applications/Xcode_15.1.app
- name: Select Xcode 15.2
run: sudo xcode-select -s /Applications/Xcode_15.2.app
- name: Configuration for freemium
if: ${{ matrix.config == 'freemium' }}
run: |
Expand Down
4 changes: 2 additions & 2 deletions Cryptomator.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -3300,7 +3300,7 @@
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
MARKETING_VERSION = 2.5.0;
MARKETING_VERSION = 2.5.1;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
ONLY_ACTIVE_ARCH = YES;
Expand Down Expand Up @@ -3362,7 +3362,7 @@
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
MARKETING_VERSION = 2.5.0;
MARKETING_VERSION = 2.5.1;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "-Xfrontend -warn-long-expression-type-checking=200 -Xfrontend -warn-long-function-bodies=200";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,26 +14,26 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/leif-ibsen/ASN1",
"state" : {
"revision" : "5bb6eca2e4b250995f189c3d04ec53b6cd8257c5",
"version" : "2.2.0"
"revision" : "8a5cb6ce9b4a009a5b8d82465caf1aafb720096e",
"version" : "2.5.0"
}
},
{
"identity" : "asn1swift",
"kind" : "remoteSourceControl",
"location" : "https://github.com/tikhop/ASN1Swift",
"state" : {
"revision" : "b53bee03a942623db25afc5bfb80227b2cb3b425",
"version" : "1.2.4"
"revision" : "177417b6bf89431a0750ee640012b6aed8961c6a",
"version" : "1.2.5"
}
},
{
"identity" : "aws-sdk-ios-spm",
"kind" : "remoteSourceControl",
"location" : "https://github.com/aws-amplify/aws-sdk-ios-spm.git",
"state" : {
"revision" : "59fdc9ca7ff3f5d38e07af27526a527c199b8de6",
"version" : "2.33.7"
"revision" : "cfcf97f6994b6ffd9a3244dc638458f5822aba56",
"version" : "2.34.0"
}
},
{
Expand All @@ -50,26 +50,26 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/leif-ibsen/BigInt",
"state" : {
"revision" : "3fe07ec38afa732e86d4f3e867cb43b05d004941",
"version" : "1.14.0"
"revision" : "ba54c8b51392627d4cc9b05a672cce558be56e04",
"version" : "1.17.0"
}
},
{
"identity" : "cloud-access-swift",
"kind" : "remoteSourceControl",
"location" : "https://github.com/cryptomator/cloud-access-swift.git",
"state" : {
"revision" : "63fd1cfee9e4d1c0a8d585dd0c7008eb37d2f037",
"version" : "1.9.0"
"revision" : "bb9cc1c300be890f3a47efa0ac0808ee7c42146d",
"version" : "1.9.2"
}
},
{
"identity" : "cocoalumberjack",
"kind" : "remoteSourceControl",
"location" : "https://github.com/CocoaLumberjack/CocoaLumberjack.git",
"state" : {
"revision" : "67ec5818a757aba4d7c534e21a905d878d128dbf",
"version" : "3.8.1"
"revision" : "4b8714a7fb84d42393314ce897127b3939885ec3",
"version" : "3.8.5"
}
},
{
Expand All @@ -86,26 +86,26 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/leif-ibsen/Digest",
"state" : {
"revision" : "fd501645c5f14c17207c4ada4281a1e6b7cb03df",
"version" : "1.1.0"
"revision" : "1202dcb976e481e7c228492c5a8d5159cfa4ea97",
"version" : "1.4.0"
}
},
{
"identity" : "dropbox-sdk-obj-c-spm",
"kind" : "remoteSourceControl",
"location" : "https://github.com/phil1995/dropbox-sdk-obj-c-spm.git",
"state" : {
"revision" : "f0eafe25d26c52377c4a1c08f1dbd77320164994",
"version" : "7.0.0"
"revision" : "87c1fcf96622ab90a956bdf89331ddb4164f4855",
"version" : "7.2.0"
}
},
{
"identity" : "google-api-objectivec-client-for-rest",
"kind" : "remoteSourceControl",
"location" : "https://github.com/google/google-api-objectivec-client-for-rest.git",
"state" : {
"revision" : "40930b2c3add6234b8be1a780c08cf88b6a7a1f7",
"version" : "3.2.0"
"revision" : "bcb0439b37d16d39da6f62139d4009d09e7aef14",
"version" : "3.4.0"
}
},
{
Expand Down Expand Up @@ -149,8 +149,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/AzureAD/microsoft-authentication-library-for-objc.git",
"state" : {
"revision" : "e9ef281b2f281c3ba2d32608138b1431cba5e4df",
"version" : "1.2.20"
"revision" : "9d15d7980a52945dd17ea529bcf4c92f2c0d9a12",
"version" : "1.3.1"
}
},
{
Expand Down Expand Up @@ -201,19 +201,19 @@
{
"identity" : "swift-log",
"kind" : "remoteSourceControl",
"location" : "https://github.com/apple/swift-log.git",
"location" : "https://github.com/apple/swift-log",
"state" : {
"revision" : "532d8b529501fb73a2455b179e0bbb6d49b652ed",
"version" : "1.5.3"
"revision" : "e97a6fcb1ab07462881ac165fdbb37f067e205d5",
"version" : "1.5.4"
}
},
{
"identity" : "swiftecc",
"kind" : "remoteSourceControl",
"location" : "https://github.com/leif-ibsen/SwiftECC",
"state" : {
"revision" : "18c0e462882d0a4fa910472a0a6cc13ef97bbc21",
"version" : "5.0.0"
"revision" : "0efa7eed9eeedb93e6d42bc4a18a40ef5c1ef2d0",
"version" : "5.3.0"
}
},
{
Expand All @@ -239,8 +239,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/pointfreeco/xctest-dynamic-overlay",
"state" : {
"revision" : "23cbf2294e350076ea4dbd7d5d047c1e76b03631",
"version" : "1.0.2"
"revision" : "b13b1d1a8e787a5ffc71ac19dcaf52183ab27ba2",
"version" : "1.1.1"
}
}
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ protocol ConfigurableTableViewCell: UITableViewCell {
}

import Combine

protocol ViewModel {
var error: AnyPublisher<Error, Never> { get }
}
1 change: 1 addition & 0 deletions Cryptomator/Common/Cells/SystemSymbolButtonCell.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

import Foundation
import UIKit

class SystemSymbolButtonCell: ButtonTableViewCell {
override func configure(with viewModel: TableViewCellViewModel) {
super.configure(with: viewModel)
Expand Down
2 changes: 1 addition & 1 deletion Cryptomator/Common/StaticUITableViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ class StaticUITableViewController<SectionType: Hashable>: BaseUITableViewControl
func applySnapshot(sections: [Section<SectionType>], animatingDifferences: Bool = true) {
var snapshot = NSDiffableDataSourceSnapshot<SectionType, TableViewCellViewModel>()
snapshot.appendSections(sections.map { $0.id })
sections.forEach { section in
for section in sections {
snapshot.appendItems(section.elements, toSection: section.id)
}
// A snapshot can only be applied animated when the view is visible.
Expand Down
8 changes: 4 additions & 4 deletions Cryptomator/Purchase/IAPViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -316,16 +316,16 @@ class BaseIAPViewModel {
}

private func setEnabledFlagForAllButtonCellViewModels(to enabled: Bool) {
cells.forEach {
if case let Item.purchaseCell(purchaseCellViewModel) = $0 {
for cell in cells {
if case let Item.purchaseCell(purchaseCellViewModel) = cell {
purchaseCellViewModel.purchaseButtonViewModel.isEnabled.value = enabled
}
}
}

private func setIsLoading(to isLoading: Bool, forCellWith productIdentifier: ProductIdentifier) {
cells.forEach {
if case let Item.purchaseCell(purchaseCellViewModel) = $0, purchaseCellViewModel.productIdentifier == productIdentifier {
for cell in cells {
if case let Item.purchaseCell(purchaseCellViewModel) = cell, purchaseCellViewModel.productIdentifier == productIdentifier {
purchaseCellViewModel.purchaseButtonViewModel.isLoading.value = isLoading
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
//

import Foundation

protocol VaultPasswordChanging {
func changedPassword()
}
2 changes: 1 addition & 1 deletion Cryptomator/VaultList/EmptyListMessage.swift
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ class EmptyListMessage: UIView {

private var shapeLayer: CAShapeLayer {
// swiftlint:disable:next force_cast
return self.layer as! CAShapeLayer
return layer as! CAShapeLayer
}

override func layoutSubviews() {
Expand Down
2 changes: 1 addition & 1 deletion Cryptomator/VaultList/VaultListViewModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ class VaultListViewModel: ViewModel, VaultListViewModelProtocol {
xpc.proxy.getUnlockedVaultDomainIdentifiers(reply: handler)
}
}.then { unlockedVaultDomainIdentifiers -> Void in
unlockedVaultDomainIdentifiers.forEach { domainIdentifier in
for domainIdentifier in unlockedVaultDomainIdentifiers {
let vaultInfo = self.vaultCellViewModels.first { $0.vault.vaultUID == domainIdentifier.rawValue }
vaultInfo?.setVaultUnlockStatus(unlocked: true)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

import CryptomatorCloudAccessCore
import Foundation

public extension CloudPath {
func contains(_ other: CloudPath) -> Bool {
return pathComponents.starts(with: other.pathComponents)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

import FileProvider
import Foundation

@objc public protocol LogLevelUpdating: NSFileProviderServiceSource {
func logLevelUpdated()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
//

import Foundation

public enum XPCErrorHelper {
/**
Bridges a Swift Error to an XPC compatible NSError.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
//

import Foundation

public enum KeepUnlockedDuration: CaseIterable, Codable {
case auto
case fiveMinutes
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import Foundation
import Introspect
import SwiftUI

// inspired by https://github.com/art-technologies/swift-focuser

public extension View {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

import Foundation
@testable import CryptomatorCommonCore

// swiftlint:disable all
final class HubVaultUnlockHandlerDelegateMock: HubVaultUnlockHandlerDelegate {
// MARK: - successfullyProcessedUnlockedVault
Expand Down
1 change: 1 addition & 0 deletions CryptomatorFileProvider/DB/DatabaseHelper.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import CryptomatorCloudAccessCore
import FileProvider
import Foundation
import GRDB

public protocol DatabaseHelping {
func getDatabaseURL(for domain: NSFileProviderDomain) -> URL
func getMigratedDB(at databaseURL: URL, purposeIdentifier: String) throws -> DatabaseWriter
Expand Down
2 changes: 1 addition & 1 deletion CryptomatorFileProvider/FileProviderNotificator.swift
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ public class FileProviderNotificator: FileProviderNotificatorType {

public func updateWorkingSetItems(_ items: [NSFileProviderItem]) {
queue.sync(flags: .barrier) {
items.forEach { item in
for item in items {
signalDeleteWorkingSetItemIdentifier.remove(item.itemIdentifier)
signalUpdateWorkingSetItem[item.itemIdentifier] = item
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,8 @@ public class CacheManagingServiceSource: ServiceSource, CacheManaging {
}

private func clearCache(for domains: [NSFileProviderDomain]) throws {
try domains.forEach {
let cacheManager = try cachedManagerFactory.createCachedFileManager(for: $0)
for domain in domains {
let cacheManager = try cachedManagerFactory.createCachedFileManager(for: domain)
try cacheManager.clearCache()
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ class WorkflowDependencyFactory {
public func createDependencies(paths: [CloudPath], lockType: LockType) -> WorkflowDependency {
let unlock = Promise<Void>.pending()
var locks = [Promise<Void>]()
paths.forEach { path in
for path in paths {
let lock = createLock(path: path, type: lockType)
locks.append(lock)
createUnlock(path: path, type: lockType, basedOn: unlock)
Expand Down
10 changes: 10 additions & 0 deletions CryptomatorIntents/ar.lproj/Intents.strings
Original file line number Diff line number Diff line change
@@ -1 +1,11 @@
"common.vault" = "الخزينة";
"openVaultIntent.title" = "افتح المخزن";

"saveFileIntent.description" = "يحفظ الملف إلى المخزن.";
"saveFileIntent.file" = "الملف";
"saveFileIntent.parameter.ignoreExisting" = "تجاهل الملف الموجود بنفس الاسم";
"saveFileIntent.text" = "حفظ ${file} إلى ${folder}";
"saveFileIntent.title" = "احفظ الملف";

"vaultFolder.displayName" = "مجلد المخزن";
"vaultFolder.vaultIdentifier" = "معرّف المخزن";
14 changes: 14 additions & 0 deletions CryptomatorIntents/id.lproj/Intents.strings
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,20 @@
"getFolderIntent.text" = "Mengambil folder yang berada di ${path} di dalam ${vault}";
"getFolderIntent.title" = "Ambil Folder";

"isUnlockedIntent.description" = "Mengembalikan apakah vault yang diberikan tidak terkunci.";
"isUnlockedIntent.title" = "Tidak Terkunci";

"isVaultLockedIntent.title" = "Vault tidak terkunci";
"isVaultUnlockedIntent.text" = "Apakah ${vault} tidak terkunci?";

"lockVaultIntent.description" = "Mengunci vault yang diberikan.";
"lockVaultIntent.text" = "Kunci ${vault}";
"lockVaultIntent.title" = "Kunci Vault";

"openVaultIntent.description" = "Membuka vault yang diberikan di aplikasi Files.";
"openVaultIntent.text" = "Membuka ${vault} di Files aplikasi";
"openVaultIntent.title" = "Buka Vault";

"saveFileIntent.description" = "Simpan sebuah file ke vault.";
"saveFileIntent.file" = "File";
"saveFileIntent.parameter.ignoreExisting" = "Abaikan file yang sudah ada dengan nama yang sama";
Expand Down
Loading

0 comments on commit a0d2b89

Please sign in to comment.