@walletconnect/react-native-compat 2.10.4 → 2.10.5-rc-e12288e
Sign up to get free protection for your applications and to get access to all the features.
- package/android/build.gradle +120 -0
- package/android/gradle.properties +5 -0
- package/android/src/main/AndroidManifest.xml +3 -0
- package/android/src/main/AndroidManifestNew.xml +2 -0
- package/android/src/main/java/com/walletconnect/reactnativemodule/RNWalletConnectModuleModule.kt +55 -0
- package/android/src/main/java/com/walletconnect/reactnativemodule/RNWalletConnectModulePackage.kt +35 -0
- package/android/src/newarch/RNWalletConnectModuleSpec.kt +7 -0
- package/android/src/oldarch/RNWalletConnectModuleSpec.kt +17 -0
- package/index.js +20 -1
- package/ios/RNWalletConnectModule.h +12 -0
- package/ios/RNWalletConnectModule.mm +55 -0
- package/package.json +28 -2
- package/react-native-compat.podspec +41 -0
@@ -0,0 +1,120 @@
|
|
1
|
+
buildscript {
|
2
|
+
// Buildscript is evaluated before everything else so we can't use getExtOrDefault
|
3
|
+
def kotlin_version = rootProject.ext.has("kotlinVersion") ? rootProject.ext.get("kotlinVersion") : project.properties["RNWalletConnectModule_kotlinVersion"]
|
4
|
+
|
5
|
+
repositories {
|
6
|
+
google()
|
7
|
+
mavenCentral()
|
8
|
+
}
|
9
|
+
|
10
|
+
dependencies {
|
11
|
+
classpath "com.android.tools.build:gradle:7.2.1"
|
12
|
+
// noinspection DifferentKotlinGradleVersion
|
13
|
+
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
14
|
+
}
|
15
|
+
}
|
16
|
+
|
17
|
+
def isNewArchitectureEnabled() {
|
18
|
+
return rootProject.hasProperty("newArchEnabled") && rootProject.getProperty("newArchEnabled") == "true"
|
19
|
+
}
|
20
|
+
|
21
|
+
apply plugin: "com.android.library"
|
22
|
+
apply plugin: "kotlin-android"
|
23
|
+
|
24
|
+
if (isNewArchitectureEnabled()) {
|
25
|
+
apply plugin: "com.facebook.react"
|
26
|
+
}
|
27
|
+
|
28
|
+
def getExtOrDefault(name) {
|
29
|
+
return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties["RNWalletConnectModule_" + name]
|
30
|
+
}
|
31
|
+
|
32
|
+
def getExtOrIntegerDefault(name) {
|
33
|
+
return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties["RNWalletConnectModule_" + name]).toInteger()
|
34
|
+
}
|
35
|
+
|
36
|
+
def supportsNamespace() {
|
37
|
+
def parsed = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION.tokenize('.')
|
38
|
+
def major = parsed[0].toInteger()
|
39
|
+
def minor = parsed[1].toInteger()
|
40
|
+
|
41
|
+
// Namespace support was added in 7.3.0
|
42
|
+
return (major == 7 && minor >= 3) || major >= 8
|
43
|
+
}
|
44
|
+
|
45
|
+
android {
|
46
|
+
if (supportsNamespace()) {
|
47
|
+
namespace "com.walletconnect.reactnativemodule"
|
48
|
+
|
49
|
+
sourceSets {
|
50
|
+
main {
|
51
|
+
manifest.srcFile "src/main/AndroidManifestNew.xml"
|
52
|
+
}
|
53
|
+
}
|
54
|
+
}
|
55
|
+
|
56
|
+
compileSdkVersion getExtOrIntegerDefault("compileSdkVersion")
|
57
|
+
|
58
|
+
defaultConfig {
|
59
|
+
minSdkVersion getExtOrIntegerDefault("minSdkVersion")
|
60
|
+
targetSdkVersion getExtOrIntegerDefault("targetSdkVersion")
|
61
|
+
buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
|
62
|
+
|
63
|
+
}
|
64
|
+
|
65
|
+
buildFeatures {
|
66
|
+
buildConfig true
|
67
|
+
}
|
68
|
+
|
69
|
+
buildTypes {
|
70
|
+
release {
|
71
|
+
minifyEnabled false
|
72
|
+
}
|
73
|
+
}
|
74
|
+
|
75
|
+
lintOptions {
|
76
|
+
disable "GradleCompatible"
|
77
|
+
}
|
78
|
+
|
79
|
+
compileOptions {
|
80
|
+
sourceCompatibility JavaVersion.VERSION_1_8
|
81
|
+
targetCompatibility JavaVersion.VERSION_1_8
|
82
|
+
}
|
83
|
+
|
84
|
+
sourceSets {
|
85
|
+
main {
|
86
|
+
if (isNewArchitectureEnabled()) {
|
87
|
+
java.srcDirs += [
|
88
|
+
"src/newarch",
|
89
|
+
// This is needed to build Kotlin project with NewArch enabled
|
90
|
+
"${project.buildDir}/generated/source/codegen/java"
|
91
|
+
]
|
92
|
+
} else {
|
93
|
+
java.srcDirs += ["src/oldarch"]
|
94
|
+
}
|
95
|
+
}
|
96
|
+
}
|
97
|
+
}
|
98
|
+
|
99
|
+
repositories {
|
100
|
+
mavenCentral()
|
101
|
+
google()
|
102
|
+
}
|
103
|
+
|
104
|
+
def kotlin_version = getExtOrDefault("kotlinVersion")
|
105
|
+
|
106
|
+
dependencies {
|
107
|
+
// For < 0.71, this will be from the local maven repo
|
108
|
+
// For > 0.71, this will be replaced by `com.facebook.react:react-android:$version` by react gradle plugin
|
109
|
+
//noinspection GradleDynamicVersion
|
110
|
+
implementation "com.facebook.react:react-native:+"
|
111
|
+
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
112
|
+
}
|
113
|
+
|
114
|
+
if (isNewArchitectureEnabled()) {
|
115
|
+
react {
|
116
|
+
jsRootDir = file("../src/")
|
117
|
+
libraryName = "RNWalletConnectModule"
|
118
|
+
codegenJavaPackageName = "com.walletconnect.reactnativemodule"
|
119
|
+
}
|
120
|
+
}
|
package/android/src/main/java/com/walletconnect/reactnativemodule/RNWalletConnectModuleModule.kt
ADDED
@@ -0,0 +1,55 @@
|
|
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 android.content.pm.PackageManager
|
7
|
+
|
8
|
+
class RNWalletConnectModuleModule internal constructor(context: ReactApplicationContext) :
|
9
|
+
RNWalletConnectModuleSpec(context) {
|
10
|
+
|
11
|
+
override fun getName(): String {
|
12
|
+
return NAME
|
13
|
+
}
|
14
|
+
|
15
|
+
override protected fun getTypedExportedConstants(): Map<String, String> {
|
16
|
+
var appName: String
|
17
|
+
|
18
|
+
try {
|
19
|
+
appName = getReactApplicationContext().getApplicationInfo()
|
20
|
+
.loadLabel(getReactApplicationContext().getPackageManager()).toString()
|
21
|
+
} catch (e: Exception) {
|
22
|
+
appName = "unknown"
|
23
|
+
}
|
24
|
+
|
25
|
+
val constants: MutableMap<String, String> = HashMap()
|
26
|
+
constants.put("applicationId", getReactApplicationContext().getPackageName());
|
27
|
+
constants.put("applicationName", appName);
|
28
|
+
return constants
|
29
|
+
}
|
30
|
+
|
31
|
+
@ReactMethod
|
32
|
+
override fun isAppInstalled(packageName: String?, promise: Promise) {
|
33
|
+
try {
|
34
|
+
val installed = packageName?.let { isPackageInstalled(it) } ?: false
|
35
|
+
promise.resolve(installed)
|
36
|
+
} catch (e: Exception) {
|
37
|
+
promise.resolve(false)
|
38
|
+
}
|
39
|
+
}
|
40
|
+
|
41
|
+
private fun isPackageInstalled(packageName: String): Boolean {
|
42
|
+
val manager: PackageManager = getReactApplicationContext().getPackageManager()
|
43
|
+
return try {
|
44
|
+
@Suppress("DEPRECATION")
|
45
|
+
manager.getPackageInfo(packageName, 0)
|
46
|
+
true
|
47
|
+
} catch (e: PackageManager.NameNotFoundException) {
|
48
|
+
false
|
49
|
+
}
|
50
|
+
}
|
51
|
+
|
52
|
+
companion object {
|
53
|
+
const val NAME = "RNWalletConnectModule"
|
54
|
+
}
|
55
|
+
}
|
package/android/src/main/java/com/walletconnect/reactnativemodule/RNWalletConnectModulePackage.kt
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
package com.walletconnect.reactnativemodule
|
2
|
+
|
3
|
+
import com.facebook.react.TurboReactPackage
|
4
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
5
|
+
import com.facebook.react.bridge.NativeModule
|
6
|
+
import com.facebook.react.module.model.ReactModuleInfoProvider
|
7
|
+
import com.facebook.react.module.model.ReactModuleInfo
|
8
|
+
import java.util.HashMap
|
9
|
+
|
10
|
+
class RNWalletConnectModulePackage : TurboReactPackage() {
|
11
|
+
override fun getModule(name: String, reactContext: ReactApplicationContext): NativeModule? {
|
12
|
+
return if (name == RNWalletConnectModuleModule.NAME) {
|
13
|
+
RNWalletConnectModuleModule(reactContext)
|
14
|
+
} else {
|
15
|
+
null
|
16
|
+
}
|
17
|
+
}
|
18
|
+
|
19
|
+
override fun getReactModuleInfoProvider(): ReactModuleInfoProvider {
|
20
|
+
return ReactModuleInfoProvider {
|
21
|
+
val moduleInfos: MutableMap<String, ReactModuleInfo> = HashMap()
|
22
|
+
val isTurboModule: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED
|
23
|
+
moduleInfos[RNWalletConnectModuleModule.NAME] = ReactModuleInfo(
|
24
|
+
RNWalletConnectModuleModule.NAME,
|
25
|
+
RNWalletConnectModuleModule.NAME,
|
26
|
+
false, // canOverrideExistingModule
|
27
|
+
false, // needsEagerInit
|
28
|
+
true, // hasConstants
|
29
|
+
false, // isCxxModule
|
30
|
+
isTurboModule // isTurboModule
|
31
|
+
)
|
32
|
+
moduleInfos
|
33
|
+
}
|
34
|
+
}
|
35
|
+
}
|
@@ -0,0 +1,17 @@
|
|
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 RNWalletConnectModuleSpec internal constructor(context: ReactApplicationContext) :
|
8
|
+
ReactContextBaseJavaModule(context) {
|
9
|
+
|
10
|
+
abstract fun isAppInstalled(packageName: String?, promise: Promise);
|
11
|
+
protected abstract fun getTypedExportedConstants(): Map<String, String>
|
12
|
+
|
13
|
+
override fun getConstants(): Map<String, String> {
|
14
|
+
val constants: Map<String, String> = getTypedExportedConstants()
|
15
|
+
return constants
|
16
|
+
}
|
17
|
+
}
|
package/index.js
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
import { getApplicationModule } from "./module";
|
2
|
+
|
1
3
|
// Polyfill TextEncode / TextDecode
|
2
4
|
import "fast-text-encoding";
|
3
5
|
|
@@ -35,6 +37,23 @@ if (typeof global?.NetInfo === "undefined") {
|
|
35
37
|
global.NetInfo = require("@react-native-community/netinfo");
|
36
38
|
} catch (e) {
|
37
39
|
// eslint-disable-next-line no-console
|
38
|
-
console.error("react-native-compat: react-native
|
40
|
+
console.error("react-native-compat: @react-native-community/netinfo is not available");
|
41
|
+
}
|
42
|
+
}
|
43
|
+
|
44
|
+
if (typeof global?.Application === "undefined") {
|
45
|
+
try {
|
46
|
+
const module = getApplicationModule();
|
47
|
+
if (typeof module.getConstants === "function") {
|
48
|
+
global.Application = {
|
49
|
+
...module.getConstants(),
|
50
|
+
isAppInstalled: module.isAppInstalled,
|
51
|
+
};
|
52
|
+
} else {
|
53
|
+
global.Application = module;
|
54
|
+
}
|
55
|
+
} catch (e) {
|
56
|
+
// eslint-disable-next-line no-console
|
57
|
+
console.error("react-native-compat: Application module is not available");
|
39
58
|
}
|
40
59
|
}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
|
2
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
3
|
+
#import "RNRNWalletConnectModuleSpec.h"
|
4
|
+
|
5
|
+
@interface RNWalletConnectModule : NSObject <NativeRNWalletConnectModuleSpec>
|
6
|
+
#else
|
7
|
+
#import <React/RCTBridgeModule.h>
|
8
|
+
|
9
|
+
@interface RNWalletConnectModule : NSObject <RCTBridgeModule>
|
10
|
+
#endif
|
11
|
+
|
12
|
+
@end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
#import "RNWalletConnectModule.h"
|
2
|
+
|
3
|
+
@implementation RNWalletConnectModule
|
4
|
+
RCT_EXPORT_MODULE()
|
5
|
+
|
6
|
+
RCT_EXPORT_METHOD(isAppInstalled:(NSString *)bundleID
|
7
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
8
|
+
reject:(RCTPromiseRejectBlock)reject)
|
9
|
+
{
|
10
|
+
BOOL result = [self checkAppInstalled:bundleID];
|
11
|
+
resolve(@(result));
|
12
|
+
}
|
13
|
+
|
14
|
+
+ (BOOL)requiresMainQueueSetup
|
15
|
+
{
|
16
|
+
return NO;
|
17
|
+
}
|
18
|
+
|
19
|
+
- (NSDictionary *)constantsToExport
|
20
|
+
{
|
21
|
+
return @{
|
22
|
+
@"applicationName": [self getAppName],
|
23
|
+
@"applicationId": [self getBundleId],
|
24
|
+
};
|
25
|
+
}
|
26
|
+
|
27
|
+
- (NSString *) getAppName {
|
28
|
+
NSString *displayName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleDisplayName"];
|
29
|
+
NSString *bundleName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleName"];
|
30
|
+
return displayName ? displayName : bundleName;
|
31
|
+
}
|
32
|
+
|
33
|
+
- (NSString *) getBundleId {
|
34
|
+
return [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleIdentifier"];
|
35
|
+
}
|
36
|
+
|
37
|
+
- (BOOL)checkAppInstalled:(NSString *)bundleID {
|
38
|
+
NSURL *appURL = [NSURL URLWithString:[NSString stringWithFormat:@"%@://", bundleID]];
|
39
|
+
return [[UIApplication sharedApplication] canOpenURL:appURL];
|
40
|
+
}
|
41
|
+
|
42
|
+
- (NSDictionary *)getConstants {
|
43
|
+
return [self constantsToExport];
|
44
|
+
}
|
45
|
+
|
46
|
+
// Don't compile this code when we build for the old architecture.
|
47
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
48
|
+
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
|
49
|
+
(const facebook::react::ObjCTurboModule::InitParams &)params
|
50
|
+
{
|
51
|
+
return std::make_shared<facebook::react::NativeRNWalletConnectModuleSpecJSI>(params);
|
52
|
+
}
|
53
|
+
#endif
|
54
|
+
|
55
|
+
@end
|
package/package.json
CHANGED
@@ -1,13 +1,28 @@
|
|
1
1
|
{
|
2
2
|
"name": "@walletconnect/react-native-compat",
|
3
3
|
"description": "Shims for WalletConnect Protocol in React Native Projects",
|
4
|
-
"version": "2.10.
|
4
|
+
"version": "2.10.5-rc-e12288e",
|
5
5
|
"author": "WalletConnect, Inc. <walletconnect.com>",
|
6
6
|
"homepage": "https://github.com/walletconnect/walletconnect-monorepo/",
|
7
7
|
"license": "Apache-2.0",
|
8
8
|
"main": "index.js",
|
9
9
|
"files": [
|
10
|
-
"dist"
|
10
|
+
"dist",
|
11
|
+
"android",
|
12
|
+
"ios",
|
13
|
+
"modules",
|
14
|
+
"cpp",
|
15
|
+
"*.podspec",
|
16
|
+
"!ios/build",
|
17
|
+
"!android/build",
|
18
|
+
"!android/gradle",
|
19
|
+
"!android/gradlew",
|
20
|
+
"!android/gradlew.bat",
|
21
|
+
"!android/local.properties",
|
22
|
+
"!**/__tests__",
|
23
|
+
"!**/__fixtures__",
|
24
|
+
"!**/__mocks__",
|
25
|
+
"!**/.*"
|
11
26
|
],
|
12
27
|
"keywords": [
|
13
28
|
"wallet",
|
@@ -28,6 +43,17 @@
|
|
28
43
|
"peerDependencies": {
|
29
44
|
"@react-native-async-storage/async-storage": "*",
|
30
45
|
"@react-native-community/netinfo": "*",
|
46
|
+
"expo-application": "*",
|
31
47
|
"react-native-get-random-values": "*"
|
48
|
+
},
|
49
|
+
"peerDependenciesMeta": {
|
50
|
+
"expo-application": {
|
51
|
+
"optional": true
|
52
|
+
}
|
53
|
+
},
|
54
|
+
"codegenConfig": {
|
55
|
+
"name": "RNRNWalletConnectModuleSpec",
|
56
|
+
"type": "modules",
|
57
|
+
"jsSrcsDir": "."
|
32
58
|
}
|
33
59
|
}
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require "json"
|
2
|
+
|
3
|
+
package = JSON.parse(File.read(File.join(__dir__, "package.json")))
|
4
|
+
folly_compiler_flags = '-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32'
|
5
|
+
|
6
|
+
Pod::Spec.new do |s|
|
7
|
+
s.name = "react-native-compat"
|
8
|
+
s.version = package["version"]
|
9
|
+
s.summary = package["description"]
|
10
|
+
s.homepage = package["homepage"]
|
11
|
+
s.license = package["license"]
|
12
|
+
s.authors = package["author"]
|
13
|
+
|
14
|
+
s.platforms = { :ios => "11.0" }
|
15
|
+
s.source = { :git => "https://github.com/walletconnect/walletconnect-monorepo.git", :tag => "#{s.version}" }
|
16
|
+
|
17
|
+
s.source_files = "ios/**/*.{h,m,mm}"
|
18
|
+
|
19
|
+
# Use install_modules_dependencies helper to install the dependencies if React Native version >=0.71.0.
|
20
|
+
# See https://github.com/facebook/react-native/blob/febf6b7f33fdb4904669f99d795eba4c0f95d7bf/scripts/cocoapods/new_architecture.rb#L79.
|
21
|
+
if respond_to?(:install_modules_dependencies, true)
|
22
|
+
install_modules_dependencies(s)
|
23
|
+
else
|
24
|
+
s.dependency "React-Core"
|
25
|
+
|
26
|
+
# Don't install the dependencies when we run `pod install` in the old architecture.
|
27
|
+
if ENV['RCT_NEW_ARCH_ENABLED'] == '1' then
|
28
|
+
s.compiler_flags = folly_compiler_flags + " -DRCT_NEW_ARCH_ENABLED=1"
|
29
|
+
s.pod_target_xcconfig = {
|
30
|
+
"HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\"",
|
31
|
+
"OTHER_CPLUSPLUSFLAGS" => "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1",
|
32
|
+
"CLANG_CXX_LANGUAGE_STANDARD" => "c++17"
|
33
|
+
}
|
34
|
+
s.dependency "React-Codegen"
|
35
|
+
s.dependency "RCT-Folly"
|
36
|
+
s.dependency "RCTRequired"
|
37
|
+
s.dependency "RCTTypeSafety"
|
38
|
+
s.dependency "ReactCommon/turbomodule/core"
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|