@walletconnect/react-native-compat 2.23.1-canary-up-c-1 → 2.23.1-canary.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/android/build.gradle +7 -0
- package/android/src/main/java/com/walletconnect/reactnativemodule/RNWalletConnectModulePackage.kt +19 -5
- package/android/src/main/java/com/walletconnect/reactnativemodule/RNWalletConnectPayModule.kt +132 -0
- package/android/src/newarch/RNWalletConnectPaySpec.kt +7 -0
- package/android/src/oldarch/RNWalletConnectPaySpec.kt +14 -0
- package/ios/RNWalletConnectPay.h +11 -0
- package/ios/RNWalletConnectPay.mm +142 -0
- package/module/NativeRNWalletConnectPay.ts +56 -0
- package/module/index.ts +42 -0
- package/package.json +2 -2
- package/react-native-compat.podspec +6 -2
package/android/build.gradle
CHANGED
|
@@ -99,6 +99,7 @@ android {
|
|
|
99
99
|
repositories {
|
|
100
100
|
mavenCentral()
|
|
101
101
|
google()
|
|
102
|
+
maven { url 'https://jitpack.io' }
|
|
102
103
|
}
|
|
103
104
|
|
|
104
105
|
def kotlin_version = getExtOrDefault("kotlinVersion")
|
|
@@ -109,6 +110,12 @@ dependencies {
|
|
|
109
110
|
//noinspection GradleDynamicVersion
|
|
110
111
|
implementation "com.facebook.react:react-native:+"
|
|
111
112
|
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
|
113
|
+
|
|
114
|
+
// Yttrium - WalletConnect Pay uniffi bindings
|
|
115
|
+
implementation("com.github.reown-com.yttrium:yttrium-wcpay:0.9.119")
|
|
116
|
+
|
|
117
|
+
// Coroutines for async uniffi calls
|
|
118
|
+
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3"
|
|
112
119
|
}
|
|
113
120
|
|
|
114
121
|
if (isNewArchitectureEnabled()) {
|
package/android/src/main/java/com/walletconnect/reactnativemodule/RNWalletConnectModulePackage.kt
CHANGED
|
@@ -9,10 +9,10 @@ import java.util.HashMap
|
|
|
9
9
|
|
|
10
10
|
class RNWalletConnectModulePackage : TurboReactPackage() {
|
|
11
11
|
override fun getModule(name: String, reactContext: ReactApplicationContext): NativeModule? {
|
|
12
|
-
return
|
|
13
|
-
RNWalletConnectModuleModule(reactContext)
|
|
14
|
-
|
|
15
|
-
null
|
|
12
|
+
return when (name) {
|
|
13
|
+
RNWalletConnectModuleModule.NAME -> RNWalletConnectModuleModule(reactContext)
|
|
14
|
+
RNWalletConnectPayModule.NAME -> RNWalletConnectPayModule(reactContext)
|
|
15
|
+
else -> null
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
18
|
|
|
@@ -20,15 +20,29 @@ class RNWalletConnectModulePackage : TurboReactPackage() {
|
|
|
20
20
|
return ReactModuleInfoProvider {
|
|
21
21
|
val moduleInfos: MutableMap<String, ReactModuleInfo> = HashMap()
|
|
22
22
|
val isTurboModule: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED
|
|
23
|
+
|
|
24
|
+
// Existing WalletConnect module
|
|
23
25
|
moduleInfos[RNWalletConnectModuleModule.NAME] = ReactModuleInfo(
|
|
24
26
|
RNWalletConnectModuleModule.NAME,
|
|
25
27
|
RNWalletConnectModuleModule.NAME,
|
|
26
28
|
false, // canOverrideExistingModule
|
|
27
29
|
false, // needsEagerInit
|
|
28
|
-
true,
|
|
30
|
+
true, // hasConstants
|
|
29
31
|
false, // isCxxModule
|
|
30
32
|
isTurboModule // isTurboModule
|
|
31
33
|
)
|
|
34
|
+
|
|
35
|
+
// WalletConnect Pay module
|
|
36
|
+
moduleInfos[RNWalletConnectPayModule.NAME] = ReactModuleInfo(
|
|
37
|
+
RNWalletConnectPayModule.NAME,
|
|
38
|
+
RNWalletConnectPayModule.NAME,
|
|
39
|
+
false, // canOverrideExistingModule
|
|
40
|
+
false, // needsEagerInit
|
|
41
|
+
false, // hasConstants
|
|
42
|
+
false, // isCxxModule
|
|
43
|
+
isTurboModule // isTurboModule
|
|
44
|
+
)
|
|
45
|
+
|
|
32
46
|
moduleInfos
|
|
33
47
|
}
|
|
34
48
|
}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
package com.walletconnect.reactnativemodule
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
4
|
+
import com.facebook.react.bridge.ReactMethod
|
|
5
|
+
import com.facebook.react.bridge.Promise
|
|
6
|
+
import kotlinx.coroutines.*
|
|
7
|
+
import uniffi.yttrium.WalletConnectPayJson
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* React Native module for WalletConnect Pay
|
|
11
|
+
* Wraps the uniffi-generated WalletConnectPayJson Rust client
|
|
12
|
+
*/
|
|
13
|
+
class RNWalletConnectPayModule internal constructor(context: ReactApplicationContext) :
|
|
14
|
+
RNWalletConnectPaySpec(context) {
|
|
15
|
+
|
|
16
|
+
private var client: WalletConnectPayJson? = null
|
|
17
|
+
private val scope = CoroutineScope(Dispatchers.IO + SupervisorJob())
|
|
18
|
+
|
|
19
|
+
override fun getName(): String = NAME
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Initialize the Pay client with SDK configuration
|
|
23
|
+
* @param configJson JSON string containing SDK config:
|
|
24
|
+
* {
|
|
25
|
+
* "baseUrl": string,
|
|
26
|
+
* "projectId": string,
|
|
27
|
+
* "apiKey": string,
|
|
28
|
+
* "sdkName": string,
|
|
29
|
+
* "sdkVersion": string,
|
|
30
|
+
* "sdkPlatform": string,
|
|
31
|
+
* "bundleId": string
|
|
32
|
+
* }
|
|
33
|
+
*/
|
|
34
|
+
@ReactMethod
|
|
35
|
+
override fun initialize(configJson: String) {
|
|
36
|
+
try {
|
|
37
|
+
client = WalletConnectPayJson(configJson)
|
|
38
|
+
} catch (e: Exception) {
|
|
39
|
+
// Log error but don't throw - let subsequent calls fail with "not initialized"
|
|
40
|
+
android.util.Log.e(NAME, "Failed to initialize Pay client: ${e.message}", e)
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Get payment options for a payment link
|
|
46
|
+
* @param requestJson JSON string:
|
|
47
|
+
* { "paymentLink": string, "accounts": string[], "includePaymentInfo"?: boolean }
|
|
48
|
+
* @param promise Resolves with JSON string of PaymentOptionsResponse
|
|
49
|
+
*/
|
|
50
|
+
@ReactMethod
|
|
51
|
+
override fun getPaymentOptions(requestJson: String, promise: Promise) {
|
|
52
|
+
val currentClient = client
|
|
53
|
+
if (currentClient == null) {
|
|
54
|
+
promise.reject("PAY_ERROR", "Pay client not initialized. Call initialize() first.")
|
|
55
|
+
return
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
scope.launch {
|
|
59
|
+
try {
|
|
60
|
+
val result = currentClient.getPaymentOptions(requestJson)
|
|
61
|
+
promise.resolve(result)
|
|
62
|
+
} catch (e: Exception) {
|
|
63
|
+
promise.reject("PAY_ERROR", e.message ?: "Unknown error", e)
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Get required payment actions for a selected option
|
|
70
|
+
* @param requestJson JSON string:
|
|
71
|
+
* { "paymentId": string, "optionId": string }
|
|
72
|
+
* @param promise Resolves with JSON string array of Action
|
|
73
|
+
*/
|
|
74
|
+
@ReactMethod
|
|
75
|
+
override fun getRequiredPaymentActions(requestJson: String, promise: Promise) {
|
|
76
|
+
val currentClient = client
|
|
77
|
+
if (currentClient == null) {
|
|
78
|
+
promise.reject("PAY_ERROR", "Pay client not initialized. Call initialize() first.")
|
|
79
|
+
return
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
scope.launch {
|
|
83
|
+
try {
|
|
84
|
+
val result = currentClient.getRequiredPaymentActions(requestJson)
|
|
85
|
+
promise.resolve(result)
|
|
86
|
+
} catch (e: Exception) {
|
|
87
|
+
promise.reject("PAY_ERROR", e.message ?: "Unknown error", e)
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Confirm a payment with signatures
|
|
94
|
+
* @param requestJson JSON string:
|
|
95
|
+
* {
|
|
96
|
+
* "paymentId": string,
|
|
97
|
+
* "optionId": string,
|
|
98
|
+
* "signatures": string[],
|
|
99
|
+
* "collectedData"?: [{ "id": string, "value": string }]
|
|
100
|
+
* }
|
|
101
|
+
* @param promise Resolves with JSON string of ConfirmPaymentResponse
|
|
102
|
+
*/
|
|
103
|
+
@ReactMethod
|
|
104
|
+
override fun confirmPayment(requestJson: String, promise: Promise) {
|
|
105
|
+
val currentClient = client
|
|
106
|
+
if (currentClient == null) {
|
|
107
|
+
promise.reject("PAY_ERROR", "Pay client not initialized. Call initialize() first.")
|
|
108
|
+
return
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
scope.launch {
|
|
112
|
+
try {
|
|
113
|
+
val result = currentClient.confirmPayment(requestJson)
|
|
114
|
+
promise.resolve(result)
|
|
115
|
+
} catch (e: Exception) {
|
|
116
|
+
promise.reject("PAY_ERROR", e.message ?: "Unknown error", e)
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Clean up coroutine scope when module is destroyed
|
|
123
|
+
*/
|
|
124
|
+
override fun invalidate() {
|
|
125
|
+
scope.cancel()
|
|
126
|
+
super.invalidate()
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
companion object {
|
|
130
|
+
const val NAME = "RNWalletConnectPay"
|
|
131
|
+
}
|
|
132
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
package com.walletconnect.reactnativemodule
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
4
|
+
import com.facebook.react.bridge.ReactContextBaseJavaModule
|
|
5
|
+
import com.facebook.react.bridge.Promise
|
|
6
|
+
|
|
7
|
+
abstract class RNWalletConnectPaySpec internal constructor(context: ReactApplicationContext) :
|
|
8
|
+
ReactContextBaseJavaModule(context) {
|
|
9
|
+
|
|
10
|
+
abstract fun initialize(configJson: String)
|
|
11
|
+
abstract fun getPaymentOptions(requestJson: String, promise: Promise)
|
|
12
|
+
abstract fun getRequiredPaymentActions(requestJson: String, promise: Promise)
|
|
13
|
+
abstract fun confirmPayment(requestJson: String, promise: Promise)
|
|
14
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
2
|
+
#import "RNRNWalletConnectModuleSpec.h"
|
|
3
|
+
|
|
4
|
+
@interface RNWalletConnectPay : NSObject <NativeRNWalletConnectPaySpec>
|
|
5
|
+
#else
|
|
6
|
+
#import <React/RCTBridgeModule.h>
|
|
7
|
+
|
|
8
|
+
@interface RNWalletConnectPay : NSObject <RCTBridgeModule>
|
|
9
|
+
#endif
|
|
10
|
+
|
|
11
|
+
@end
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
#import "RNWalletConnectPay.h"
|
|
2
|
+
#import <React/RCTBridge.h>
|
|
3
|
+
|
|
4
|
+
// Import Swift/Yttrium
|
|
5
|
+
#if __has_include(<Yttrium/Yttrium-Swift.h>)
|
|
6
|
+
#import <Yttrium/Yttrium-Swift.h>
|
|
7
|
+
#elif __has_include(<YttriumWrapper/YttriumWrapper-Swift.h>)
|
|
8
|
+
#import <YttriumWrapper/YttriumWrapper-Swift.h>
|
|
9
|
+
#elif __has_include("Yttrium-Swift.h")
|
|
10
|
+
#import "Yttrium-Swift.h"
|
|
11
|
+
#else
|
|
12
|
+
// Fallback - uniffi generated code should be available
|
|
13
|
+
@import Yttrium;
|
|
14
|
+
#endif
|
|
15
|
+
|
|
16
|
+
@implementation RNWalletConnectPay {
|
|
17
|
+
WalletConnectPayJson *_client;
|
|
18
|
+
dispatch_queue_t _queue;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
RCT_EXPORT_MODULE()
|
|
22
|
+
|
|
23
|
+
- (instancetype)init
|
|
24
|
+
{
|
|
25
|
+
self = [super init];
|
|
26
|
+
if (self) {
|
|
27
|
+
_queue = dispatch_queue_create("com.walletconnect.pay", DISPATCH_QUEUE_SERIAL);
|
|
28
|
+
}
|
|
29
|
+
return self;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Initialize the Pay client with SDK configuration
|
|
34
|
+
* @param configJson JSON string containing SDK config
|
|
35
|
+
*/
|
|
36
|
+
RCT_EXPORT_METHOD(initialize:(NSString *)configJson)
|
|
37
|
+
{
|
|
38
|
+
dispatch_async(_queue, ^{
|
|
39
|
+
NSError *error = nil;
|
|
40
|
+
self->_client = [[WalletConnectPayJson alloc] init:configJson error:&error];
|
|
41
|
+
if (error) {
|
|
42
|
+
NSLog(@"[RNWalletConnectPay] Failed to initialize: %@", error.localizedDescription);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Get payment options for a payment link
|
|
49
|
+
* @param requestJson JSON request string
|
|
50
|
+
* @param resolve Promise resolve callback
|
|
51
|
+
* @param reject Promise reject callback
|
|
52
|
+
*/
|
|
53
|
+
RCT_EXPORT_METHOD(getPaymentOptions:(NSString *)requestJson
|
|
54
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
55
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
56
|
+
{
|
|
57
|
+
dispatch_async(_queue, ^{
|
|
58
|
+
if (!self->_client) {
|
|
59
|
+
reject(@"PAY_ERROR", @"Pay client not initialized. Call initialize() first.", nil);
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
NSError *error = nil;
|
|
64
|
+
NSString *result = [self->_client getPaymentOptions:requestJson error:&error];
|
|
65
|
+
|
|
66
|
+
if (error) {
|
|
67
|
+
reject(@"PAY_ERROR", error.localizedDescription, error);
|
|
68
|
+
} else {
|
|
69
|
+
resolve(result);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Get required payment actions for a selected option
|
|
76
|
+
* @param requestJson JSON request string
|
|
77
|
+
* @param resolve Promise resolve callback
|
|
78
|
+
* @param reject Promise reject callback
|
|
79
|
+
*/
|
|
80
|
+
RCT_EXPORT_METHOD(getRequiredPaymentActions:(NSString *)requestJson
|
|
81
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
82
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
83
|
+
{
|
|
84
|
+
dispatch_async(_queue, ^{
|
|
85
|
+
if (!self->_client) {
|
|
86
|
+
reject(@"PAY_ERROR", @"Pay client not initialized. Call initialize() first.", nil);
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
NSError *error = nil;
|
|
91
|
+
NSString *result = [self->_client getRequiredPaymentActions:requestJson error:&error];
|
|
92
|
+
|
|
93
|
+
if (error) {
|
|
94
|
+
reject(@"PAY_ERROR", error.localizedDescription, error);
|
|
95
|
+
} else {
|
|
96
|
+
resolve(result);
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Confirm a payment with signatures
|
|
103
|
+
* @param requestJson JSON request string
|
|
104
|
+
* @param resolve Promise resolve callback
|
|
105
|
+
* @param reject Promise reject callback
|
|
106
|
+
*/
|
|
107
|
+
RCT_EXPORT_METHOD(confirmPayment:(NSString *)requestJson
|
|
108
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
109
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
110
|
+
{
|
|
111
|
+
dispatch_async(_queue, ^{
|
|
112
|
+
if (!self->_client) {
|
|
113
|
+
reject(@"PAY_ERROR", @"Pay client not initialized. Call initialize() first.", nil);
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
NSError *error = nil;
|
|
118
|
+
NSString *result = [self->_client confirmPayment:requestJson error:&error];
|
|
119
|
+
|
|
120
|
+
if (error) {
|
|
121
|
+
reject(@"PAY_ERROR", error.localizedDescription, error);
|
|
122
|
+
} else {
|
|
123
|
+
resolve(result);
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
+ (BOOL)requiresMainQueueSetup
|
|
129
|
+
{
|
|
130
|
+
return NO;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// Don't compile this code when we build for the old architecture.
|
|
134
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
135
|
+
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
|
|
136
|
+
(const facebook::react::ObjCTurboModule::InitParams &)params
|
|
137
|
+
{
|
|
138
|
+
return std::make_shared<facebook::react::NativeRNWalletConnectPaySpecJSI>(params);
|
|
139
|
+
}
|
|
140
|
+
#endif
|
|
141
|
+
|
|
142
|
+
@end
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { TurboModule } from "react-native";
|
|
2
|
+
import { TurboModuleRegistry } from "react-native";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* TurboModule spec for WalletConnect Pay native module
|
|
6
|
+
*
|
|
7
|
+
* This module wraps the uniffi-generated WalletConnectPayJson Rust client
|
|
8
|
+
* and provides a JSON-based interface for payment operations.
|
|
9
|
+
*/
|
|
10
|
+
export interface Spec extends TurboModule {
|
|
11
|
+
/**
|
|
12
|
+
* Initialize the Pay client with SDK configuration
|
|
13
|
+
* @param configJson JSON string containing SDK config:
|
|
14
|
+
* {
|
|
15
|
+
* "baseUrl": string,
|
|
16
|
+
* "projectId": string,
|
|
17
|
+
* "apiKey": string,
|
|
18
|
+
* "sdkName": string,
|
|
19
|
+
* "sdkVersion": string,
|
|
20
|
+
* "sdkPlatform": string,
|
|
21
|
+
* "bundleId": string
|
|
22
|
+
* }
|
|
23
|
+
*/
|
|
24
|
+
initialize(configJson: string): void;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Get payment options for a payment link
|
|
28
|
+
* @param requestJson JSON string:
|
|
29
|
+
* { "paymentLink": string, "accounts": string[], "includePaymentInfo"?: boolean }
|
|
30
|
+
* @returns Promise resolving to JSON string of PaymentOptionsResponse
|
|
31
|
+
*/
|
|
32
|
+
getPaymentOptions(requestJson: string): Promise<string>;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Get required payment actions for a selected option
|
|
36
|
+
* @param requestJson JSON string:
|
|
37
|
+
* { "paymentId": string, "optionId": string }
|
|
38
|
+
* @returns Promise resolving to JSON string array of Action
|
|
39
|
+
*/
|
|
40
|
+
getRequiredPaymentActions(requestJson: string): Promise<string>;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Confirm a payment with signatures
|
|
44
|
+
* @param requestJson JSON string:
|
|
45
|
+
* {
|
|
46
|
+
* "paymentId": string,
|
|
47
|
+
* "optionId": string,
|
|
48
|
+
* "signatures": string[],
|
|
49
|
+
* "collectedData"?: [{ "id": string, "value": string }]
|
|
50
|
+
* }
|
|
51
|
+
* @returns Promise resolving to JSON string of ConfirmPaymentResponse
|
|
52
|
+
*/
|
|
53
|
+
confirmPayment(requestJson: string): Promise<string>;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export default TurboModuleRegistry.get<Spec>("RNWalletConnectPay");
|
package/module/index.ts
CHANGED
|
@@ -6,12 +6,21 @@ const LINKING_ERROR =
|
|
|
6
6
|
"- You rebuilt the app after installing the package\n" +
|
|
7
7
|
"- If you are using Expo: install expo-application \n";
|
|
8
8
|
|
|
9
|
+
const PAY_LINKING_ERROR =
|
|
10
|
+
`The RNWalletConnectPay module doesn't seem to be linked. Make sure: \n\n` +
|
|
11
|
+
"- You rebuilt the app after installing the package\n" +
|
|
12
|
+
"- The Yttrium native dependency is properly installed\n";
|
|
13
|
+
|
|
9
14
|
const isTurboModuleEnabled = global.__turboModuleProxy != null;
|
|
10
15
|
|
|
11
16
|
const RNWalletConnectModule = isTurboModuleEnabled
|
|
12
17
|
? require("../module/NativeRNWalletConnectModule.ts").default
|
|
13
18
|
: NativeModules.RNWalletConnectModule;
|
|
14
19
|
|
|
20
|
+
const RNWalletConnectPay = isTurboModuleEnabled
|
|
21
|
+
? require("../module/NativeRNWalletConnectPay.ts").default
|
|
22
|
+
: NativeModules.RNWalletConnectPay;
|
|
23
|
+
|
|
15
24
|
function getExpoModule(): any | undefined {
|
|
16
25
|
try {
|
|
17
26
|
const ExpoApplication = require("expo-application");
|
|
@@ -45,3 +54,36 @@ export function getApplicationModule(): any | undefined {
|
|
|
45
54
|
}
|
|
46
55
|
}
|
|
47
56
|
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Get the WalletConnect Pay native module
|
|
60
|
+
* @returns The RNWalletConnectPay native module or undefined if not available
|
|
61
|
+
*/
|
|
62
|
+
export function getPayModule(): any | undefined {
|
|
63
|
+
try {
|
|
64
|
+
if (!RNWalletConnectPay) throw new Error();
|
|
65
|
+
return RNWalletConnectPay;
|
|
66
|
+
} catch {
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Check if the Pay native module is available
|
|
73
|
+
* @returns true if the Pay module is linked and available
|
|
74
|
+
*/
|
|
75
|
+
export function isPayModuleAvailable(): boolean {
|
|
76
|
+
return RNWalletConnectPay != null;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Get the WalletConnect Pay native module or throw if not available
|
|
81
|
+
* @throws Error if the Pay module is not linked
|
|
82
|
+
* @returns The RNWalletConnectPay native module
|
|
83
|
+
*/
|
|
84
|
+
export function requirePayModule(): any {
|
|
85
|
+
if (!RNWalletConnectPay) {
|
|
86
|
+
throw new Error(PAY_LINKING_ERROR);
|
|
87
|
+
}
|
|
88
|
+
return RNWalletConnectPay;
|
|
89
|
+
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@walletconnect/react-native-compat",
|
|
3
|
-
"description": "
|
|
4
|
-
"version": "2.23.1-canary
|
|
3
|
+
"description": "Native modules and shims for WalletConnect Protocol in React Native Projects",
|
|
4
|
+
"version": "2.23.1-canary.0",
|
|
5
5
|
"author": "WalletConnect, Inc. <walletconnect.com>",
|
|
6
6
|
"homepage": "https://github.com/walletconnect/walletconnect-monorepo/",
|
|
7
7
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
@@ -11,10 +11,14 @@ Pod::Spec.new do |s|
|
|
|
11
11
|
s.license = package["license"]
|
|
12
12
|
s.authors = package["author"]
|
|
13
13
|
|
|
14
|
-
s.platforms = { :ios => "
|
|
14
|
+
s.platforms = { :ios => "13.0", :visionos => "1.0" }
|
|
15
15
|
s.source = { :git => "https://github.com/walletconnect/walletconnect-monorepo.git", :tag => "#{s.version}" }
|
|
16
16
|
|
|
17
|
-
s.source_files = "ios/**/*.{h,m,mm}"
|
|
17
|
+
s.source_files = "ios/**/*.{h,m,mm,swift}"
|
|
18
|
+
s.swift_version = "5.0"
|
|
19
|
+
|
|
20
|
+
# Yttrium - WalletConnect Pay uniffi bindings
|
|
21
|
+
s.dependency "YttriumWrapper"
|
|
18
22
|
|
|
19
23
|
# Use install_modules_dependencies helper to install the dependencies if React Native version >=0.71.0.
|
|
20
24
|
# See https://github.com/facebook/react-native/blob/febf6b7f33fdb4904669f99d795eba4c0f95d7bf/scripts/cocoapods/new_architecture.rb#L79.
|