@@ -34,6 +34,8 @@ - (dispatch_queue_t)methodQueue
3434 */
3535static NSUInteger const kCodeVerifierBytes = 32 ;
3636
37+
38+
3739RCT_EXPORT_MODULE ()
3840
3941RCT_REMAP_METHOD(register ,
@@ -98,6 +100,7 @@ - (dispatch_queue_t)methodQueue
98100 useNonce: (BOOL *) useNonce
99101 usePKCE: (BOOL *) usePKCE
100102 iosCustomBrowser: (NSString *) iosCustomBrowser
103+ prefersEphemeralSession: (BOOL *) prefersEphemeralSession
101104 resolve: (RCTPromiseResolveBlock) resolve
102105 reject: (RCTPromiseRejectBlock) reject)
103106{
@@ -116,6 +119,7 @@ - (dispatch_queue_t)methodQueue
116119 additionalParameters: additionalParameters
117120 skipCodeExchange: skipCodeExchange
118121 iosCustomBrowser: iosCustomBrowser
122+ prefersEphemeralSession: prefersEphemeralSession
119123 resolve: resolve
120124 reject: reject];
121125 } else {
@@ -136,6 +140,7 @@ - (dispatch_queue_t)methodQueue
136140 additionalParameters: additionalParameters
137141 skipCodeExchange: skipCodeExchange
138142 iosCustomBrowser: iosCustomBrowser
143+ prefersEphemeralSession: prefersEphemeralSession
139144 resolve: resolve
140145 reject: reject];
141146 }];
@@ -199,6 +204,7 @@ - (dispatch_queue_t)methodQueue
199204 serviceConfiguration: (NSDictionary *_Nullable) serviceConfiguration
200205 additionalParameters: (NSDictionary *_Nullable) additionalParameters
201206 iosCustomBrowser: (NSString *) iosCustomBrowser
207+ prefersEphemeralSession: (BOOL *) prefersEphemeralSession
202208 resolve:(RCTPromiseResolveBlock) resolve
203209 reject: (RCTPromiseRejectBlock) reject)
204210{
@@ -209,6 +215,7 @@ - (dispatch_queue_t)methodQueue
209215 postLogoutRedirectURL: postLogoutRedirectURL
210216 additionalParameters: additionalParameters
211217 iosCustomBrowser: iosCustomBrowser
218+ prefersEphemeralSession: prefersEphemeralSession
212219 resolve: resolve
213220 reject: reject];
214221
@@ -224,6 +231,7 @@ - (dispatch_queue_t)methodQueue
224231 postLogoutRedirectURL: postLogoutRedirectURL
225232 additionalParameters: additionalParameters
226233 iosCustomBrowser: iosCustomBrowser
234+ prefersEphemeralSession: prefersEphemeralSession
227235 resolve: resolve
228236 reject: reject];
229237 }];
@@ -322,6 +330,7 @@ - (void)authorizeWithConfiguration: (OIDServiceConfiguration *) configuration
322330 additionalParameters : (NSDictionary *_Nullable) additionalParameters
323331 skipCodeExchange : (BOOL ) skipCodeExchange
324332 iosCustomBrowser : (NSString *) iosCustomBrowser
333+ prefersEphemeralSession : (BOOL *) prefersEphemeralSession
325334 resolve : (RCTPromiseResolveBlock) resolve
326335 reject : (RCTPromiseRejectBlock) reject
327336{
@@ -383,9 +392,16 @@ - (void)authorizeWithConfiguration: (OIDServiceConfiguration *) configuration
383392 externalUserAgent: externalUserAgent
384393 callback: callback];
385394 } else {
386- _currentSession = [OIDAuthorizationService presentAuthorizationRequest: request
395+ if (@available (iOS 13 , *)) {
396+ _currentSession = [OIDAuthorizationService presentAuthorizationRequest: request
397+ presentingViewController: presentingViewController
398+ prefersEphemeralSession: prefersEphemeralSession
399+ callback: callback];
400+ } else {
401+ _currentSession = [OIDAuthorizationService presentAuthorizationRequest: request
387402 presentingViewController: presentingViewController
388403 callback: callback];
404+ }
389405 }
390406 } else {
391407
@@ -408,10 +424,16 @@ - (void)authorizeWithConfiguration: (OIDServiceConfiguration *) configuration
408424 [self getErrorMessage: error], error);
409425 }
410426 };
411-
412- _currentSession = [OIDAuthState authStateByPresentingAuthorizationRequest: request
413- presentingViewController: presentingViewController
414- callback: callback];
427+ if (@available (iOS 13 , *)) {
428+ _currentSession = [OIDAuthState authStateByPresentingAuthorizationRequest: request
429+ presentingViewController: presentingViewController
430+ prefersEphemeralSession: prefersEphemeralSession
431+ callback: callback];
432+ } else {
433+ _currentSession = [OIDAuthState authStateByPresentingAuthorizationRequest: request
434+ presentingViewController: presentingViewController
435+ callback: callback];
436+ }
415437 }
416438 }
417439}
@@ -458,6 +480,7 @@ - (void)endSessionWithConfiguration: (OIDServiceConfiguration *) configuration
458480 postLogoutRedirectURL : (NSString *) postLogoutRedirectURL
459481 additionalParameters : (NSDictionary *_Nullable) additionalParameters
460482 iosCustomBrowser : (NSString *) iosCustomBrowser
483+ prefersEphemeralSession : (BOOL *) prefersEphemeralSession
461484 resolve : (RCTPromiseResolveBlock) resolve
462485 reject : (RCTPromiseRejectBlock) reject {
463486
@@ -482,7 +505,8 @@ - (void)endSessionWithConfiguration: (OIDServiceConfiguration *) configuration
482505
483506 UIViewController *presentingViewController = appDelegate.window .rootViewController .view .window ? appDelegate.window .rootViewController : appDelegate.window .rootViewController .presentedViewController ;
484507
485- id <OIDExternalUserAgent> externalUserAgent = iosCustomBrowser != nil ? [self getCustomBrowser: iosCustomBrowser] : [self getExternalUserAgentWithPresentingViewController: presentingViewController];
508+ id <OIDExternalUserAgent> externalUserAgent = iosCustomBrowser != nil ? [self getCustomBrowser: iosCustomBrowser] : [self getExternalUserAgentWithPresentingViewController: presentingViewController
509+ prefersEphemeralSession: prefersEphemeralSession];
486510
487511 _currentSession = [OIDAuthorizationService presentEndSessionRequest: endSessionRequest
488512 externalUserAgent: externalUserAgent
@@ -695,12 +719,20 @@ - (NSString*)getErrorMessage: (NSError*) error {
695719}
696720
697721- (id <OIDExternalUserAgent>)getExternalUserAgentWithPresentingViewController : (UIViewController *)presentingViewController
722+ prefersEphemeralSession : (BOOL *) prefersEphemeralSession
698723{
699724 id <OIDExternalUserAgent> externalUserAgent;
700725 #if TARGET_OS_MACCATALYST
701726 externalUserAgent = [[OIDExternalUserAgentCatalyst alloc ] initWithPresentingViewController: presentingViewController];
702727 #elif TARGET_OS_IOS
703- externalUserAgent = [[OIDExternalUserAgentIOS alloc ] initWithPresentingViewController: presentingViewController];
728+ if (@available (iOS 13 , *)) {
729+ externalUserAgent = [[OIDExternalUserAgentIOS alloc ] initWithPresentingViewController:
730+ presentingViewController
731+ prefersEphemeralSession: prefersEphemeralSession];
732+ } else {
733+ externalUserAgent = [[OIDExternalUserAgentIOS alloc ] initWithPresentingViewController:
734+ presentingViewController];
735+ }
704736 #elif TARGET_OS_OSX
705737 externalUserAgent = [[OIDExternalUserAgentMac alloc ] init ];
706738 #endif
0 commit comments