From 3159986adb61b4df90745403f437230a5bea8367 Mon Sep 17 00:00:00 2001 From: mertalev <101130780+mertalev@users.noreply.github.com> Date: Mon, 2 Feb 2026 10:37:42 -0500 Subject: [PATCH] fix ios --- mobile/ios/Runner.xcodeproj/project.pbxproj | 4 ++++ mobile/ios/Runner/AppDelegate.swift | 5 +++-- mobile/ios/Runner/Background/BackgroundWorker.swift | 2 +- mobile/ios/Runner/Core/NetworkApiImpl.swift | 7 +++---- mobile/ios/Runner/Core/URLSessionManager.swift | 3 +-- mobile/ios/Runner/Images/LocalImagesImpl.swift | 2 +- 6 files changed, 13 insertions(+), 10 deletions(-) diff --git a/mobile/ios/Runner.xcodeproj/project.pbxproj b/mobile/ios/Runner.xcodeproj/project.pbxproj index 991f075ad9..22a7abcbac 100644 --- a/mobile/ios/Runner.xcodeproj/project.pbxproj +++ b/mobile/ios/Runner.xcodeproj/project.pbxproj @@ -33,6 +33,7 @@ FE5499F42F1197D8006016CB /* RemoteImages.g.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE5499F22F1197D8006016CB /* RemoteImages.g.swift */; }; FE5499F62F11980E006016CB /* LocalImagesImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE5499F52F11980E006016CB /* LocalImagesImpl.swift */; }; FE5499F82F1198E2006016CB /* RemoteImagesImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE5499F72F1198DE006016CB /* RemoteImagesImpl.swift */; }; + FE5FE4AE2F30FBC000A71243 /* ImageProcessing.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE5FE4AD2F30FBC000A71243 /* ImageProcessing.swift */; }; FEAFA8732E4D42F4001E47FE /* Thumbhash.swift in Sources */ = {isa = PBXBuildFile; fileRef = FEAFA8722E4D42F4001E47FE /* Thumbhash.swift */; }; FEE084F82EC172460045228E /* SQLiteData in Frameworks */ = {isa = PBXBuildFile; productRef = FEE084F72EC172460045228E /* SQLiteData */; }; FEE084FB2EC1725A0045228E /* RawStructuredFieldValues in Frameworks */ = {isa = PBXBuildFile; productRef = FEE084FA2EC1725A0045228E /* RawStructuredFieldValues */; }; @@ -124,6 +125,7 @@ FE5499F22F1197D8006016CB /* RemoteImages.g.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RemoteImages.g.swift; sourceTree = ""; }; FE5499F52F11980E006016CB /* LocalImagesImpl.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalImagesImpl.swift; sourceTree = ""; }; FE5499F72F1198DE006016CB /* RemoteImagesImpl.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RemoteImagesImpl.swift; sourceTree = ""; }; + FE5FE4AD2F30FBC000A71243 /* ImageProcessing.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageProcessing.swift; sourceTree = ""; }; FEAFA8722E4D42F4001E47FE /* Thumbhash.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Thumbhash.swift; sourceTree = ""; }; /* End PBXFileReference section */ @@ -325,6 +327,7 @@ FED3B1952E253E9B0030FD97 /* Images */ = { isa = PBXGroup; children = ( + FE5FE4AD2F30FBC000A71243 /* ImageProcessing.swift */, FE5499F72F1198DE006016CB /* RemoteImagesImpl.swift */, FE5499F52F11980E006016CB /* LocalImagesImpl.swift */, FE5499F12F1197D8006016CB /* LocalImages.g.swift */, @@ -609,6 +612,7 @@ FE5499F32F1197D8006016CB /* LocalImages.g.swift in Sources */, FE5499F62F11980E006016CB /* LocalImagesImpl.swift in Sources */, FE5499F42F1197D8006016CB /* RemoteImages.g.swift in Sources */, + FE5FE4AE2F30FBC000A71243 /* ImageProcessing.swift in Sources */, B25D377A2E72CA15008B6CA7 /* Connectivity.g.swift in Sources */, FE5499F82F1198E2006016CB /* RemoteImagesImpl.swift in Sources */, FEAFA8732E4D42F4001E47FE /* Thumbhash.swift in Sources */, diff --git a/mobile/ios/Runner/AppDelegate.swift b/mobile/ios/Runner/AppDelegate.swift index 449e4a63c2..f842285b23 100644 --- a/mobile/ios/Runner/AppDelegate.swift +++ b/mobile/ios/Runner/AppDelegate.swift @@ -20,7 +20,7 @@ import UIKit GeneratedPluginRegistrant.register(with: self) let controller: FlutterViewController = window?.rootViewController as! FlutterViewController - AppDelegate.registerPlugins(with: controller.engine) + AppDelegate.registerPlugins(with: controller.engine, controller: controller) BackgroundServicePlugin.register(with: self.registrar(forPlugin: "BackgroundServicePlugin")!) BackgroundServicePlugin.registerBackgroundProcessing() @@ -51,12 +51,13 @@ import UIKit return super.application(application, didFinishLaunchingWithOptions: launchOptions) } - public static func registerPlugins(with engine: FlutterEngine) { + public static func registerPlugins(with engine: FlutterEngine, controller: FlutterViewController?) { NativeSyncApiImpl.register(with: engine.registrar(forPlugin: NativeSyncApiImpl.name)!) LocalImageApiSetup.setUp(binaryMessenger: engine.binaryMessenger, api: LocalImageApiImpl()) RemoteImageApiSetup.setUp(binaryMessenger: engine.binaryMessenger, api: RemoteImageApiImpl()) BackgroundWorkerFgHostApiSetup.setUp(binaryMessenger: engine.binaryMessenger, api: BackgroundWorkerApiImpl()) ConnectivityApiSetup.setUp(binaryMessenger: engine.binaryMessenger, api: ConnectivityApiImpl()) + NetworkApiSetup.setUp(binaryMessenger: engine.binaryMessenger, api: NetworkApiImpl(viewController: controller)) } public static func cancelPlugins(with engine: FlutterEngine) { diff --git a/mobile/ios/Runner/Background/BackgroundWorker.swift b/mobile/ios/Runner/Background/BackgroundWorker.swift index 7dc450d76e..85e1a55d3d 100644 --- a/mobile/ios/Runner/Background/BackgroundWorker.swift +++ b/mobile/ios/Runner/Background/BackgroundWorker.swift @@ -95,7 +95,7 @@ class BackgroundWorker: BackgroundWorkerBgHostApi { // Register plugins in the new engine GeneratedPluginRegistrant.register(with: engine) // Register custom plugins - AppDelegate.registerPlugins(with: engine) + AppDelegate.registerPlugins(with: engine, controller: nil) flutterApi = BackgroundWorkerFlutterApi(binaryMessenger: engine.binaryMessenger) BackgroundWorkerBgHostApiSetup.setUp(binaryMessenger: engine.binaryMessenger, api: self) diff --git a/mobile/ios/Runner/Core/NetworkApiImpl.swift b/mobile/ios/Runner/Core/NetworkApiImpl.swift index d61417036a..843e4b2275 100644 --- a/mobile/ios/Runner/Core/NetworkApiImpl.swift +++ b/mobile/ios/Runner/Core/NetworkApiImpl.swift @@ -127,7 +127,7 @@ private class CertImporter: NSObject, UIDocumentPickerDelegate { private func importCert(clientData: Data, password: String) -> OSStatus { let options = [kSecImportExportPassphrase: password] as CFDictionary var items: CFArray? - var status = SecPKCS12Import(clientData as CFData, options, &items) + let status = SecPKCS12Import(clientData as CFData, options, &items) guard status == errSecSuccess, let array = items as? [[String: Any]], @@ -138,11 +138,10 @@ private func importCert(clientData: Data, password: String) -> OSStatus { clearCerts() - var addQuery = [ + let addQuery: [String: Any] = [ kSecClass as String: kSecClassIdentity, kSecValueRef as String: identity, kSecAttrLabel as String: CLIENT_CERT_LABEL, - kSecAttrService as String: CLIENT_CERT_SERVICE, kSecAttrAccessible as String: kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly, ] return SecItemAdd(addQuery as CFDictionary, nil) @@ -151,7 +150,7 @@ private func importCert(clientData: Data, password: String) -> OSStatus { @discardableResult private func clearCerts() -> OSStatus { let deleteQuery: [String: Any] = [ kSecClass as String: kSecClassIdentity, - kSecAttrService as String: CLIENT_CERT_SERVICE, + kSecAttrLabel as String: CLIENT_CERT_LABEL, ] return SecItemDelete(deleteQuery as CFDictionary) } diff --git a/mobile/ios/Runner/Core/URLSessionManager.swift b/mobile/ios/Runner/Core/URLSessionManager.swift index aefb6266a1..73145dbce5 100644 --- a/mobile/ios/Runner/Core/URLSessionManager.swift +++ b/mobile/ios/Runner/Core/URLSessionManager.swift @@ -1,7 +1,6 @@ import Foundation -let CLIENT_CERT_SERVICE = "app.alextran.immich.mtls" -let CLIENT_CERT_LABEL = "client_identity" +let CLIENT_CERT_LABEL = "app.alextran.immich.client_identity" /// Manages a shared URLSession with SSL configuration support. class URLSessionManager: NSObject { diff --git a/mobile/ios/Runner/Images/LocalImagesImpl.swift b/mobile/ios/Runner/Images/LocalImagesImpl.swift index 51278955d9..96e1b60a2f 100644 --- a/mobile/ios/Runner/Images/LocalImagesImpl.swift +++ b/mobile/ios/Runner/Images/LocalImagesImpl.swift @@ -103,7 +103,7 @@ class LocalImageApiImpl: LocalImageApi { ) if request.isCancelled { - return completion(Self.cancelledResult) + return completion(ImageProcessing.cancelledResult) } guard let image = image,