From 12ba581379a038c654bd748b3b3598bfcb5f9ca3 Mon Sep 17 00:00:00 2001 From: xsats Date: Thu, 15 Dec 2022 22:14:43 +0100 Subject: [PATCH 1/2] optional configurability of ChannelHandshakeLimits force_announced_channel_preference --- example/ios/Podfile.lock | 8 +- .../main/java/com/reactnativeldk/LdkModule.kt | 4 +- lib/ios/Ldk.m | 1 + lib/ios/Ldk.swift | 4 +- lib/package.json | 136 +++++++++--------- lib/src/ldk.ts | 3 + lib/src/lightning-manager.ts | 1 + lib/src/utils/types.ts | 1 + 8 files changed, 82 insertions(+), 76 deletions(-) diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock index 4217c53a..643f9567 100644 --- a/example/ios/Podfile.lock +++ b/example/ios/Podfile.lock @@ -302,7 +302,7 @@ PODS: - React-jsinspector (0.70.6) - React-logger (0.70.6): - glog - - react-native-ldk (0.0.76): + - react-native-ldk (0.0.77): - React - react-native-randombytes (3.6.1): - React-Core @@ -375,7 +375,7 @@ PODS: - React-jsi (= 0.70.6) - React-logger (= 0.70.6) - React-perflogger (= 0.70.6) - - RNCAsyncStorage (1.17.11): + - RNCAsyncStorage (1.17.10): - React-Core - RNCClipboard (1.11.1): - React-Core @@ -593,7 +593,7 @@ SPEC CHECKSUMS: React-jsiexecutor: b4a65947391c658450151275aa406f2b8263178f React-jsinspector: 60769e5a0a6d4b32294a2456077f59d0266f9a8b React-logger: 1623c216abaa88974afce404dc8f479406bbc3a0 - react-native-ldk: e042f888d7fa13cbbdde1a57fc0226867b7a15a1 + react-native-ldk: 0d9f1a1c82b55140746c17fdcd85af0507bf7c09 react-native-randombytes: 421f1c7d48c0af8dbcd471b0324393ebf8fe7846 react-native-tcp-socket: c1b7297619616b4c9caae6889bcb0aba78086989 React-perflogger: 8c79399b0500a30ee8152d0f9f11beae7fc36595 @@ -608,7 +608,7 @@ SPEC CHECKSUMS: React-RCTVibration: c75ceef7aa60a33b2d5731ebe5800ddde40cefc4 React-runtimeexecutor: 15437b576139df27635400de0599d9844f1ab817 ReactCommon: 349be31adeecffc7986a0de875d7fb0dcf4e251c - RNCAsyncStorage: 8616bd5a58af409453ea4e1b246521bb76578d60 + RNCAsyncStorage: 0c357f3156fcb16c8589ede67cc036330b6698ca RNCClipboard: 2834e1c4af68697089cdd455ee4a4cdd198fa7dd RNFS: 4ac0f0ea233904cb798630b3c077808c06931688 RNKeychain: ff836453cba46938e0e9e4c22e43d43fa2c90333 diff --git a/lib/android/src/main/java/com/reactnativeldk/LdkModule.kt b/lib/android/src/main/java/com/reactnativeldk/LdkModule.kt index b13b6f5d..15615f00 100644 --- a/lib/android/src/main/java/com/reactnativeldk/LdkModule.kt +++ b/lib/android/src/main/java/com/reactnativeldk/LdkModule.kt @@ -245,7 +245,7 @@ class LdkModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaMod } @ReactMethod - fun initConfig(acceptInboundChannels: Boolean, manuallyAcceptInboundChannels: Boolean, announcedChannels: Boolean, minChannelHandshakeDepth: Double, promise: Promise) { + fun initConfig(acceptInboundChannels: Boolean, manuallyAcceptInboundChannels: Boolean, announcedChannels: Boolean, minChannelHandshakeDepth: Double, forceAnnouncedChannelPreference: Boolean, promise: Promise) { if (userConfig !== null) { return handleReject(promise, LdkErrors.already_init) } @@ -263,7 +263,7 @@ class LdkModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaMod userConfig!!._channel_handshake_config = channelHandshakeConfig val channelHandshakeLimits = ChannelHandshakeLimits.with_default() - channelHandshakeLimits._force_announced_channel_preference = true + channelHandshakeLimits._force_announced_channel_preference = forceAnnouncedChannelPreference channelHandshakeLimits._max_minimum_depth = minChannelHandshakeDepth.toInt() userConfig!!._channel_handshake_limits = channelHandshakeLimits diff --git a/lib/ios/Ldk.m b/lib/ios/Ldk.m index 67021f51..06a76839 100644 --- a/lib/ios/Ldk.m +++ b/lib/ios/Ldk.m @@ -22,6 +22,7 @@ @interface RCT_EXTERN_MODULE(Ldk, NSObject) manuallyAcceptInboundChannels:(BOOL *)manuallyAcceptInboundChannels announcedChannels:(BOOL *)announcedChannels minChannelHandshakeDepth:(NSInteger *)minChannelHandshakeDepth + forceAnnouncedChannelPreference:(BOOL *)forceAnnouncedChannelPreference resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) RCT_EXTERN_METHOD(initNetworkGraph:(NSString *)genesisHash diff --git a/lib/ios/Ldk.swift b/lib/ios/Ldk.swift index bf5c77bc..37ddc7ae 100644 --- a/lib/ios/Ldk.swift +++ b/lib/ios/Ldk.swift @@ -218,7 +218,7 @@ class Ldk: NSObject { } @objc - func initConfig(_ acceptInboundChannels: Bool, manuallyAcceptInboundChannels: Bool, announcedChannels: Bool, minChannelHandshakeDepth: NSInteger, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) { + func initConfig(_ acceptInboundChannels: Bool, manuallyAcceptInboundChannels: Bool, announcedChannels: Bool, minChannelHandshakeDepth: NSInteger, forceAnnouncedChannelPreference: Bool, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) { guard userConfig == nil else { return handleReject(reject, .already_init) } @@ -236,7 +236,7 @@ class Ldk: NSObject { userConfig!.set_channel_handshake_config(val: channelHandshakeConfig) let channelHandshakeLimits = ChannelHandshakeLimits() - channelHandshakeLimits.set_force_announced_channel_preference(val: true) + channelHandshakeLimits.set_force_announced_channel_preference(val: forceAnnouncedChannelPreference) userConfig!.set_channel_handshake_limits(val: channelHandshakeLimits) return handleResolve(resolve, .config_init_success) diff --git a/lib/package.json b/lib/package.json index b1e3febc..e37393cc 100644 --- a/lib/package.json +++ b/lib/package.json @@ -1,70 +1,70 @@ { - "name": "@synonymdev/react-native-ldk", - "title": "React Native LDK", - "version": "0.0.76", - "description": "React Native wrapper for LDK", - "main": "./dist/index.js", - "types": "./dist/index.d.ts", - "files": [ - "README.md", - "android", - "ios", - "react-native-ldk.podspec", - "dist" - ], - "keywords": [ - "javascript", - "bitcoin", - "lightning", - "ldk" - ], - "scripts": { - "build": "rm -rf dist && mkdir dist/ && tsc -p ./src", - "watch": "yarn run build -- -w", - "lint:check": "eslint . --ext .js,.jsx,.ts,.tsx", - "lint:fix": "eslint . --fix --ext .js,.jsx,.ts,.tsx", - "prepublish": "yarn lint:fix && yarn run build && npm --no-git-tag-version version patch", - "dev:save-ios-updates": "cp ../example/node_modules/@synonymdev/react-native-ldk/ios/*.{m,swift,h} ./ios && cp ../example/node_modules/@synonymdev/react-native-ldk/ios/Classes/*.swift ./ios/Classes/", - "dev:save-android-updates": "cp ../example/node_modules/@synonymdev/react-native-ldk/android/src/main/java/com/reactnativeldk/*.kt ./android/src/main/java/com/reactnativeldk/ && cp ../example/node_modules/@synonymdev/react-native-ldk/android/src/main/java/com/reactnativeldk/classes/*.kt ./android/src/main/java/com/reactnativeldk/classes/ && cp ../example/node_modules/@synonymdev/react-native-ldk/android/build.gradle ./android/", - "dev:update-example-dist": "yarn build && cp -R dist ../example/node_modules/@synonymdev/react-native-ldk", - "dev:example": "yarn dev:save-ios-updates && yarn dev:save-android-updates && yarn dev:update-example-dist" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/synonymdev/react-native-ldk.git", - "baseUrl": "https://github.com/synonymdev/react-native-ldk" - }, - "author": "synonymdev", - "license": "MIT", - "licenseFilename": "LICENSE", - "peerDependencies": { - "react": "*", - "react-native": "*" - }, - "devDependencies": { - "@react-native-community/eslint-config": "^2.0.0", - "@types/node": "^17.0.31", - "@types/react-native": "0.62.13", - "@typescript-eslint/eslint-plugin": "^5.22.0", - "@typescript-eslint/parser": "^4.25.0", - "eslint": "^8.16.0", - "eslint-config-prettier": "^8.5.0", - "eslint-config-standard-with-typescript": "^21.0.1", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-no-null": "^1.0.2", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-prettier": "^4.0.0", - "eslint-plugin-promise": "^6.0.0", - "eslint-plugin-standard": "^5.0.0", - "prettier": "^2.6.2", - "react": "^16.9.0", - "typescript": "^4.2.4" - }, - "dependencies": { - "bitcoinjs-lib": "^6.0.2" - }, - "bugs": { - "url": "https://github.com/synonymdev/react-native-ldk/issues" - }, - "homepage": "https://github.com/synonymdev/react-native-ldk#readme" + "name": "@synonymdev/react-native-ldk", + "title": "React Native LDK", + "version": "0.0.77", + "description": "React Native wrapper for LDK", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "files": [ + "README.md", + "android", + "ios", + "react-native-ldk.podspec", + "dist" + ], + "keywords": [ + "javascript", + "bitcoin", + "lightning", + "ldk" + ], + "scripts": { + "build": "rm -rf dist && mkdir dist/ && tsc -p ./src", + "watch": "yarn run build -- -w", + "lint:check": "eslint . --ext .js,.jsx,.ts,.tsx", + "lint:fix": "eslint . --fix --ext .js,.jsx,.ts,.tsx", + "prepublish": "yarn lint:fix && yarn run build && npm --no-git-tag-version version patch", + "dev:save-ios-updates": "cp ../example/node_modules/@synonymdev/react-native-ldk/ios/*.{m,swift,h} ./ios && cp ../example/node_modules/@synonymdev/react-native-ldk/ios/Classes/*.swift ./ios/Classes/", + "dev:save-android-updates": "cp ../example/node_modules/@synonymdev/react-native-ldk/android/src/main/java/com/reactnativeldk/*.kt ./android/src/main/java/com/reactnativeldk/ && cp ../example/node_modules/@synonymdev/react-native-ldk/android/src/main/java/com/reactnativeldk/classes/*.kt ./android/src/main/java/com/reactnativeldk/classes/ && cp ../example/node_modules/@synonymdev/react-native-ldk/android/build.gradle ./android/", + "dev:update-example-dist": "yarn build && cp -R dist ../example/node_modules/@synonymdev/react-native-ldk", + "dev:example": "yarn dev:save-ios-updates && yarn dev:save-android-updates && yarn dev:update-example-dist" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/synonymdev/react-native-ldk.git", + "baseUrl": "https://github.com/synonymdev/react-native-ldk" + }, + "author": "synonymdev", + "license": "MIT", + "licenseFilename": "LICENSE", + "peerDependencies": { + "react": "*", + "react-native": "*" + }, + "devDependencies": { + "@react-native-community/eslint-config": "^2.0.0", + "@types/node": "^17.0.31", + "@types/react-native": "0.62.13", + "@typescript-eslint/eslint-plugin": "^5.22.0", + "@typescript-eslint/parser": "^4.25.0", + "eslint": "^8.16.0", + "eslint-config-prettier": "^8.5.0", + "eslint-config-standard-with-typescript": "^21.0.1", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-no-null": "^1.0.2", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-prettier": "^4.0.0", + "eslint-plugin-promise": "^6.0.0", + "eslint-plugin-standard": "^5.0.0", + "prettier": "^2.6.2", + "react": "^16.9.0", + "typescript": "^4.2.4" + }, + "dependencies": { + "bitcoinjs-lib": "^6.0.2" + }, + "bugs": { + "url": "https://github.com/synonymdev/react-native-ldk/issues" + }, + "homepage": "https://github.com/synonymdev/react-native-ldk#readme" } diff --git a/lib/src/ldk.ts b/lib/src/ldk.ts index a254ff4a..f51618e6 100644 --- a/lib/src/ldk.ts +++ b/lib/src/ldk.ts @@ -169,6 +169,7 @@ class LDK { * @param manuallyAcceptInboundChannels * @param announcedChannels * @param minChannelHandshakeDepth + * @param forceAnnouncedChannelPreference * @returns {Promise | Ok | Err>>} */ async initConfig(conf: TInitConfig): Promise> { @@ -177,6 +178,7 @@ class LDK { manuallyAcceptInboundChannels, announcedChannels, minChannelHandshakeDepth, + forceAnnouncedChannelPreference, } = conf; try { const res = await NativeLDK.initConfig( @@ -184,6 +186,7 @@ class LDK { manuallyAcceptInboundChannels, announcedChannels, minChannelHandshakeDepth, + forceAnnouncedChannelPreference, ); this.writeDebugToLog('initConfig', conf); return ok(res); diff --git a/lib/src/lightning-manager.ts b/lib/src/lightning-manager.ts index f0848dd6..c4c31d97 100644 --- a/lib/src/lightning-manager.ts +++ b/lib/src/lightning-manager.ts @@ -403,6 +403,7 @@ class LightningManager { manuallyAcceptInboundChannels: false, announcedChannels: false, minChannelHandshakeDepth: 1, //TODO Verify correct min + forceAnnouncedChannelPreference: false, }); if (confRes.isErr()) { return confRes; diff --git a/lib/src/utils/types.ts b/lib/src/utils/types.ts index 2446e162..ad60b3f8 100644 --- a/lib/src/utils/types.ts +++ b/lib/src/utils/types.ts @@ -292,6 +292,7 @@ export type TInitConfig = { manuallyAcceptInboundChannels: boolean; announcedChannels: boolean; minChannelHandshakeDepth: number; + forceAnnouncedChannelPreference: boolean | undefined; }; export enum ELdkLogLevels { From 2d95996b8c311c8ade5f927486d267d27bd72901 Mon Sep 17 00:00:00 2001 From: Ed Ball Date: Sat, 17 Dec 2022 02:25:34 +0100 Subject: [PATCH 2/2] fix types --- lib/src/utils/types.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/src/utils/types.ts b/lib/src/utils/types.ts index ad60b3f8..841f14cf 100644 --- a/lib/src/utils/types.ts +++ b/lib/src/utils/types.ts @@ -292,7 +292,7 @@ export type TInitConfig = { manuallyAcceptInboundChannels: boolean; announcedChannels: boolean; minChannelHandshakeDepth: number; - forceAnnouncedChannelPreference: boolean | undefined; + forceAnnouncedChannelPreference: boolean; }; export enum ELdkLogLevels {