react-native-authsignal 1.4.0 → 1.5.0-alpha2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/build.gradle +1 -1
- package/android/src/main/java/com/authsignal/react/AuthsignalPackage.kt +2 -1
- package/android/src/main/java/com/authsignal/react/AuthsignalWhatsappModule.kt +98 -0
- package/ios/Authsignal.xcodeproj/project.pbxproj +4 -0
- package/ios/AuthsignalWhatsappModule.m +18 -0
- package/ios/AuthsignalWhatsappModule.swift +76 -0
- package/lib/commonjs/index.js +7 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/whatsapp.js +68 -0
- package/lib/commonjs/whatsapp.js.map +1 -0
- package/lib/module/index.js +7 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/whatsapp.js +61 -0
- package/lib/module/whatsapp.js.map +1 -0
- package/lib/typescript/index.d.ts +2 -0
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/whatsapp.d.ts +18 -0
- package/lib/typescript/whatsapp.d.ts.map +1 -0
- package/package.json +1 -1
- package/react-native-authsignal.podspec +1 -1
- package/src/index.tsx +7 -0
- package/src/whatsapp.ts +78 -0
package/android/build.gradle
CHANGED
|
@@ -14,7 +14,8 @@ class AuthsignalPackage : ReactPackage {
|
|
|
14
14
|
AuthsignalPushModule(reactContext),
|
|
15
15
|
AuthsignalDeviceModule(reactContext),
|
|
16
16
|
AuthsignalSMSModule(reactContext),
|
|
17
|
-
AuthsignalTOTPModule(reactContext)
|
|
17
|
+
AuthsignalTOTPModule(reactContext),
|
|
18
|
+
AuthsignalWhatsappModule(reactContext)
|
|
18
19
|
)
|
|
19
20
|
}
|
|
20
21
|
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
package com.authsignal.react
|
|
2
|
+
|
|
3
|
+
import android.util.Log
|
|
4
|
+
import com.authsignal.models.AuthsignalResponse
|
|
5
|
+
import com.authsignal.models.ChallengeResponse
|
|
6
|
+
import com.authsignal.models.EnrollResponse
|
|
7
|
+
import com.authsignal.models.VerifyResponse
|
|
8
|
+
import com.authsignal.whatsapp.AuthsignalWhatsapp
|
|
9
|
+
import com.facebook.react.bridge.Arguments
|
|
10
|
+
import com.facebook.react.bridge.Promise
|
|
11
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
12
|
+
import com.facebook.react.bridge.ReactContextBaseJavaModule
|
|
13
|
+
import com.facebook.react.bridge.ReactMethod
|
|
14
|
+
import kotlinx.coroutines.CoroutineScope
|
|
15
|
+
import kotlinx.coroutines.Dispatchers
|
|
16
|
+
import kotlinx.coroutines.SupervisorJob
|
|
17
|
+
import kotlinx.coroutines.launch
|
|
18
|
+
import java.util.function.Consumer
|
|
19
|
+
|
|
20
|
+
class AuthsignalWhatsappModule(private val reactContext: ReactApplicationContext) :
|
|
21
|
+
ReactContextBaseJavaModule(
|
|
22
|
+
reactContext
|
|
23
|
+
) {
|
|
24
|
+
private val coroutineScope = CoroutineScope(SupervisorJob() + Dispatchers.Main.immediate)
|
|
25
|
+
private var authsignal: AuthsignalWhatsapp? = null
|
|
26
|
+
private val defaultError = "unexpected_error"
|
|
27
|
+
|
|
28
|
+
override fun getConstants(): Map<String, Any>? {
|
|
29
|
+
val constants: MutableMap<String, Any> = HashMap()
|
|
30
|
+
constants["bundleIdentifier"] = reactContext.applicationInfo.packageName
|
|
31
|
+
return constants
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
override fun getName(): String {
|
|
35
|
+
return "AuthsignalWhatsappModule"
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
@ReactMethod
|
|
39
|
+
fun initialize(tenantID: String, baseURL: String, promise: Promise) {
|
|
40
|
+
val currentActivity = reactContext.currentActivity
|
|
41
|
+
|
|
42
|
+
if (currentActivity != null) {
|
|
43
|
+
authsignal = AuthsignalWhatsapp(tenantID, baseURL)
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
promise.resolve(null)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
@ReactMethod
|
|
50
|
+
fun challenge(promise: Promise) {
|
|
51
|
+
launch(promise) {
|
|
52
|
+
val response = it.challenge()
|
|
53
|
+
|
|
54
|
+
if (response.error != null) {
|
|
55
|
+
val errorCode = response.errorCode ?: defaultError
|
|
56
|
+
|
|
57
|
+
promise.reject(errorCode, response.error)
|
|
58
|
+
} else {
|
|
59
|
+
val challengeResponse = response.data
|
|
60
|
+
val map = Arguments.createMap()
|
|
61
|
+
map.putString("challengeId", challengeResponse!!.challengeId)
|
|
62
|
+
promise.resolve(map)
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
@ReactMethod
|
|
68
|
+
fun verify(code: String, promise: Promise) {
|
|
69
|
+
launch(promise) {
|
|
70
|
+
val response = it.verify(code)
|
|
71
|
+
|
|
72
|
+
if (response.error != null) {
|
|
73
|
+
val errorCode = response.errorCode ?: defaultError
|
|
74
|
+
|
|
75
|
+
promise.reject(errorCode, response.error)
|
|
76
|
+
} else {
|
|
77
|
+
val verifyResponse = response.data
|
|
78
|
+
val map = Arguments.createMap()
|
|
79
|
+
map.putBoolean("isVerified", verifyResponse!!.isVerified)
|
|
80
|
+
map.putString("token", verifyResponse.token)
|
|
81
|
+
map.putString("failureReason", verifyResponse.failureReason)
|
|
82
|
+
promise.resolve(map)
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
private fun launch(promise: Promise, fn: suspend (client: AuthsignalWhatsapp) -> Unit) {
|
|
88
|
+
coroutineScope.launch {
|
|
89
|
+
authsignal?.let {
|
|
90
|
+
fn(it)
|
|
91
|
+
} ?: run {
|
|
92
|
+
Log.w("init_error", "AuthsignalWhatsappModule is not initialized.")
|
|
93
|
+
|
|
94
|
+
promise.resolve(null)
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
@@ -35,6 +35,8 @@
|
|
|
35
35
|
D8EC5CD72A4D1EE90085B442 /* Authsignal-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Authsignal-Bridging-Header.h"; sourceTree = "<group>"; };
|
|
36
36
|
DDDCE5EE2DDD8E5B0095B3F2 /* AuthsignalDeviceModule.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AuthsignalDeviceModule.m; sourceTree = "<group>"; };
|
|
37
37
|
DDDCE5EF2DDD8E5B0095B3F2 /* AuthsignalDeviceModule.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthsignalDeviceModule.swift; sourceTree = "<group>"; };
|
|
38
|
+
DDDD1001AAAA1111BBBB2222 /* AuthsignalWhatsappModule.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AuthsignalWhatsappModule.m; sourceTree = "<group>"; };
|
|
39
|
+
DDDD1002AAAA1111BBBB2222 /* AuthsignalWhatsappModule.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthsignalWhatsappModule.swift; sourceTree = "<group>"; };
|
|
38
40
|
/* End PBXFileReference section */
|
|
39
41
|
|
|
40
42
|
/* Begin PBXFrameworksBuildPhase section */
|
|
@@ -74,6 +76,8 @@
|
|
|
74
76
|
D8EC5CD42A4D1EE00085B442 /* AuthsignalPushModule.swift */,
|
|
75
77
|
DDDCE5EE2DDD8E5B0095B3F2 /* AuthsignalDeviceModule.m */,
|
|
76
78
|
DDDCE5EF2DDD8E5B0095B3F2 /* AuthsignalDeviceModule.swift */,
|
|
79
|
+
DDDD1001AAAA1111BBBB2222 /* AuthsignalWhatsappModule.m */,
|
|
80
|
+
DDDD1002AAAA1111BBBB2222 /* AuthsignalWhatsappModule.swift */,
|
|
77
81
|
134814211AA4EA7D00B7C361 /* Products */,
|
|
78
82
|
);
|
|
79
83
|
sourceTree = "<group>";
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#import <React/RCTBridgeModule.h>
|
|
2
|
+
#import <Foundation/Foundation.h>
|
|
3
|
+
|
|
4
|
+
@interface RCT_EXTERN_MODULE(AuthsignalWhatsappModule, NSObject)
|
|
5
|
+
|
|
6
|
+
RCT_EXTERN_METHOD(initialize:(NSString)tenantID
|
|
7
|
+
withBaseURL:(NSString)baseURL
|
|
8
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
9
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
10
|
+
|
|
11
|
+
RCT_EXTERN_METHOD(challenge:(RCTPromiseResolveBlock)resolve
|
|
12
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
13
|
+
|
|
14
|
+
RCT_EXTERN_METHOD(verify:(NSString)code
|
|
15
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
16
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
17
|
+
|
|
18
|
+
@end
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import Security
|
|
2
|
+
import Foundation
|
|
3
|
+
import Authsignal
|
|
4
|
+
|
|
5
|
+
@objc(AuthsignalWhatsappModule)
|
|
6
|
+
class AuthsignalWhatsappModule: NSObject {
|
|
7
|
+
var authsignal: AuthsignalWhatsApp?
|
|
8
|
+
|
|
9
|
+
@objc static func requiresMainQueueSetup() -> Bool {
|
|
10
|
+
return true
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
@objc func initialize(
|
|
14
|
+
_ tenantID: NSString,
|
|
15
|
+
withBaseURL baseURL: NSString,
|
|
16
|
+
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
17
|
+
rejecter reject: @escaping RCTPromiseRejectBlock
|
|
18
|
+
) -> Void {
|
|
19
|
+
self.authsignal = AuthsignalWhatsApp(tenantID: tenantID as String, baseURL: baseURL as String)
|
|
20
|
+
|
|
21
|
+
resolve(nil)
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
@objc func challenge(
|
|
25
|
+
_ resolve: @escaping RCTPromiseResolveBlock,
|
|
26
|
+
rejecter reject: @escaping RCTPromiseRejectBlock
|
|
27
|
+
) -> Void {
|
|
28
|
+
if (authsignal == nil) {
|
|
29
|
+
resolve(nil)
|
|
30
|
+
return
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
Task.init {
|
|
34
|
+
let response = await authsignal!.challenge()
|
|
35
|
+
|
|
36
|
+
if (response.error != nil) {
|
|
37
|
+
reject(response.errorCode ?? "unexpected_error", response.error, nil)
|
|
38
|
+
} else {
|
|
39
|
+
let challengeResponse: [String: String?] = [
|
|
40
|
+
"challengeId": response.data!.challengeId,
|
|
41
|
+
]
|
|
42
|
+
|
|
43
|
+
resolve(challengeResponse)
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
@objc func verify(
|
|
49
|
+
_ code: NSString,
|
|
50
|
+
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
51
|
+
rejecter reject: @escaping RCTPromiseRejectBlock
|
|
52
|
+
) -> Void {
|
|
53
|
+
if (authsignal == nil) {
|
|
54
|
+
resolve(nil)
|
|
55
|
+
return
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
let codeStr = code as String
|
|
59
|
+
|
|
60
|
+
Task.init {
|
|
61
|
+
let response = await authsignal!.verify(code: codeStr)
|
|
62
|
+
|
|
63
|
+
if (response.error != nil) {
|
|
64
|
+
reject(response.errorCode ?? "unexpected_error", response.error, nil)
|
|
65
|
+
} else {
|
|
66
|
+
let verifyResponse: [String: Any?] = [
|
|
67
|
+
"isVerified": response.data!.isVerified,
|
|
68
|
+
"token": response.data!.token,
|
|
69
|
+
"failureReason": response.data!.failureReason,
|
|
70
|
+
]
|
|
71
|
+
|
|
72
|
+
resolve(verifyResponse)
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
package/lib/commonjs/index.js
CHANGED
|
@@ -24,6 +24,7 @@ var _push = require("./push");
|
|
|
24
24
|
var _sms = require("./sms");
|
|
25
25
|
var _totp = require("./totp");
|
|
26
26
|
var _device = require("./device");
|
|
27
|
+
var _whatsapp = require("./whatsapp");
|
|
27
28
|
var _types = require("./types");
|
|
28
29
|
Object.keys(_types).forEach(function (key) {
|
|
29
30
|
if (key === "default" || key === "__esModule") return;
|
|
@@ -59,6 +60,7 @@ class Authsignal {
|
|
|
59
60
|
_defineProperty(this, "device", void 0);
|
|
60
61
|
_defineProperty(this, "sms", void 0);
|
|
61
62
|
_defineProperty(this, "totp", void 0);
|
|
63
|
+
_defineProperty(this, "whatsapp", void 0);
|
|
62
64
|
this.tenantID = tenantID;
|
|
63
65
|
this.baseURL = baseURL;
|
|
64
66
|
this.enableLogging = enableLogging;
|
|
@@ -93,6 +95,11 @@ class Authsignal {
|
|
|
93
95
|
baseURL,
|
|
94
96
|
enableLogging
|
|
95
97
|
});
|
|
98
|
+
this.whatsapp = new _whatsapp.AuthsignalWhatsapp({
|
|
99
|
+
tenantID,
|
|
100
|
+
baseURL,
|
|
101
|
+
enableLogging
|
|
102
|
+
});
|
|
96
103
|
}
|
|
97
104
|
async setToken(token) {
|
|
98
105
|
await AuthsignalModule.setToken(token);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AuthsignalModule","NativeModules","Proxy","get","Error","LINKING_ERROR","Authsignal","constructor","tenantID","baseURL","deviceID","enableLogging","__DEV__","passkey","AuthsignalPasskey","email","AuthsignalEmail","push","AuthsignalPush","device","AuthsignalDevice","sms","AuthsignalSms","totp","AuthsignalTotp","setToken","token","launch","url","Platform","OS","Promise","resolve","reject","callback","error"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AAAwB;AAGxB,MAAMA,gBAAgB,GAAGC,0BAAa,CAACD,gBAAgB,GACnDC,0BAAa,CAACD,gBAAgB,GAC9B,IAAIE,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAG,GAAG;IACJ,MAAM,IAAIC,KAAK,CAACC,oBAAa,CAAC;EAChC;AACF,CAAC,CACF;AASE,MAAMC,UAAU,CAAC;
|
|
1
|
+
{"version":3,"names":["AuthsignalModule","NativeModules","Proxy","get","Error","LINKING_ERROR","Authsignal","constructor","tenantID","baseURL","deviceID","enableLogging","__DEV__","passkey","AuthsignalPasskey","email","AuthsignalEmail","push","AuthsignalPush","device","AuthsignalDevice","sms","AuthsignalSms","totp","AuthsignalTotp","whatsapp","AuthsignalWhatsapp","setToken","token","launch","url","Platform","OS","Promise","resolve","reject","callback","error"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AAAwB;AAGxB,MAAMA,gBAAgB,GAAGC,0BAAa,CAACD,gBAAgB,GACnDC,0BAAa,CAACD,gBAAgB,GAC9B,IAAIE,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAG,GAAG;IACJ,MAAM,IAAIC,KAAK,CAACC,oBAAa,CAAC;EAChC;AACF,CAAC,CACF;AASE,MAAMC,UAAU,CAAC;EAatBC,WAAW,OAKS;IAAA,IALR;MACVC,QAAQ;MACRC,OAAO,GAAG,+BAA+B;MACzCC,QAAQ;MACRC,aAAa,GAAGC;IACD,CAAC;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAChB,IAAI,CAACJ,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACC,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACE,aAAa,GAAGA,aAAa;IAElC,IAAI,CAACE,OAAO,GAAG,IAAIC,0BAAiB,CAAC;MACnCN,QAAQ;MACRC,OAAO;MACPC,QAAQ;MACRC;IACF,CAAC,CAAC;IAEF,IAAI,CAACI,KAAK,GAAG,IAAIC,sBAAe,CAAC;MAAER,QAAQ;MAAEC,OAAO;MAAEE;IAAc,CAAC,CAAC;IACtE,IAAI,CAACM,IAAI,GAAG,IAAIC,oBAAc,CAAC;MAAEV,QAAQ;MAAEC,OAAO;MAAEE;IAAc,CAAC,CAAC;IACpE,IAAI,CAACQ,MAAM,GAAG,IAAIC,wBAAgB,CAAC;MAAEZ,QAAQ;MAAEC,OAAO;MAAEE;IAAc,CAAC,CAAC;IACxE,IAAI,CAACU,GAAG,GAAG,IAAIC,kBAAa,CAAC;MAAEd,QAAQ;MAAEC,OAAO;MAAEE;IAAc,CAAC,CAAC;IAClE,IAAI,CAACY,IAAI,GAAG,IAAIC,oBAAc,CAAC;MAAEhB,QAAQ;MAAEC,OAAO;MAAEE;IAAc,CAAC,CAAC;IACpE,IAAI,CAACc,QAAQ,GAAG,IAAIC,4BAAkB,CAAC;MACrClB,QAAQ;MACRC,OAAO;MACPE;IACF,CAAC,CAAC;EACJ;EAEA,MAAMgB,QAAQ,CAACC,KAAa,EAAiB;IAC3C,MAAM5B,gBAAgB,CAAC2B,QAAQ,CAACC,KAAK,CAAC;EACxC;EAEA,MAAMC,MAAM,CAACC,GAAW,EAA0B;IAChD,OAAO,MAAMD,MAAM,CAACC,GAAG,CAAC;EAC1B;AACF;AAAC;AAEM,SAASD,MAAM,CAACC,GAAW,EAA0B;EAC1D,IAAIC,qBAAQ,CAACC,EAAE,KAAK,KAAK,EAAE;IACzB,OAAOhC,gBAAgB,CAAC6B,MAAM,CAACC,GAAG,CAAC;EACrC,CAAC,MAAM;IACL,OAAO,IAAIG,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtC,MAAMC,QAAQ,GAAG,CAACC,KAAU,EAAET,KAAa,KAAK;QAC9C,IAAIA,KAAK,EAAE;UACTM,OAAO,CAACN,KAAK,CAAC;QAChB,CAAC,MAAM,IAAIS,KAAK,EAAE;UAChB,IAAIA,KAAK,CAACA,KAAK,KAAK,gBAAgB,EAAE;YACpCH,OAAO,CAAC,IAAI,CAAC;UACf,CAAC,MAAM;YACLC,MAAM,CAACE,KAAK,CAAC;UACf;QACF,CAAC,MAAM;UACLF,MAAM,CAAC,kBAAkB,CAAC;QAC5B;MACF,CAAC;MAEDnC,gBAAgB,CAAC6B,MAAM,CAACC,GAAG,EAAEM,QAAQ,CAAC;IACxC,CAAC,CAAC;EACJ;AACF"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.AuthsignalWhatsapp = void 0;
|
|
7
|
+
var _reactNative = require("react-native");
|
|
8
|
+
var _error = require("./error");
|
|
9
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
10
|
+
let initialized = false;
|
|
11
|
+
const AuthsignalWhatsappModule = _reactNative.NativeModules.AuthsignalWhatsappModule ? _reactNative.NativeModules.AuthsignalWhatsappModule : new Proxy({}, {
|
|
12
|
+
get() {
|
|
13
|
+
throw new Error(_error.LINKING_ERROR);
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
class AuthsignalWhatsapp {
|
|
17
|
+
constructor(_ref) {
|
|
18
|
+
let {
|
|
19
|
+
tenantID,
|
|
20
|
+
baseURL,
|
|
21
|
+
enableLogging
|
|
22
|
+
} = _ref;
|
|
23
|
+
_defineProperty(this, "tenantID", void 0);
|
|
24
|
+
_defineProperty(this, "baseURL", void 0);
|
|
25
|
+
_defineProperty(this, "enableLogging", void 0);
|
|
26
|
+
this.tenantID = tenantID;
|
|
27
|
+
this.baseURL = baseURL;
|
|
28
|
+
this.enableLogging = enableLogging;
|
|
29
|
+
}
|
|
30
|
+
async challenge() {
|
|
31
|
+
await this.ensureModuleIsInitialized();
|
|
32
|
+
try {
|
|
33
|
+
await AuthsignalWhatsappModule.challenge();
|
|
34
|
+
return {};
|
|
35
|
+
} catch (ex) {
|
|
36
|
+
return this.handleError(ex);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
async verify(_ref2) {
|
|
40
|
+
let {
|
|
41
|
+
code
|
|
42
|
+
} = _ref2;
|
|
43
|
+
await this.ensureModuleIsInitialized();
|
|
44
|
+
try {
|
|
45
|
+
const data = await AuthsignalWhatsappModule.verify(code);
|
|
46
|
+
return {
|
|
47
|
+
data
|
|
48
|
+
};
|
|
49
|
+
} catch (ex) {
|
|
50
|
+
return this.handleError(ex);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
async ensureModuleIsInitialized() {
|
|
54
|
+
if (initialized) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
await AuthsignalWhatsappModule.initialize(this.tenantID, this.baseURL);
|
|
58
|
+
initialized = true;
|
|
59
|
+
}
|
|
60
|
+
handleError(ex) {
|
|
61
|
+
if (this.enableLogging) {
|
|
62
|
+
console.log(ex);
|
|
63
|
+
}
|
|
64
|
+
return (0, _error.handleErrorCodes)(ex);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
exports.AuthsignalWhatsapp = AuthsignalWhatsapp;
|
|
68
|
+
//# sourceMappingURL=whatsapp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["initialized","AuthsignalWhatsappModule","NativeModules","Proxy","get","Error","LINKING_ERROR","AuthsignalWhatsapp","constructor","tenantID","baseURL","enableLogging","challenge","ensureModuleIsInitialized","ex","handleError","verify","code","data","initialize","console","log","handleErrorCodes"],"sourceRoot":"../../src","sources":["whatsapp.ts"],"mappings":";;;;;;AAAA;AACA;AAA0D;AAS1D,IAAIA,WAAW,GAAG,KAAK;AAEvB,MAAMC,wBAAwB,GAAGC,0BAAa,CAACD,wBAAwB,GACnEC,0BAAa,CAACD,wBAAwB,GACtC,IAAIE,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAG,GAAG;IACJ,MAAM,IAAIC,KAAK,CAACC,oBAAa,CAAC;EAChC;AACF,CAAC,CACF;AAEE,MAAMC,kBAAkB,CAAC;EAK9BC,WAAW,OAAwD;IAAA,IAAvD;MAAEC,QAAQ;MAAEC,OAAO;MAAEC;IAA+B,CAAC;IAAA;IAAA;IAAA;IAC/D,IAAI,CAACF,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACC,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,aAAa,GAAGA,aAAa;EACpC;EAEA,MAAMC,SAAS,GAAsC;IACnD,MAAM,IAAI,CAACC,yBAAyB,EAAE;IAEtC,IAAI;MACF,MAAMZ,wBAAwB,CAACW,SAAS,EAAE;MAE1C,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,OAAOE,EAAE,EAAE;MACX,OAAO,IAAI,CAACC,WAAW,CAACD,EAAE,CAAC;IAC7B;EACF;EAEA,MAAME,MAAM,QAEiD;IAAA,IAFhD;MACXC;IACW,CAAC;IACZ,MAAM,IAAI,CAACJ,yBAAyB,EAAE;IAEtC,IAAI;MACF,MAAMK,IAAI,GAAG,MAAMjB,wBAAwB,CAACe,MAAM,CAACC,IAAI,CAAC;MAExD,OAAO;QAAEC;MAAK,CAAC;IACjB,CAAC,CAAC,OAAOJ,EAAE,EAAE;MACX,OAAO,IAAI,CAACC,WAAW,CAACD,EAAE,CAAC;IAC7B;EACF;EAEA,MAAcD,yBAAyB,GAAG;IACxC,IAAIb,WAAW,EAAE;MACf;IACF;IAEA,MAAMC,wBAAwB,CAACkB,UAAU,CAAC,IAAI,CAACV,QAAQ,EAAE,IAAI,CAACC,OAAO,CAAC;IAEtEV,WAAW,GAAG,IAAI;EACpB;EAEQe,WAAW,CAACD,EAAW,EAAE;IAC/B,IAAI,IAAI,CAACH,aAAa,EAAE;MACtBS,OAAO,CAACC,GAAG,CAACP,EAAE,CAAC;IACjB;IAEA,OAAO,IAAAQ,uBAAgB,EAACR,EAAE,CAAC;EAC7B;AACF;AAAC"}
|
package/lib/module/index.js
CHANGED
|
@@ -7,6 +7,7 @@ import { AuthsignalPush } from './push';
|
|
|
7
7
|
import { AuthsignalSms } from './sms';
|
|
8
8
|
import { AuthsignalTotp } from './totp';
|
|
9
9
|
import { AuthsignalDevice } from './device';
|
|
10
|
+
import { AuthsignalWhatsapp } from './whatsapp';
|
|
10
11
|
export * from './types';
|
|
11
12
|
export { ErrorCode } from './error';
|
|
12
13
|
const AuthsignalModule = NativeModules.AuthsignalModule ? NativeModules.AuthsignalModule : new Proxy({}, {
|
|
@@ -31,6 +32,7 @@ export class Authsignal {
|
|
|
31
32
|
_defineProperty(this, "device", void 0);
|
|
32
33
|
_defineProperty(this, "sms", void 0);
|
|
33
34
|
_defineProperty(this, "totp", void 0);
|
|
35
|
+
_defineProperty(this, "whatsapp", void 0);
|
|
34
36
|
this.tenantID = tenantID;
|
|
35
37
|
this.baseURL = baseURL;
|
|
36
38
|
this.enableLogging = enableLogging;
|
|
@@ -65,6 +67,11 @@ export class Authsignal {
|
|
|
65
67
|
baseURL,
|
|
66
68
|
enableLogging
|
|
67
69
|
});
|
|
70
|
+
this.whatsapp = new AuthsignalWhatsapp({
|
|
71
|
+
tenantID,
|
|
72
|
+
baseURL,
|
|
73
|
+
enableLogging
|
|
74
|
+
});
|
|
68
75
|
}
|
|
69
76
|
async setToken(token) {
|
|
70
77
|
await AuthsignalModule.setToken(token);
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeModules","Platform","LINKING_ERROR","AuthsignalEmail","AuthsignalPasskey","AuthsignalPush","AuthsignalSms","AuthsignalTotp","AuthsignalDevice","ErrorCode","AuthsignalModule","Proxy","get","Error","Authsignal","constructor","tenantID","baseURL","deviceID","enableLogging","__DEV__","passkey","email","push","device","sms","totp","setToken","token","launch","url","OS","Promise","resolve","reject","callback","error"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";AAAA,SAASA,aAAa,EAAEC,QAAQ,QAAQ,cAAc;AACtD,SAASC,aAAa,QAAQ,SAAS;AACvC,SAASC,eAAe,QAAQ,SAAS;AACzC,SAASC,iBAAiB,QAAQ,WAAW;AAC7C,SAASC,cAAc,QAAQ,QAAQ;AACvC,SAASC,aAAa,QAAQ,OAAO;AACrC,SAASC,cAAc,QAAQ,QAAQ;AACvC,SAASC,gBAAgB,QAAQ,UAAU;
|
|
1
|
+
{"version":3,"names":["NativeModules","Platform","LINKING_ERROR","AuthsignalEmail","AuthsignalPasskey","AuthsignalPush","AuthsignalSms","AuthsignalTotp","AuthsignalDevice","AuthsignalWhatsapp","ErrorCode","AuthsignalModule","Proxy","get","Error","Authsignal","constructor","tenantID","baseURL","deviceID","enableLogging","__DEV__","passkey","email","push","device","sms","totp","whatsapp","setToken","token","launch","url","OS","Promise","resolve","reject","callback","error"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
+
import { NativeModules } from 'react-native';
|
|
3
|
+
import { handleErrorCodes, LINKING_ERROR } from './error';
|
|
4
|
+
let initialized = false;
|
|
5
|
+
const AuthsignalWhatsappModule = NativeModules.AuthsignalWhatsappModule ? NativeModules.AuthsignalWhatsappModule : new Proxy({}, {
|
|
6
|
+
get() {
|
|
7
|
+
throw new Error(LINKING_ERROR);
|
|
8
|
+
}
|
|
9
|
+
});
|
|
10
|
+
export class AuthsignalWhatsapp {
|
|
11
|
+
constructor(_ref) {
|
|
12
|
+
let {
|
|
13
|
+
tenantID,
|
|
14
|
+
baseURL,
|
|
15
|
+
enableLogging
|
|
16
|
+
} = _ref;
|
|
17
|
+
_defineProperty(this, "tenantID", void 0);
|
|
18
|
+
_defineProperty(this, "baseURL", void 0);
|
|
19
|
+
_defineProperty(this, "enableLogging", void 0);
|
|
20
|
+
this.tenantID = tenantID;
|
|
21
|
+
this.baseURL = baseURL;
|
|
22
|
+
this.enableLogging = enableLogging;
|
|
23
|
+
}
|
|
24
|
+
async challenge() {
|
|
25
|
+
await this.ensureModuleIsInitialized();
|
|
26
|
+
try {
|
|
27
|
+
await AuthsignalWhatsappModule.challenge();
|
|
28
|
+
return {};
|
|
29
|
+
} catch (ex) {
|
|
30
|
+
return this.handleError(ex);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
async verify(_ref2) {
|
|
34
|
+
let {
|
|
35
|
+
code
|
|
36
|
+
} = _ref2;
|
|
37
|
+
await this.ensureModuleIsInitialized();
|
|
38
|
+
try {
|
|
39
|
+
const data = await AuthsignalWhatsappModule.verify(code);
|
|
40
|
+
return {
|
|
41
|
+
data
|
|
42
|
+
};
|
|
43
|
+
} catch (ex) {
|
|
44
|
+
return this.handleError(ex);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
async ensureModuleIsInitialized() {
|
|
48
|
+
if (initialized) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
await AuthsignalWhatsappModule.initialize(this.tenantID, this.baseURL);
|
|
52
|
+
initialized = true;
|
|
53
|
+
}
|
|
54
|
+
handleError(ex) {
|
|
55
|
+
if (this.enableLogging) {
|
|
56
|
+
console.log(ex);
|
|
57
|
+
}
|
|
58
|
+
return handleErrorCodes(ex);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=whatsapp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["NativeModules","handleErrorCodes","LINKING_ERROR","initialized","AuthsignalWhatsappModule","Proxy","get","Error","AuthsignalWhatsapp","constructor","tenantID","baseURL","enableLogging","challenge","ensureModuleIsInitialized","ex","handleError","verify","code","data","initialize","console","log"],"sourceRoot":"../../src","sources":["whatsapp.ts"],"mappings":";AAAA,SAASA,aAAa,QAAQ,cAAc;AAC5C,SAASC,gBAAgB,EAAEC,aAAa,QAAQ,SAAS;AASzD,IAAIC,WAAW,GAAG,KAAK;AAEvB,MAAMC,wBAAwB,GAAGJ,aAAa,CAACI,wBAAwB,GACnEJ,aAAa,CAACI,wBAAwB,GACtC,IAAIC,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAG,GAAG;IACJ,MAAM,IAAIC,KAAK,CAACL,aAAa,CAAC;EAChC;AACF,CAAC,CACF;AAEL,OAAO,MAAMM,kBAAkB,CAAC;EAK9BC,WAAW,OAAwD;IAAA,IAAvD;MAAEC,QAAQ;MAAEC,OAAO;MAAEC;IAA+B,CAAC;IAAA;IAAA;IAAA;IAC/D,IAAI,CAACF,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACC,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,aAAa,GAAGA,aAAa;EACpC;EAEA,MAAMC,SAAS,GAAsC;IACnD,MAAM,IAAI,CAACC,yBAAyB,EAAE;IAEtC,IAAI;MACF,MAAMV,wBAAwB,CAACS,SAAS,EAAE;MAE1C,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,OAAOE,EAAE,EAAE;MACX,OAAO,IAAI,CAACC,WAAW,CAACD,EAAE,CAAC;IAC7B;EACF;EAEA,MAAME,MAAM,QAEiD;IAAA,IAFhD;MACXC;IACW,CAAC;IACZ,MAAM,IAAI,CAACJ,yBAAyB,EAAE;IAEtC,IAAI;MACF,MAAMK,IAAI,GAAG,MAAMf,wBAAwB,CAACa,MAAM,CAACC,IAAI,CAAC;MAExD,OAAO;QAAEC;MAAK,CAAC;IACjB,CAAC,CAAC,OAAOJ,EAAE,EAAE;MACX,OAAO,IAAI,CAACC,WAAW,CAACD,EAAE,CAAC;IAC7B;EACF;EAEA,MAAcD,yBAAyB,GAAG;IACxC,IAAIX,WAAW,EAAE;MACf;IACF;IAEA,MAAMC,wBAAwB,CAACgB,UAAU,CAAC,IAAI,CAACV,QAAQ,EAAE,IAAI,CAACC,OAAO,CAAC;IAEtER,WAAW,GAAG,IAAI;EACpB;EAEQa,WAAW,CAACD,EAAW,EAAE;IAC/B,IAAI,IAAI,CAACH,aAAa,EAAE;MACtBS,OAAO,CAACC,GAAG,CAACP,EAAE,CAAC;IACjB;IAEA,OAAOd,gBAAgB,CAACc,EAAE,CAAC;EAC7B;AACF"}
|
|
@@ -4,6 +4,7 @@ import { AuthsignalPush } from './push';
|
|
|
4
4
|
import { AuthsignalSms } from './sms';
|
|
5
5
|
import { AuthsignalTotp } from './totp';
|
|
6
6
|
import { AuthsignalDevice } from './device';
|
|
7
|
+
import { AuthsignalWhatsapp } from './whatsapp';
|
|
7
8
|
export * from './types';
|
|
8
9
|
export { ErrorCode } from './error';
|
|
9
10
|
interface ConstructorArgs {
|
|
@@ -22,6 +23,7 @@ export declare class Authsignal {
|
|
|
22
23
|
device: AuthsignalDevice;
|
|
23
24
|
sms: AuthsignalSms;
|
|
24
25
|
totp: AuthsignalTotp;
|
|
26
|
+
whatsapp: AuthsignalWhatsapp;
|
|
25
27
|
constructor({ tenantID, baseURL, deviceID, enableLogging, }: ConstructorArgs);
|
|
26
28
|
setToken(token: string): Promise<void>;
|
|
27
29
|
launch(url: string): Promise<string | null>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAapC,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,qBAAa,UAAU;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;IAEvB,KAAK,EAAE,eAAe,CAAC;IACvB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE,gBAAgB,CAAC;IACzB,GAAG,EAAE,aAAa,CAAC;IACnB,IAAI,EAAE,cAAc,CAAC;IACrB,QAAQ,EAAE,kBAAkB,CAAC;gBAEjB,EACV,QAAQ,EACR,OAAyC,EACzC,QAAQ,EACR,aAAuB,GACxB,EAAE,eAAe;IAwBZ,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAItC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAGlD;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAsB1D"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { AuthsignalResponse, VerifyInput, VerifyResponse } from './types';
|
|
2
|
+
interface ConstructorArgs {
|
|
3
|
+
tenantID: string;
|
|
4
|
+
baseURL: string;
|
|
5
|
+
enableLogging: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare class AuthsignalWhatsapp {
|
|
8
|
+
tenantID: string;
|
|
9
|
+
baseURL: string;
|
|
10
|
+
enableLogging: boolean;
|
|
11
|
+
constructor({ tenantID, baseURL, enableLogging }: ConstructorArgs);
|
|
12
|
+
challenge(): Promise<AuthsignalResponse<void>>;
|
|
13
|
+
verify({ code, }: VerifyInput): Promise<AuthsignalResponse<VerifyResponse>>;
|
|
14
|
+
private ensureModuleIsInitialized;
|
|
15
|
+
private handleError;
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=whatsapp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whatsapp.d.ts","sourceRoot":"","sources":["../../src/whatsapp.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE/E,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;CACxB;AAeD,qBAAa,kBAAkB;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;gBAEX,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,eAAe;IAM3D,SAAS,IAAI,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAY9C,MAAM,CAAC,EACX,IAAI,GACL,EAAE,WAAW,GAAG,OAAO,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;YAY9C,yBAAyB;IAUvC,OAAO,CAAC,WAAW;CAOpB"}
|
package/package.json
CHANGED
|
@@ -17,7 +17,7 @@ Pod::Spec.new do |s|
|
|
|
17
17
|
s.source_files = "ios/**/*.{h,m,mm,swift}"
|
|
18
18
|
|
|
19
19
|
s.dependency "React-Core"
|
|
20
|
-
s.dependency 'Authsignal', '1.
|
|
20
|
+
s.dependency 'Authsignal', '1.4.0'
|
|
21
21
|
|
|
22
22
|
# Don't install the dependencies when we run `pod install` in the old architecture.
|
|
23
23
|
if ENV['RCT_NEW_ARCH_ENABLED'] == '1' then
|
package/src/index.tsx
CHANGED
|
@@ -6,6 +6,7 @@ import { AuthsignalPush } from './push';
|
|
|
6
6
|
import { AuthsignalSms } from './sms';
|
|
7
7
|
import { AuthsignalTotp } from './totp';
|
|
8
8
|
import { AuthsignalDevice } from './device';
|
|
9
|
+
import { AuthsignalWhatsapp } from './whatsapp';
|
|
9
10
|
|
|
10
11
|
export * from './types';
|
|
11
12
|
export { ErrorCode } from './error';
|
|
@@ -39,6 +40,7 @@ export class Authsignal {
|
|
|
39
40
|
device: AuthsignalDevice;
|
|
40
41
|
sms: AuthsignalSms;
|
|
41
42
|
totp: AuthsignalTotp;
|
|
43
|
+
whatsapp: AuthsignalWhatsapp;
|
|
42
44
|
|
|
43
45
|
constructor({
|
|
44
46
|
tenantID,
|
|
@@ -62,6 +64,11 @@ export class Authsignal {
|
|
|
62
64
|
this.device = new AuthsignalDevice({ tenantID, baseURL, enableLogging });
|
|
63
65
|
this.sms = new AuthsignalSms({ tenantID, baseURL, enableLogging });
|
|
64
66
|
this.totp = new AuthsignalTotp({ tenantID, baseURL, enableLogging });
|
|
67
|
+
this.whatsapp = new AuthsignalWhatsapp({
|
|
68
|
+
tenantID,
|
|
69
|
+
baseURL,
|
|
70
|
+
enableLogging,
|
|
71
|
+
});
|
|
65
72
|
}
|
|
66
73
|
|
|
67
74
|
async setToken(token: string): Promise<void> {
|
package/src/whatsapp.ts
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { NativeModules } from 'react-native';
|
|
2
|
+
import { handleErrorCodes, LINKING_ERROR } from './error';
|
|
3
|
+
import type { AuthsignalResponse, VerifyInput, VerifyResponse } from './types';
|
|
4
|
+
|
|
5
|
+
interface ConstructorArgs {
|
|
6
|
+
tenantID: string;
|
|
7
|
+
baseURL: string;
|
|
8
|
+
enableLogging: boolean;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
let initialized = false;
|
|
12
|
+
|
|
13
|
+
const AuthsignalWhatsappModule = NativeModules.AuthsignalWhatsappModule
|
|
14
|
+
? NativeModules.AuthsignalWhatsappModule
|
|
15
|
+
: new Proxy(
|
|
16
|
+
{},
|
|
17
|
+
{
|
|
18
|
+
get() {
|
|
19
|
+
throw new Error(LINKING_ERROR);
|
|
20
|
+
},
|
|
21
|
+
}
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
export class AuthsignalWhatsapp {
|
|
25
|
+
tenantID: string;
|
|
26
|
+
baseURL: string;
|
|
27
|
+
enableLogging: boolean;
|
|
28
|
+
|
|
29
|
+
constructor({ tenantID, baseURL, enableLogging }: ConstructorArgs) {
|
|
30
|
+
this.tenantID = tenantID;
|
|
31
|
+
this.baseURL = baseURL;
|
|
32
|
+
this.enableLogging = enableLogging;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
async challenge(): Promise<AuthsignalResponse<void>> {
|
|
36
|
+
await this.ensureModuleIsInitialized();
|
|
37
|
+
|
|
38
|
+
try {
|
|
39
|
+
await AuthsignalWhatsappModule.challenge();
|
|
40
|
+
|
|
41
|
+
return {};
|
|
42
|
+
} catch (ex) {
|
|
43
|
+
return this.handleError(ex);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
async verify({
|
|
48
|
+
code,
|
|
49
|
+
}: VerifyInput): Promise<AuthsignalResponse<VerifyResponse>> {
|
|
50
|
+
await this.ensureModuleIsInitialized();
|
|
51
|
+
|
|
52
|
+
try {
|
|
53
|
+
const data = await AuthsignalWhatsappModule.verify(code);
|
|
54
|
+
|
|
55
|
+
return { data };
|
|
56
|
+
} catch (ex) {
|
|
57
|
+
return this.handleError(ex);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
private async ensureModuleIsInitialized() {
|
|
62
|
+
if (initialized) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
await AuthsignalWhatsappModule.initialize(this.tenantID, this.baseURL);
|
|
67
|
+
|
|
68
|
+
initialized = true;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
private handleError(ex: unknown) {
|
|
72
|
+
if (this.enableLogging) {
|
|
73
|
+
console.log(ex);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
return handleErrorCodes(ex);
|
|
77
|
+
}
|
|
78
|
+
}
|