@doordeck/headless-react-native-sdk 0.83.0
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/HeadlessReactNativeSdk.podspec +44 -0
- package/LICENSE +174 -0
- package/README.md +113 -0
- package/android/build.gradle +118 -0
- package/android/generated/java/com/doordeck/headlessreactnativesdk/NativeHeadlessReactNativeSdkSpec.java +62 -0
- package/android/generated/jni/CMakeLists.txt +36 -0
- package/android/generated/jni/RNHeadlessReactNativeSdkSpec-generated.cpp +68 -0
- package/android/generated/jni/RNHeadlessReactNativeSdkSpec.h +31 -0
- package/android/generated/jni/react/renderer/components/RNHeadlessReactNativeSdkSpec/RNHeadlessReactNativeSdkSpecJSI-generated.cpp +68 -0
- package/android/generated/jni/react/renderer/components/RNHeadlessReactNativeSdkSpec/RNHeadlessReactNativeSdkSpecJSI.h +307 -0
- package/android/gradle.properties +5 -0
- package/android/settings.gradle.kts +16 -0
- package/android/src/main/AndroidManifest.xml +3 -0
- package/android/src/main/AndroidManifestNew.xml +2 -0
- package/android/src/main/java/com/doordeck/headlessreactnativesdk/HeadlessReactNativeSdkModule.kt +176 -0
- package/android/src/main/java/com/doordeck/headlessreactnativesdk/HeadlessReactNativeSdkPackage.kt +43 -0
- package/ios/HeadlessReactNativeSdk.h +6 -0
- package/ios/HeadlessReactNativeSdk.mm +54 -0
- package/ios/HeadlessReactNativeSdkImpl.swift +210 -0
- package/ios/generated/RNHeadlessReactNativeSdkSpec/RNHeadlessReactNativeSdkSpec-generated.mm +81 -0
- package/ios/generated/RNHeadlessReactNativeSdkSpec/RNHeadlessReactNativeSdkSpec.h +81 -0
- package/ios/generated/RNHeadlessReactNativeSdkSpecJSI-generated.cpp +68 -0
- package/ios/generated/RNHeadlessReactNativeSdkSpecJSI.h +307 -0
- package/lib/commonjs/NativeHeadlessReactNativeSdk.js +9 -0
- package/lib/commonjs/NativeHeadlessReactNativeSdk.js.map +1 -0
- package/lib/commonjs/index.js +36 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/module/NativeHeadlessReactNativeSdk.js +5 -0
- package/lib/module/NativeHeadlessReactNativeSdk.js.map +1 -0
- package/lib/module/index.js +25 -0
- package/lib/module/index.js.map +1 -0
- package/lib/typescript/commonjs/package.json +1 -0
- package/lib/typescript/commonjs/src/NativeHeadlessReactNativeSdk.d.ts +72 -0
- package/lib/typescript/commonjs/src/NativeHeadlessReactNativeSdk.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/index.d.ts +9 -0
- package/lib/typescript/commonjs/src/index.d.ts.map +1 -0
- package/lib/typescript/module/package.json +1 -0
- package/lib/typescript/module/src/NativeHeadlessReactNativeSdk.d.ts +72 -0
- package/lib/typescript/module/src/NativeHeadlessReactNativeSdk.d.ts.map +1 -0
- package/lib/typescript/module/src/index.d.ts +9 -0
- package/lib/typescript/module/src/index.d.ts.map +1 -0
- package/package.json +203 -0
- package/react-native.config.js +12 -0
- package/src/NativeHeadlessReactNativeSdk.ts +87 -0
- package/src/index.tsx +35 -0
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
//
|
|
2
|
+
// HeadlessReactNativeSdkImpl.swift
|
|
3
|
+
// HeadlessReactNativeSdkImpl
|
|
4
|
+
//
|
|
5
|
+
// Created by Rafael Ruiz Muñoz on 10/02/2025.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
import Foundation
|
|
9
|
+
import React
|
|
10
|
+
import DoordeckSDK
|
|
11
|
+
|
|
12
|
+
@objc(HeadlessReactNativeSdkImpl)
|
|
13
|
+
public class HeadlessReactNativeSdkImpl: NSObject {
|
|
14
|
+
|
|
15
|
+
private let doordeckSdk: Doordeck
|
|
16
|
+
|
|
17
|
+
override public init() {
|
|
18
|
+
self.doordeckSdk = KDoordeckFactory().initialize(sdkConfig: SdkConfig.Builder().build())
|
|
19
|
+
|
|
20
|
+
super.init()
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* ✅ Authentication Methods
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
@objc public func login(
|
|
28
|
+
_ email: String,
|
|
29
|
+
password: String,
|
|
30
|
+
resolver: @escaping RCTPromiseResolveBlock,
|
|
31
|
+
rejecter: @escaping RCTPromiseRejectBlock
|
|
32
|
+
) {
|
|
33
|
+
setKeyPairIfNeeded()
|
|
34
|
+
|
|
35
|
+
doordeckSdk.accountless().login(email: email, password: password) { tokenResponse, error in
|
|
36
|
+
|
|
37
|
+
if let error = error {
|
|
38
|
+
rejecter("LOGIN_ERROR", error.localizedDescription, error)
|
|
39
|
+
} else if tokenResponse != nil {
|
|
40
|
+
self.respondNeedsVerification(resolver, rejecter)
|
|
41
|
+
} else {
|
|
42
|
+
rejecter("LOGIN_ERROR", "Unknown error occurred", nil)
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
@objc public func setAuthToken(
|
|
48
|
+
_ authToken: String,
|
|
49
|
+
resolver: @escaping RCTPromiseResolveBlock,
|
|
50
|
+
rejecter: @escaping RCTPromiseRejectBlock
|
|
51
|
+
) {
|
|
52
|
+
setKeyPairIfNeeded()
|
|
53
|
+
|
|
54
|
+
doordeckSdk.contextManager().setCloudAuthToken(token: authToken)
|
|
55
|
+
self.respondNeedsVerification(resolver, rejecter)
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
@objc public func verify(
|
|
59
|
+
_ code: String,
|
|
60
|
+
resolver: @escaping RCTPromiseResolveBlock,
|
|
61
|
+
rejecter: @escaping RCTPromiseRejectBlock
|
|
62
|
+
) {
|
|
63
|
+
doordeckSdk.account().verifyEphemeralKeyRegistration(code: code, privateKey: nil) { _, error in
|
|
64
|
+
if let error = error {
|
|
65
|
+
rejecter("VERIFY_ERROR", error.localizedDescription, error)
|
|
66
|
+
} else {
|
|
67
|
+
resolver(nil)
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
@objc public func logout(
|
|
73
|
+
_ resolver: @escaping RCTPromiseResolveBlock,
|
|
74
|
+
rejecter: @escaping RCTPromiseRejectBlock
|
|
75
|
+
) {
|
|
76
|
+
doordeckSdk.account().logout() { error in
|
|
77
|
+
if let error = error {
|
|
78
|
+
rejecter("LOGOUT_ERROR", error.localizedDescription, error)
|
|
79
|
+
} else {
|
|
80
|
+
resolver(nil)
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* ✅ User Operations
|
|
87
|
+
*/
|
|
88
|
+
|
|
89
|
+
@objc public func getUserDetails(
|
|
90
|
+
_ resolver: @escaping RCTPromiseResolveBlock,
|
|
91
|
+
rejecter: @escaping RCTPromiseRejectBlock
|
|
92
|
+
) {
|
|
93
|
+
doordeckSdk.account().getUserDetails { response, error in
|
|
94
|
+
if let error = error {
|
|
95
|
+
rejecter("USER_DETAILS_ERROR", error.localizedDescription, error)
|
|
96
|
+
} else if let response = response {
|
|
97
|
+
resolver(response.toNativeMap(
|
|
98
|
+
userId: self.doordeckSdk.contextManager().getUserId(),
|
|
99
|
+
certificateChainAboutToExpire: self.doordeckSdk.contextManager().isCertificateChainAboutToExpire(),
|
|
100
|
+
tokenAboutToExpire: self.doordeckSdk.contextManager().isCloudAuthTokenAboutToExpire()
|
|
101
|
+
))
|
|
102
|
+
} else {
|
|
103
|
+
rejecter("USER_DETAILS_ERROR", "Unknown error occurred", nil)
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* ✅ Device and Tile Operations
|
|
110
|
+
*/
|
|
111
|
+
|
|
112
|
+
@objc public func getLocksBelongingToTile(
|
|
113
|
+
_ tileId: String,
|
|
114
|
+
resolver: @escaping RCTPromiseResolveBlock,
|
|
115
|
+
rejecter: @escaping RCTPromiseRejectBlock
|
|
116
|
+
) {
|
|
117
|
+
doordeckSdk.tiles().getLocksBelongingToTile(tileId: tileId) { response, error in
|
|
118
|
+
if let error = error {
|
|
119
|
+
rejecter("LOCKS_ERROR", error.localizedDescription, error)
|
|
120
|
+
} else if let response = response {
|
|
121
|
+
resolver(response.toNativeMap())
|
|
122
|
+
} else {
|
|
123
|
+
rejecter("LOCKS_ERROR", "Unknown error occurred", nil)
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
@objc public func unlockDevice(
|
|
129
|
+
_ lockId: String,
|
|
130
|
+
resolver: @escaping RCTPromiseResolveBlock,
|
|
131
|
+
rejecter: @escaping RCTPromiseRejectBlock
|
|
132
|
+
) {
|
|
133
|
+
let baseOperation = LockOperations.BaseOperation(
|
|
134
|
+
userId: nil,
|
|
135
|
+
userCertificateChain: nil,
|
|
136
|
+
userPrivateKey: nil,
|
|
137
|
+
lockId: lockId,
|
|
138
|
+
notBefore: Int32(Date().timeIntervalSince1970), // val notBefore: Int = Clock.System.now().epochSeconds.toInt(),
|
|
139
|
+
issuedAt: Int32(Date().timeIntervalSince1970), // val issuedAt: Int = Clock.System.now().epochSeconds.toInt(),
|
|
140
|
+
expiresAt: Int32(Date().addingTimeInterval(60).timeIntervalSince1970), // val expiresAt: Int = (Clock.System.now() + 1.minutes).epochSeconds.toInt(),
|
|
141
|
+
jti: UUID().uuidString // val jti: String = Uuid.random().toString()
|
|
142
|
+
)
|
|
143
|
+
|
|
144
|
+
let unlockOperation = LockOperations.UnlockOperation(baseOperation: baseOperation, directAccessEndpoints: nil)
|
|
145
|
+
|
|
146
|
+
doordeckSdk.lockOperations().unlock(unlockOperation: unlockOperation) { error in
|
|
147
|
+
if let error = error {
|
|
148
|
+
rejecter("UNLOCK_ERROR", error.localizedDescription, error)
|
|
149
|
+
} else {
|
|
150
|
+
resolver(nil)
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
private func setKeyPairIfNeeded() {
|
|
156
|
+
if (!doordeckSdk.contextManager().isKeyPairValid()) {
|
|
157
|
+
let newKeyPair = doordeckSdk.crypto().generateKeyPair()
|
|
158
|
+
doordeckSdk.contextManager().setKeyPair(publicKey: newKeyPair.public_, privateKey: newKeyPair.private_)
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
private func respondNeedsVerification(
|
|
163
|
+
_ resolver: @escaping RCTPromiseResolveBlock,
|
|
164
|
+
_ rejecter: @escaping RCTPromiseRejectBlock
|
|
165
|
+
) {
|
|
166
|
+
doordeckSdk.helper().assistedRegisterEphemeralKey(publicKey: nil) { response, error in
|
|
167
|
+
if let error = error {
|
|
168
|
+
rejecter("NEEDS_VERIFICATION_ERROR", error.localizedDescription, error)
|
|
169
|
+
} else if let response = response {
|
|
170
|
+
resolver(response.toNativeMap())
|
|
171
|
+
} else {
|
|
172
|
+
rejecter("NEEDS_VERIFICATION_ERROR", "Unknown error occurred", nil)
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* ✅ Extensions for converting Doordeck responses into NSDictionary (React Native format)
|
|
180
|
+
*/
|
|
181
|
+
|
|
182
|
+
extension AssistedRegisterEphemeralKeyResponse {
|
|
183
|
+
func toNativeMap() -> NSDictionary {
|
|
184
|
+
return ["requiresVerification": requiresVerification]
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
extension TileLocksResponse {
|
|
189
|
+
func toNativeMap() -> NSDictionary {
|
|
190
|
+
return [
|
|
191
|
+
"siteId": siteId,
|
|
192
|
+
"tileId": tileId,
|
|
193
|
+
"deviceIds": deviceIds
|
|
194
|
+
]
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
extension UserDetailsResponse {
|
|
199
|
+
func toNativeMap(userId: String?, certificateChainAboutToExpire: Bool, tokenAboutToExpire: Bool) -> NSDictionary {
|
|
200
|
+
return [
|
|
201
|
+
"userId": userId as Any,
|
|
202
|
+
"certificateChainAboutToExpire": certificateChainAboutToExpire,
|
|
203
|
+
"tokenAboutToExpire": tokenAboutToExpire,
|
|
204
|
+
"publicKey": publicKey,
|
|
205
|
+
"email": email,
|
|
206
|
+
"displayName": displayName as Any,
|
|
207
|
+
"emailVerified": emailVerified
|
|
208
|
+
]
|
|
209
|
+
}
|
|
210
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
3
|
+
*
|
|
4
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
5
|
+
* once the code is regenerated.
|
|
6
|
+
*
|
|
7
|
+
* @generated by codegen project: GenerateModuleObjCpp
|
|
8
|
+
*
|
|
9
|
+
* We create an umbrella header (and corresponding implementation) here since
|
|
10
|
+
* Cxx compilation in BUCK has a limitation: source-code producing genrule()s
|
|
11
|
+
* must have a single output. More files => more genrule()s => slower builds.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
#import "RNHeadlessReactNativeSdkSpec.h"
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@implementation NativeHeadlessReactNativeSdkSpecBase
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
- (void)setEventEmitterCallback:(EventEmitterCallbackWrapper *)eventEmitterCallbackWrapper
|
|
21
|
+
{
|
|
22
|
+
_eventEmitterCallback = std::move(eventEmitterCallbackWrapper->_eventEmitterCallback);
|
|
23
|
+
}
|
|
24
|
+
@end
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
namespace facebook::react {
|
|
28
|
+
|
|
29
|
+
static facebook::jsi::Value __hostFunction_NativeHeadlessReactNativeSdkSpecJSI_login(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
30
|
+
return static_cast<ObjCTurboModule&>(turboModule).invokeObjCMethod(rt, PromiseKind, "login", @selector(login:password:resolve:reject:), args, count);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
static facebook::jsi::Value __hostFunction_NativeHeadlessReactNativeSdkSpecJSI_setAuthToken(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
34
|
+
return static_cast<ObjCTurboModule&>(turboModule).invokeObjCMethod(rt, PromiseKind, "setAuthToken", @selector(setAuthToken:resolve:reject:), args, count);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
static facebook::jsi::Value __hostFunction_NativeHeadlessReactNativeSdkSpecJSI_getUserDetails(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
38
|
+
return static_cast<ObjCTurboModule&>(turboModule).invokeObjCMethod(rt, PromiseKind, "getUserDetails", @selector(getUserDetails:reject:), args, count);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
static facebook::jsi::Value __hostFunction_NativeHeadlessReactNativeSdkSpecJSI_verify(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
42
|
+
return static_cast<ObjCTurboModule&>(turboModule).invokeObjCMethod(rt, PromiseKind, "verify", @selector(verify:resolve:reject:), args, count);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
static facebook::jsi::Value __hostFunction_NativeHeadlessReactNativeSdkSpecJSI_logout(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
46
|
+
return static_cast<ObjCTurboModule&>(turboModule).invokeObjCMethod(rt, PromiseKind, "logout", @selector(logout:reject:), args, count);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
static facebook::jsi::Value __hostFunction_NativeHeadlessReactNativeSdkSpecJSI_getLocksBelongingToTile(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
50
|
+
return static_cast<ObjCTurboModule&>(turboModule).invokeObjCMethod(rt, PromiseKind, "getLocksBelongingToTile", @selector(getLocksBelongingToTile:resolve:reject:), args, count);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
static facebook::jsi::Value __hostFunction_NativeHeadlessReactNativeSdkSpecJSI_unlockDevice(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
54
|
+
return static_cast<ObjCTurboModule&>(turboModule).invokeObjCMethod(rt, PromiseKind, "unlockDevice", @selector(unlockDevice:resolve:reject:), args, count);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
NativeHeadlessReactNativeSdkSpecJSI::NativeHeadlessReactNativeSdkSpecJSI(const ObjCTurboModule::InitParams ¶ms)
|
|
58
|
+
: ObjCTurboModule(params) {
|
|
59
|
+
|
|
60
|
+
methodMap_["login"] = MethodMetadata {2, __hostFunction_NativeHeadlessReactNativeSdkSpecJSI_login};
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
methodMap_["setAuthToken"] = MethodMetadata {1, __hostFunction_NativeHeadlessReactNativeSdkSpecJSI_setAuthToken};
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
methodMap_["getUserDetails"] = MethodMetadata {0, __hostFunction_NativeHeadlessReactNativeSdkSpecJSI_getUserDetails};
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
methodMap_["verify"] = MethodMetadata {1, __hostFunction_NativeHeadlessReactNativeSdkSpecJSI_verify};
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
methodMap_["logout"] = MethodMetadata {0, __hostFunction_NativeHeadlessReactNativeSdkSpecJSI_logout};
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
methodMap_["getLocksBelongingToTile"] = MethodMetadata {1, __hostFunction_NativeHeadlessReactNativeSdkSpecJSI_getLocksBelongingToTile};
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
methodMap_["unlockDevice"] = MethodMetadata {1, __hostFunction_NativeHeadlessReactNativeSdkSpecJSI_unlockDevice};
|
|
79
|
+
|
|
80
|
+
}
|
|
81
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
3
|
+
*
|
|
4
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
5
|
+
* once the code is regenerated.
|
|
6
|
+
*
|
|
7
|
+
* @generated by codegen project: GenerateModuleObjCpp
|
|
8
|
+
*
|
|
9
|
+
* We create an umbrella header (and corresponding implementation) here since
|
|
10
|
+
* Cxx compilation in BUCK has a limitation: source-code producing genrule()s
|
|
11
|
+
* must have a single output. More files => more genrule()s => slower builds.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
#ifndef __cplusplus
|
|
15
|
+
#error This file must be compiled as Obj-C++. If you are importing it, you must change your file extension to .mm.
|
|
16
|
+
#endif
|
|
17
|
+
|
|
18
|
+
// Avoid multiple includes of RNHeadlessReactNativeSdkSpec symbols
|
|
19
|
+
#ifndef RNHeadlessReactNativeSdkSpec_H
|
|
20
|
+
#define RNHeadlessReactNativeSdkSpec_H
|
|
21
|
+
|
|
22
|
+
#import <Foundation/Foundation.h>
|
|
23
|
+
#import <RCTRequired/RCTRequired.h>
|
|
24
|
+
#import <RCTTypeSafety/RCTConvertHelpers.h>
|
|
25
|
+
#import <RCTTypeSafety/RCTTypedModuleConstants.h>
|
|
26
|
+
#import <React/RCTBridgeModule.h>
|
|
27
|
+
#import <React/RCTCxxConvert.h>
|
|
28
|
+
#import <React/RCTManagedPointer.h>
|
|
29
|
+
#import <ReactCommon/RCTTurboModule.h>
|
|
30
|
+
#import <optional>
|
|
31
|
+
#import <vector>
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
35
|
+
|
|
36
|
+
@protocol NativeHeadlessReactNativeSdkSpec <RCTBridgeModule, RCTTurboModule>
|
|
37
|
+
|
|
38
|
+
- (void)login:(NSString *)email
|
|
39
|
+
password:(NSString *)password
|
|
40
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
41
|
+
reject:(RCTPromiseRejectBlock)reject;
|
|
42
|
+
- (void)setAuthToken:(NSString *)authToken
|
|
43
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
44
|
+
reject:(RCTPromiseRejectBlock)reject;
|
|
45
|
+
- (void)getUserDetails:(RCTPromiseResolveBlock)resolve
|
|
46
|
+
reject:(RCTPromiseRejectBlock)reject;
|
|
47
|
+
- (void)verify:(NSString *)code
|
|
48
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
49
|
+
reject:(RCTPromiseRejectBlock)reject;
|
|
50
|
+
- (void)logout:(RCTPromiseResolveBlock)resolve
|
|
51
|
+
reject:(RCTPromiseRejectBlock)reject;
|
|
52
|
+
- (void)getLocksBelongingToTile:(NSString *)tileId
|
|
53
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
54
|
+
reject:(RCTPromiseRejectBlock)reject;
|
|
55
|
+
- (void)unlockDevice:(NSString *)lockId
|
|
56
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
57
|
+
reject:(RCTPromiseRejectBlock)reject;
|
|
58
|
+
|
|
59
|
+
@end
|
|
60
|
+
|
|
61
|
+
@interface NativeHeadlessReactNativeSdkSpecBase : NSObject {
|
|
62
|
+
@protected
|
|
63
|
+
facebook::react::EventEmitterCallback _eventEmitterCallback;
|
|
64
|
+
}
|
|
65
|
+
- (void)setEventEmitterCallback:(EventEmitterCallbackWrapper *)eventEmitterCallbackWrapper;
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
@end
|
|
69
|
+
|
|
70
|
+
namespace facebook::react {
|
|
71
|
+
/**
|
|
72
|
+
* ObjC++ class for module 'NativeHeadlessReactNativeSdk'
|
|
73
|
+
*/
|
|
74
|
+
class JSI_EXPORT NativeHeadlessReactNativeSdkSpecJSI : public ObjCTurboModule {
|
|
75
|
+
public:
|
|
76
|
+
NativeHeadlessReactNativeSdkSpecJSI(const ObjCTurboModule::InitParams ¶ms);
|
|
77
|
+
};
|
|
78
|
+
} // namespace facebook::react
|
|
79
|
+
|
|
80
|
+
NS_ASSUME_NONNULL_END
|
|
81
|
+
#endif // RNHeadlessReactNativeSdkSpec_H
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
3
|
+
*
|
|
4
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
5
|
+
* once the code is regenerated.
|
|
6
|
+
*
|
|
7
|
+
* @generated by codegen project: GenerateModuleCpp.js
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
#include "RNHeadlessReactNativeSdkSpecJSI.h"
|
|
11
|
+
|
|
12
|
+
namespace facebook::react {
|
|
13
|
+
|
|
14
|
+
static jsi::Value __hostFunction_NativeHeadlessReactNativeSdkCxxSpecJSI_login(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
15
|
+
return static_cast<NativeHeadlessReactNativeSdkCxxSpecJSI *>(&turboModule)->login(
|
|
16
|
+
rt,
|
|
17
|
+
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt),
|
|
18
|
+
count <= 1 ? throw jsi::JSError(rt, "Expected argument in position 1 to be passed") : args[1].asString(rt)
|
|
19
|
+
);
|
|
20
|
+
}
|
|
21
|
+
static jsi::Value __hostFunction_NativeHeadlessReactNativeSdkCxxSpecJSI_setAuthToken(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
22
|
+
return static_cast<NativeHeadlessReactNativeSdkCxxSpecJSI *>(&turboModule)->setAuthToken(
|
|
23
|
+
rt,
|
|
24
|
+
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt)
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
static jsi::Value __hostFunction_NativeHeadlessReactNativeSdkCxxSpecJSI_getUserDetails(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
28
|
+
return static_cast<NativeHeadlessReactNativeSdkCxxSpecJSI *>(&turboModule)->getUserDetails(
|
|
29
|
+
rt
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
static jsi::Value __hostFunction_NativeHeadlessReactNativeSdkCxxSpecJSI_verify(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
33
|
+
return static_cast<NativeHeadlessReactNativeSdkCxxSpecJSI *>(&turboModule)->verify(
|
|
34
|
+
rt,
|
|
35
|
+
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt)
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
static jsi::Value __hostFunction_NativeHeadlessReactNativeSdkCxxSpecJSI_logout(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
39
|
+
return static_cast<NativeHeadlessReactNativeSdkCxxSpecJSI *>(&turboModule)->logout(
|
|
40
|
+
rt
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
static jsi::Value __hostFunction_NativeHeadlessReactNativeSdkCxxSpecJSI_getLocksBelongingToTile(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
44
|
+
return static_cast<NativeHeadlessReactNativeSdkCxxSpecJSI *>(&turboModule)->getLocksBelongingToTile(
|
|
45
|
+
rt,
|
|
46
|
+
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt)
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
static jsi::Value __hostFunction_NativeHeadlessReactNativeSdkCxxSpecJSI_unlockDevice(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
50
|
+
return static_cast<NativeHeadlessReactNativeSdkCxxSpecJSI *>(&turboModule)->unlockDevice(
|
|
51
|
+
rt,
|
|
52
|
+
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt)
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
NativeHeadlessReactNativeSdkCxxSpecJSI::NativeHeadlessReactNativeSdkCxxSpecJSI(std::shared_ptr<CallInvoker> jsInvoker)
|
|
57
|
+
: TurboModule("HeadlessReactNativeSdk", jsInvoker) {
|
|
58
|
+
methodMap_["login"] = MethodMetadata {2, __hostFunction_NativeHeadlessReactNativeSdkCxxSpecJSI_login};
|
|
59
|
+
methodMap_["setAuthToken"] = MethodMetadata {1, __hostFunction_NativeHeadlessReactNativeSdkCxxSpecJSI_setAuthToken};
|
|
60
|
+
methodMap_["getUserDetails"] = MethodMetadata {0, __hostFunction_NativeHeadlessReactNativeSdkCxxSpecJSI_getUserDetails};
|
|
61
|
+
methodMap_["verify"] = MethodMetadata {1, __hostFunction_NativeHeadlessReactNativeSdkCxxSpecJSI_verify};
|
|
62
|
+
methodMap_["logout"] = MethodMetadata {0, __hostFunction_NativeHeadlessReactNativeSdkCxxSpecJSI_logout};
|
|
63
|
+
methodMap_["getLocksBelongingToTile"] = MethodMetadata {1, __hostFunction_NativeHeadlessReactNativeSdkCxxSpecJSI_getLocksBelongingToTile};
|
|
64
|
+
methodMap_["unlockDevice"] = MethodMetadata {1, __hostFunction_NativeHeadlessReactNativeSdkCxxSpecJSI_unlockDevice};
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
} // namespace facebook::react
|