From 076e9509c6fad05c87051030552b2b93d1ed7e7d Mon Sep 17 00:00:00 2001 From: Michael Malaspina Date: Mon, 11 Sep 2023 19:42:36 +0200 Subject: [PATCH] Added iOS full screen screenset params --- ios/GigyaSdk.m | 3 ++- ios/GigyaSdk.swift | 6 +++--- ios/GigyaSdkWrapper.swift | 6 +++--- src/index.d.ts | 4 ++-- src/index.js | 17 ++++++++++++----- 5 files changed, 22 insertions(+), 14 deletions(-) diff --git a/ios/GigyaSdk.m b/ios/GigyaSdk.m index b7f9248..0584284 100644 --- a/ios/GigyaSdk.m +++ b/ios/GigyaSdk.m @@ -79,7 +79,8 @@ + (BOOL)requiresMainQueueSetup apiDomain:(NSString *)apiDomain) RCT_EXTERN_METHOD(showScreenSet:(NSString *)name - params:(NSString *)params) + params:(NSString *)params + isModal:(BOOL *)isModal) RCT_EXTERN_METHOD(resolve:(NSString *)method params:(NSString *)params diff --git a/ios/GigyaSdk.swift b/ios/GigyaSdk.swift index dba6fba..81ae7f4 100644 --- a/ios/GigyaSdk.swift +++ b/ios/GigyaSdk.swift @@ -149,11 +149,11 @@ public class GigyaSdk: NSObject { GigyaSdk.gigya?.sendEvent(.removeConnection, params: newParams, promise: promise) } - @objc(showScreenSet:params:) - func showScreenSet(name: String, params: String) { + @objc(showScreenSet:params:isModal:) + func showScreenSet(name: String, params: String, isModal: Bool) { let jsonToParams = GigyaSdk.toJson(data: params) - GigyaSdk.gigya?.showScreenSet(name: name, params: jsonToParams) + GigyaSdk.gigya?.showScreenSet(name: name, params: jsonToParams, isModal: isModal) } @objc(logout:rejecter:) diff --git a/ios/GigyaSdkWrapper.swift b/ios/GigyaSdkWrapper.swift index 9de7309..883c350 100644 --- a/ios/GigyaSdkWrapper.swift +++ b/ios/GigyaSdkWrapper.swift @@ -55,7 +55,7 @@ protocol GigyaSdkWrapperProtocol { func sendEvent(_ name: GigyaMethods, params: [String: Any], promise: PromiseWrapper) - func showScreenSet(name: String, params: [String: Any]) + func showScreenSet(name: String, params: [String: Any], isModal: Bool) func useResolver(method: String, params: [String: Any], promise: PromiseWrapper) } @@ -275,13 +275,13 @@ class GigyaSdkWrapper: GigyaSdkWrapperProtocol { } } - func showScreenSet(name: String, params: [String: Any]) { + func showScreenSet(name: String, params: [String: Any], isModal: Bool) { guard let viewController = RCTPresentedViewController() else { GigyaLogger.log(with: self, message: "Presented viewController not found.") return } - gigya.showScreenSet(with: name, viewController: viewController, params: params) { (result) in + gigya.showScreenSet(with: name, viewController: viewController, params: params, isModal: isModal) { (result) in switch result { case .onBeforeValidation(event: let event): let data: [String: Any] = ["event": "onBeforeValidation", "data": event] diff --git a/src/index.d.ts b/src/index.d.ts index 8b11a64..031879a 100644 --- a/src/index.d.ts +++ b/src/index.d.ts @@ -58,9 +58,9 @@ export namespace Gigya { function removeAccount(provider: GigyaSocialProviders): Promise; - function showScreenSet(name: string, callback: (event: string, data: GigyaDictionary) => void): void; + function showScreenSet(name: string, callback: (event: string, data: GigyaDictionary) => void, isModal?: boolean): void; - function showScreenSetWithParams(name: string, params: Record, callback: (event: string, data: GigyaDictionary) => void): void; + function showScreenSetWithParams(name: string, params: Record, callback: (event: string, data: GigyaDictionary) => void, isModal?: boolean): void; } diff --git a/src/index.js b/src/index.js index 3f5b08b..466086f 100644 --- a/src/index.js +++ b/src/index.js @@ -1,4 +1,4 @@ -import { NativeEventEmitter, NativeModules } from 'react-native' +import { NativeEventEmitter, NativeModules, Platform } from 'react-native' import { BiometricService } from './biometric' import { ResolverFactory } from './resolvers' import { WebAuthnService } from './webauthn' @@ -257,9 +257,15 @@ export class GigyaInterface { * @param {string} name * @param {map} params * @param {*} callback + * @param {boolean} isModal */ - showScreenSetWithParams(name, params, callback) { - GigyaSdk.showScreenSet(name, JSON.stringify(params) ?? "") + showScreenSetWithParams(name, params, callback, isModal = true) { + const isIos = Platform.OS === 'ios'; + if (isIos) { + GigyaSdk.showScreenSet(name, JSON.stringify(params) ?? "", isModal) + } else { + GigyaSdk.showScreenSet(name, JSON.stringify(params) ?? "") + } listener = GigyaSdkEvents.addListener('event', (jsonData) => { console.log("eee:"+jsonData) @@ -277,9 +283,10 @@ export class GigyaInterface { * * @param {*} name * @param {*} callback + * @param {boolean} isModal */ - showScreenSet(name, callback) { - this.showScreenSetWithParams(name, {}, callback) + showScreenSet(name, callback, isModal = true) { + this.showScreenSetWithParams(name, {}, callback, isModal) } }