diff --git a/example/ios/Podfile b/example/ios/Podfile index 6e6e4dad..bf82efb7 100644 --- a/example/ios/Podfile +++ b/example/ios/Podfile @@ -1,6 +1,6 @@ source 'https://github.com/artsy/Specs.git' source 'https://github.com/CocoaPods/Specs.git' -platform :ios, '13.0' +platform :ios, '15.0' plugin 'cocoapods-art', :sources => [ 'onegini' diff --git a/example/ios/Runner/Info.plist b/example/ios/Runner/Info.plist index d2b45d41..d865a04a 100644 --- a/example/ios/Runner/Info.plist +++ b/example/ios/Runner/Info.plist @@ -2,6 +2,8 @@ + CADisableMinimumFrameDurationOnPhone + CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleExecutable @@ -41,10 +43,12 @@ NSCameraUsageDescription Need to access your camera to scan QR code - NSLocalNetworkUsageDescription - Set to your desired customized permission dialog text. NSFaceIDUsageDescription Please provide access to your Face ID + NSLocalNetworkUsageDescription + Set to your desired customized permission dialog text. + UIApplicationSupportsIndirectInputEvents + UILaunchStoryboardName LaunchScreen UIMainStoryboardFile @@ -64,9 +68,5 @@ io.flutter.embedded_views_preview - CADisableMinimumFrameDurationOnPhone - - UIApplicationSupportsIndirectInputEvents - diff --git a/example/lib/screens/user_screen.dart b/example/lib/screens/user_screen.dart index 91232dd9..e6765ee0 100644 --- a/example/lib/screens/user_screen.dart +++ b/example/lib/screens/user_screen.dart @@ -435,8 +435,7 @@ class Info extends StatefulWidget { class _InfoState extends State { Future _getApplicationDetails() async { - await Onegini.instance.userClient - .authenticateDevice(["read", "write", "application-details"]); + await Onegini.instance.userClient.authenticateDevice(["application-details"]); final response = await Onegini.instance.resourcesMethods.requestResource( ResourceRequestType.anonymous, RequestDetails( diff --git a/ios/Classes/NativeBridge/Handlers/BrowserHandler.swift b/ios/Classes/NativeBridge/Handlers/BrowserHandler.swift index 624d2152..043513ec 100644 --- a/ios/Classes/NativeBridge/Handlers/BrowserHandler.swift +++ b/ios/Classes/NativeBridge/Handlers/BrowserHandler.swift @@ -44,7 +44,7 @@ class BrowserViewController: NSObject, BrowserHandlerProtocol { } private func openInternalBrowser(url: URL) { - let scheme = URL(string: ONGClient.sharedInstance().configModel.redirectURL)!.scheme + let scheme = URL(string: SharedClient.instance.configModel.redirectURL)!.scheme webAuthSession = ASWebAuthenticationSession(url: url, callbackURLScheme: scheme, completionHandler: { callbackURL, error in Logger.log("webAuthSession completionHandler", sender: self) guard error == nil, let successURL = callbackURL else { diff --git a/ios/Classes/NativeBridge/Handlers/ResourcesHandler.swift b/ios/Classes/NativeBridge/Handlers/ResourcesHandler.swift index d45cfcd5..5fea503e 100644 --- a/ios/Classes/NativeBridge/Handlers/ResourcesHandler.swift +++ b/ios/Classes/NativeBridge/Handlers/ResourcesHandler.swift @@ -39,7 +39,7 @@ class ResourcesHandler: FetchResourcesHandlerProtocol { func requestResource(_ requestType: ResourceRequestType, _ details: OWRequestDetails, completion: @escaping (Result) -> Void) { Logger.log("requestResource", sender: self) // Additional check for valid url - let resourceUrl = ONGClient.sharedInstance().configModel.resourceBaseURL ?? "" + let resourceUrl = SharedClient.instance.configModel.resourceBaseURL if isValidUrl(details.path) == false && isValidUrl(resourceUrl + details.path) == false { completion(.failure(FlutterError(SdkError(.invalidUrl)))) return diff --git a/ios/Classes/NativeBridge/ModuleExtensions/OneginiModuleSwift+Auth.swift b/ios/Classes/NativeBridge/ModuleExtensions/OneginiModuleSwift+Auth.swift index 512fff47..84387b47 100644 --- a/ios/Classes/NativeBridge/ModuleExtensions/OneginiModuleSwift+Auth.swift +++ b/ios/Classes/NativeBridge/ModuleExtensions/OneginiModuleSwift+Auth.swift @@ -5,8 +5,8 @@ import Flutter extension OneginiModuleSwift { func getIdentityProviders() -> Result<[OWIdentityProvider], FlutterError> { - let providers = ONGClient.sharedInstance().userClient.identityProviders() - return .success(providers.compactMap { OWIdentityProvider($0) }) + let providers = SharedClient.instance.userClient.identityProviders + return .success(providers.compactMap { OWIdentityProvider(id: $0.identifier, name: $0.name) }) } func logOut(callback: @escaping (Result) -> Void) { @@ -86,14 +86,14 @@ extension OneginiModuleSwift { } func getAuthenticatedUserProfile() -> Result { - guard let profile = ONGUserClient.sharedInstance().authenticatedUserProfile() else { + guard let profile = SharedUserClient.instance.authenticatedUserProfile else { return .failure(FlutterError(.notAuthenticatedUser)) } return .success(OWUserProfile(profile)) } func getAccessToken() -> Result { - guard let accessToken = ONGUserClient.sharedInstance().accessToken else { + guard let accessToken = SharedUserClient.instance.accessToken else { return .failure(FlutterError(.notAuthenticatedUser)) } return .success(accessToken) diff --git a/ios/Classes/NativeBridge/ModuleExtensions/OneginiModuleSwift+Pin.swift b/ios/Classes/NativeBridge/ModuleExtensions/OneginiModuleSwift+Pin.swift index 2829a8dd..19d04c0b 100644 --- a/ios/Classes/NativeBridge/ModuleExtensions/OneginiModuleSwift+Pin.swift +++ b/ios/Classes/NativeBridge/ModuleExtensions/OneginiModuleSwift+Pin.swift @@ -26,7 +26,8 @@ extension OneginiModuleSwift { func validatePinWithPolicy(_ pin: String, completion: @escaping (Result) -> Void) { // FIXME: Move this out of this file - ONGUserClient.sharedInstance().validatePin(withPolicy: pin) { (_, error) in + let userClient = SharedUserClient.instance + userClient.validatePolicyCompliance(for: pin) { error in guard let error = error else { completion(.success) return diff --git a/ios/Classes/NativeBridge/ModuleExtensions/OneginiModuleSwift+Register.swift b/ios/Classes/NativeBridge/ModuleExtensions/OneginiModuleSwift+Register.swift index ddadca8d..b6af448e 100644 --- a/ios/Classes/NativeBridge/ModuleExtensions/OneginiModuleSwift+Register.swift +++ b/ios/Classes/NativeBridge/ModuleExtensions/OneginiModuleSwift+Register.swift @@ -21,7 +21,7 @@ extension OneginiModuleSwift { } public func handleDeepLinkCallbackUrl(_ url: URL) -> Bool { - guard let schemeLibrary = URL.init(string: ONGClient.sharedInstance().configModel.redirectURL)?.scheme else { + guard let schemeLibrary = URL.init(string: SharedClient.instance.configModel.redirectURL)?.scheme else { // FIXME: We should propagate an error here to the caller, not through events. return false } @@ -50,6 +50,6 @@ extension OneginiModuleSwift { } func getRedirectUrl() -> Result { - return .success(ONGClient.sharedInstance().configModel.redirectURL) + return .success(SharedClient.instance.configModel.redirectURL) } } diff --git a/ios/Classes/NativeBridge/OneginiModuleSwift.swift b/ios/Classes/NativeBridge/OneginiModuleSwift.swift index c1afcc0b..8e49f0ae 100644 --- a/ios/Classes/NativeBridge/OneginiModuleSwift.swift +++ b/ios/Classes/NativeBridge/OneginiModuleSwift.swift @@ -18,26 +18,23 @@ public class OneginiModuleSwift: NSObject { } func startOneginiModule(httpConnectionTimeout: Int64?, additionalResourceUrls: [String]?, callback: @escaping (Result) -> Void) { - ONGClientBuilder().setHttpRequestTimeout(TimeInterval(Double(httpConnectionTimeout ?? 5))) - ONGClientBuilder().setAdditionalResourceUrls(additionalResourceUrls ?? []) - ONGClientBuilder().build() - ONGClient.sharedInstance().start { result, error in - if let error = error { - let mappedError = ErrorMapper().mapError(error) - callback(.failure(mappedError.flutterError())) - return + let builder = ClientBuilder() + builder.setHttpRequestTimeout(TimeInterval(Double(httpConnectionTimeout ?? 5))) + builder.setAdditionalResourceUrls(additionalResourceUrls ?? []) + builder.buildAndWaitForProtectedData { client in + client.start { error in + if let error { + let mappedError = ErrorMapper().mapError(error) + callback(.failure(mappedError.flutterError())) + return + } + callback(.success) } - - if !result { - callback(.failure(SdkError(.genericError).flutterError())) - return - } - callback(.success) } } func getUserProfiles() -> Result<[OWUserProfile], FlutterError> { - let profiles = ONGUserClient.sharedInstance().userProfiles() + let profiles = SharedUserClient.instance.userProfiles return .success(profiles.compactMap { OWUserProfile($0) }) } }