From 0aa6e8ec4295d0b364f841185129ba8fe60b4f53 Mon Sep 17 00:00:00 2001 From: Chris Fisher Date: Thu, 11 Apr 2024 14:05:44 +1200 Subject: [PATCH] Add ios support for passing action into passkey.signIn (#13) --- android/build.gradle | 4 ++-- .../react/AuthsignalPasskeyModule.java | 4 ++-- ios/AuthsignalPasskeyModule.m | 3 ++- ios/AuthsignalPasskeyModule.swift | 11 +++++++++-- package.json | 2 +- react-native-authsignal.podspec | 2 +- src/passkey.ts | 17 ++++++++++++----- 7 files changed, 29 insertions(+), 14 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index 8799407..f4ab567 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -129,8 +129,8 @@ dependencies { implementation "androidx.browser:browser:1.2.0" - implementation("com.authsignal:authsignal-push-android:0.2.8") - implementation("com.authsignal:authsignal-passkey-android:0.1.8") + implementation("com.authsignal:authsignal-push-android:0.2.9") + implementation("com.authsignal:authsignal-passkey-android:0.1.9") } if (isNewArchitectureEnabled()) { diff --git a/android/src/main/java/com/authsignal/react/AuthsignalPasskeyModule.java b/android/src/main/java/com/authsignal/react/AuthsignalPasskeyModule.java index a34cd8a..102e714 100644 --- a/android/src/main/java/com/authsignal/react/AuthsignalPasskeyModule.java +++ b/android/src/main/java/com/authsignal/react/AuthsignalPasskeyModule.java @@ -76,10 +76,10 @@ public void signUp(String token, String userName, String displayName, Promise pr } @ReactMethod - public void signIn(String token, Promise promise) { + public void signIn(String action, String token, Promise promise) { if (authsignalPasskey != null) { authsignalPasskey - .signInAsync(token) + .signInAsync(action, token) .thenAcceptAsync(response -> { if (response.getError() != null) { promise.reject("signIn error", response.getError()); diff --git a/ios/AuthsignalPasskeyModule.m b/ios/AuthsignalPasskeyModule.m index 0544587..d2f5e08 100644 --- a/ios/AuthsignalPasskeyModule.m +++ b/ios/AuthsignalPasskeyModule.m @@ -14,7 +14,8 @@ @interface RCT_EXTERN_MODULE(AuthsignalPasskeyModule, NSObject) resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) -RCT_EXTERN_METHOD(signIn:(NSString*)token +RCT_EXTERN_METHOD(signIn:(NSString*)action + withToken(NSString*)token withAutofill:(BOOL)autofill resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) diff --git a/ios/AuthsignalPasskeyModule.swift b/ios/AuthsignalPasskeyModule.swift index b4c7548..dff1f8d 100644 --- a/ios/AuthsignalPasskeyModule.swift +++ b/ios/AuthsignalPasskeyModule.swift @@ -48,16 +48,23 @@ class AuthsignalPasskeyModule: NSObject { } } - @objc func signIn(_ token: NSString?, withAutofill autofill: Bool, resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) -> Void { + @objc func signIn( + _ action: NSString, + withToken token: NSString, + withAutofill autofill: Bool, + resolver resolve: @escaping RCTPromiseResolveBlock, + rejecter reject: @escaping RCTPromiseRejectBlock + ) -> Void { if (authsignal == nil) { resolve(nil) return } + let actionStr = action as String? let tokenStr = token as String? Task.init { - let response = await authsignal!.signIn(token: tokenStr, autofill: autofill) + let response = await authsignal!.signIn(action: actionStr, token: tokenStr, autofill: autofill) if (response.error != nil) { reject("signIn error", response.error, nil) diff --git a/package.json b/package.json index 45418ee..9bd4e90 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-native-authsignal", - "version": "0.3.5", + "version": "0.3.6", "description": "The official Authsignal React Native library.", "main": "lib/commonjs/index", "module": "lib/module/index", diff --git a/react-native-authsignal.podspec b/react-native-authsignal.podspec index 29ec224..2a7dfd8 100644 --- a/react-native-authsignal.podspec +++ b/react-native-authsignal.podspec @@ -17,7 +17,7 @@ Pod::Spec.new do |s| s.source_files = "ios/**/*.{h,m,mm,swift}" s.dependency "React-Core" - s.dependency 'Authsignal', '0.2.2' + s.dependency 'Authsignal', '0.2.3' # Don't install the dependencies when we run `pod install` in the old architecture. if ENV['RCT_NEW_ARCH_ENABLED'] == '1' then diff --git a/src/passkey.ts b/src/passkey.ts index b561f2c..88f0c91 100644 --- a/src/passkey.ts +++ b/src/passkey.ts @@ -15,6 +15,7 @@ interface PasskeySignUpInput { } interface PasskeySignInInput { + action?: string; token?: string; autofill?: boolean; } @@ -72,9 +73,11 @@ export class AuthsignalPasskey { } } - async signIn({ token, autofill = false }: PasskeySignInInput = {}): Promise< - AuthsignalResponse - > { + async signIn({ + action, + token, + autofill = false, + }: PasskeySignInInput = {}): Promise> { await this.ensureModuleIsInitialized(); try { @@ -87,13 +90,17 @@ export class AuthsignalPasskey { } if (Platform.OS === 'ios') { - const data = await AuthsignalPasskeyModule.signIn(token, autofill); + const data = await AuthsignalPasskeyModule.signIn( + action, + token, + autofill + ); autofillRequestPending = false; return { data }; } else { - const data = await AuthsignalPasskeyModule.signIn(token); + const data = await AuthsignalPasskeyModule.signIn(action, token); autofillRequestPending = false;